aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2010-05-25 17:22:17 +0200
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2010-05-25 18:48:33 +0200
commit1b3549875cf8beb236a17a456fc0cab66bfd1d72 (patch)
tree17d1bf545bec45a686014a22d02dbfe97bda4347
parent96913f9254d288d61d893015f92e9f75b13f5d2a (diff)
downloadbusybox-w32-1b3549875cf8beb236a17a456fc0cab66bfd1d72.tar.gz
busybox-w32-1b3549875cf8beb236a17a456fc0cab66bfd1d72.tar.bz2
busybox-w32-1b3549875cf8beb236a17a456fc0cab66bfd1d72.zip
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.c36
1 files changed, 11 insertions, 25 deletions
diff --git a/networking/libiproute/iprule.c b/networking/libiproute/iprule.c
index 535019d87..835529ec4 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,
69 else if (r->rtm_family == AF_IPX) 69 else if (r->rtm_family == AF_IPX)
70 host_len = 80; 70 host_len = 80;
71*/ 71*/
72 if (tb[RTA_PRIORITY]) 72 printf("%u:\t", tb[RTA_PRIORITY] ?
73 printf("%u:\t", *(unsigned*)RTA_DATA(tb[RTA_PRIORITY])); 73 *(unsigned*)RTA_DATA(tb[RTA_PRIORITY])
74 else 74 : 0);
75 printf("0:\t");
76
77 printf("from "); 75 printf("from ");
78 if (tb[RTA_SRC]) { 76 if (tb[RTA_SRC]) {
79 if (r->rtm_src_len != host_len) { 77 if (r->rtm_src_len != host_len) {
@@ -310,25 +308,13 @@ int do_iprule(char **argv)
310{ 308{
311 static const char ip_rule_commands[] ALIGN1 = 309 static const char ip_rule_commands[] ALIGN1 =
312 "add\0""delete\0""list\0""show\0"; 310 "add\0""delete\0""list\0""show\0";
313 int cmd = 2; /* list */ 311 if (*argv) {
314 312 smalluint cmd = index_in_substrings(ip_rule_commands, *argv);
315 if (!*argv) 313 if (cmd > 3)
316 return iprule_list(argv); 314 bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name);
317 315 argv++;
318 cmd = index_in_substrings(ip_rule_commands, *argv); 316 if (cmd < 2)
319 switch (cmd) { 317 return iprule_modify((cmd == 0) ? RTM_NEWRULE : RTM_DELRULE, argv);
320 case 0: /* add */
321 cmd = RTM_NEWRULE;
322 break;
323 case 1: /* delete */
324 cmd = RTM_DELRULE;
325 break;
326 case 2: /* list */
327 case 3: /* show */
328 return iprule_list(argv+1);
329 break;
330 default:
331 bb_error_msg_and_die("unknown command %s", *argv);
332 } 318 }
333 return iprule_modify(cmd, argv+1); 319 return iprule_list(argv);
334} 320}