static void usage(void)
{
- fprintf(stderr, "Usage: ip rule { add | del } SELECTOR ACTION\n");
- fprintf(stderr, " ip rule { flush | save | restore }\n");
- fprintf(stderr, " ip rule [ list [ SELECTOR ]]\n");
- fprintf(stderr, "SELECTOR := [ not ] [ from PREFIX ] [ to PREFIX ] [ tos TOS ] [ fwmark FWMARK[/MASK] ]\n");
- fprintf(stderr, " [ iif STRING ] [ oif STRING ] [ pref NUMBER ] [ l3mdev ]\n");
- fprintf(stderr, "ACTION := [ table TABLE_ID ]\n");
- fprintf(stderr, " [ nat ADDRESS ]\n");
- fprintf(stderr, " [ realms [SRCREALM/]DSTREALM ]\n");
- fprintf(stderr, " [ goto NUMBER ]\n");
- fprintf(stderr, " SUPPRESSOR\n");
- fprintf(stderr, "SUPPRESSOR := [ suppress_prefixlength NUMBER ]\n");
- fprintf(stderr, " [ suppress_ifgroup DEVGROUP ]\n");
- fprintf(stderr, "TABLE_ID := [ local | main | default | NUMBER ]\n");
+ fprintf(stderr,
+ "Usage: ip rule { add | del } SELECTOR ACTION\n"
+ " ip rule { flush | save | restore }\n"
+ " ip rule [ list [ SELECTOR ]]\n"
+ "SELECTOR := [ not ] [ from PREFIX ] [ to PREFIX ] [ tos TOS ] [ fwmark FWMARK[/MASK] ]\n"
+ " [ iif STRING ] [ oif STRING ] [ pref NUMBER ] [ l3mdev ]\n"
+ "ACTION := [ table TABLE_ID ]\n"
+ " [ nat ADDRESS ]\n"
+ " [ realms [SRCREALM/]DSTREALM ]\n"
+ " [ goto NUMBER ]\n"
+ " SUPPRESSOR\n"
+ "SUPPRESSOR := [ suppress_prefixlength NUMBER ]\n"
+ " [ suppress_ifgroup DEVGROUP ]\n"
+ "TABLE_ID := [ local | main | default | NUMBER ]\n");
exit(-1);
}
if (filter.fwmark) {
__u32 mark = 0;
+
if (tb[FRA_FWMARK])
mark = rta_getattr_u32(tb[FRA_FWMARK]);
if (filter.fwmark ^ mark)
}
if (filter.fwmask) {
__u32 mask = 0;
+
if (tb[FRA_FWMASK])
mask = rta_getattr_u32(tb[FRA_FWMASK]);
if (filter.fwmask ^ mask)
host_len = af_bit_len(r->rtm_family);
- if(!filter_nlmsg(n, tb, host_len))
+ if (!filter_nlmsg(n, tb, host_len))
return 0;
if (n->nlmsg_type == RTM_DELRULE)
matches(*argv, "order") == 0 ||
matches(*argv, "priority") == 0) {
__u32 pref;
+
NEXT_ARG();
if (get_u32(&pref, *argv, 0))
invarg("preference value is invalid\n", *argv);
filter.not = 1;
} else if (strcmp(*argv, "tos") == 0) {
__u32 tos;
+
NEXT_ARG();
if (rtnl_dsfield_a2n(&tos, *argv))
invarg("TOS value is invalid\n", *argv);
} else if (strcmp(*argv, "fwmark") == 0) {
char *slash;
__u32 fwmark, fwmask;
+
NEXT_ARG();
slash = strchr(*argv, '/');
if (slash != NULL)
} else if (strcmp(*argv, "l3mdev") == 0) {
filter.l3mdev = 1;
} else if (matches(*argv, "lookup") == 0 ||
- matches(*argv, "table") == 0 ) {
+ matches(*argv, "table") == 0) {
__u32 tid;
+
NEXT_ARG();
if (rtnl_rttable_a2n(&tid, *argv))
invarg("table id value is invalid\n", *argv);