diff options
author | Bernhard Reutner-Fischer | 2010-05-25 17:22:17 +0200 |
---|---|---|
committer | Bernhard Reutner-Fischer | 2010-05-25 18:48:33 +0200 |
commit | 1b3549875cf8beb236a17a456fc0cab66bfd1d72 (patch) | |
tree | 17d1bf545bec45a686014a22d02dbfe97bda4347 | |
parent | 96913f9254d288d61d893015f92e9f75b13f5d2a (diff) | |
download | busybox-1b3549875cf8beb236a17a456fc0cab66bfd1d72.zip busybox-1b3549875cf8beb236a17a456fc0cab66bfd1d72.tar.gz |
ip rule: unify parsing args
function old new delta
do_iprule 83 134 +51
print_rule 736 726 -10
iprule_list 73 - -73
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/1 up/down: 51/-83) Total: -32 bytes
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-rw-r--r-- | networking/libiproute/iprule.c | 36 |
1 files changed, 11 insertions, 25 deletions
diff --git a/networking/libiproute/iprule.c b/networking/libiproute/iprule.c index 535019d..835529e 100644 --- a/networking/libiproute/iprule.c +++ b/networking/libiproute/iprule.c @@ -69,11 +69,9 @@ static int FAST_FUNC print_rule(const struct sockaddr_nl *who UNUSED_PARAM, else if (r->rtm_family == AF_IPX) host_len = 80; */ - if (tb[RTA_PRIORITY]) - printf("%u:\t", *(unsigned*)RTA_DATA(tb[RTA_PRIORITY])); - else - printf("0:\t"); - + printf("%u:\t", tb[RTA_PRIORITY] ? + *(unsigned*)RTA_DATA(tb[RTA_PRIORITY]) + : 0); printf("from "); if (tb[RTA_SRC]) { if (r->rtm_src_len != host_len) { @@ -310,25 +308,13 @@ int do_iprule(char **argv) { static const char ip_rule_commands[] ALIGN1 = "add\0""delete\0""list\0""show\0"; - int cmd = 2; /* list */ - - if (!*argv) - return iprule_list(argv); - - cmd = index_in_substrings(ip_rule_commands, *argv); - switch (cmd) { - case 0: /* add */ - cmd = RTM_NEWRULE; - break; - case 1: /* delete */ - cmd = RTM_DELRULE; - break; - case 2: /* list */ - case 3: /* show */ - return iprule_list(argv+1); - break; - default: - bb_error_msg_and_die("unknown command %s", *argv); + if (*argv) { + smalluint cmd = index_in_substrings(ip_rule_commands, *argv); + if (cmd > 3) + bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name); + argv++; + if (cmd < 2) + return iprule_modify((cmd == 0) ? RTM_NEWRULE : RTM_DELRULE, argv); } - return iprule_modify(cmd, argv+1); + return iprule_list(argv); } |