diff options
author | Denis Vlasenko | 2007-11-18 22:56:25 +0000 |
---|---|---|
committer | Denis Vlasenko | 2007-11-18 22:56:25 +0000 |
commit | ed6a49c657ae204f6ba8ad84315fa04c09297a7c (patch) | |
tree | 5f47e19e16582dfcdefb99bc1edea693e86c258d /networking/libiproute/iproute.c | |
parent | 2a587df80a148e497d10344c79f2b94d3bce6aaf (diff) | |
download | busybox-ed6a49c657ae204f6ba8ad84315fa04c09297a7c.zip busybox-ed6a49c657ae204f6ba8ad84315fa04c09297a7c.tar.gz |
ip: stop propagating argc; optimize ip_parse_common_args
function old new delta
find_pair 167 187 +20
static.families - 17 +17
die_must_be_on_off - 11 +11
...
on_off 33 22 -11
do_ipaddr 103 90 -13
do_iptunnel 1001 986 -15
iproute_list_or_flush 1237 1217 -20
static.ip_common_commands 43 22 -21
do_iproute 2217 2193 -24
parse_args 1444 1414 -30
ip_do 47 16 -31
do_iprule 994 963 -31
ip_main 153 113 -40
ipaddr_modify 1357 1305 -52
ipaddr_list_or_flush 2543 2490 -53
ip_parse_common_args 294 159 -135
------------------------------------------------------------------------------
(add/remove: 4/1 grow/shrink: 4/24 up/down: 85/-563) Total: -478 bytes
text data bss dec hex filename
775561 966 9236 785763 bfd63 busybox_old
775073 962 9236 785271 bfb77 busybox_unstripped
Diffstat (limited to 'networking/libiproute/iproute.c')
-rw-r--r-- | networking/libiproute/iproute.c | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/networking/libiproute/iproute.c b/networking/libiproute/iproute.c index 9181111..ec09526 100644 --- a/networking/libiproute/iproute.c +++ b/networking/libiproute/iproute.c @@ -292,7 +292,7 @@ static int print_route(struct sockaddr_nl *who ATTRIBUTE_UNUSED, } /* Return value becomes exitcode. It's okay to not return at all */ -static int iproute_modify(int cmd, unsigned flags, int argc, char **argv) +static int iproute_modify(int cmd, unsigned flags, char **argv) { static const char keywords[] ALIGN1 = "src\0""via\0""mtu\0""lock\0""protocol\0"USE_FEATURE_IP_RULE("table\0") @@ -344,7 +344,7 @@ USE_FEATURE_IP_RULE(ARG_table,) mxrta->rta_type = RTA_METRICS; mxrta->rta_len = RTA_LENGTH(0); - while (argc > 0) { + while (*argv) { arg = index_in_substrings(keywords, *argv); if (arg == ARG_src) { inet_prefix addr; @@ -417,7 +417,7 @@ USE_FEATURE_IP_RULE(ARG_table,) addattr_l(&req.n, sizeof(req), RTA_DST, &dst.data, dst.bytelen); } } - argc--; argv++; + argv++; } xrtnl_open(&rth); @@ -511,7 +511,7 @@ static void iproute_reset_filter(void) } /* Return value becomes exitcode. It's okay to not return at all */ -static int iproute_list_or_flush(int argc, char **argv, int flush) +static int iproute_list_or_flush(char **argv, int flush) { int do_ipv6 = preferred_family; struct rtnl_handle rth; @@ -534,10 +534,10 @@ static int iproute_list_or_flush(int argc, char **argv, int flush) iproute_reset_filter(); filter.tb = RT_TABLE_MAIN; - if (flush && argc <= 0) + if (flush && !*argv) bb_error_msg_and_die(bb_msg_requires_arg, "\"ip route flush\""); - while (argc > 0) { + while (*argv) { arg = index_in_substrings(keywords, *argv); if (arg == ARG_proto) { uint32_t prot = 0; @@ -602,7 +602,6 @@ static int iproute_list_or_flush(int argc, char **argv, int flush) filter.rdst = filter.mdst; } } - argc--; argv++; } @@ -667,7 +666,7 @@ static int iproute_list_or_flush(int argc, char **argv, int flush) /* Return value becomes exitcode. It's okay to not return at all */ -static int iproute_get(int argc, char **argv) +static int iproute_get(char **argv) { struct rtnl_handle rth; struct { @@ -698,7 +697,7 @@ static int iproute_get(int argc, char **argv) req.r.rtm_dst_len = 0; req.r.rtm_tos = 0; - while (argc > 0) { + while (*argv) { switch (index_in_strings(options, *argv)) { case 0: /* from */ { @@ -744,7 +743,7 @@ static int iproute_get(int argc, char **argv) } req.r.rtm_dst_len = addr.bitlen; } - argc--; argv++; + argv++; } } @@ -822,7 +821,7 @@ static int iproute_get(int argc, char **argv) } /* Return value becomes exitcode. It's okay to not return at all */ -int do_iproute(int argc, char **argv) +int do_iproute(char **argv) { static const char ip_route_commands[] ALIGN1 = /*0-3*/ "add\0""append\0""change\0""chg\0" @@ -852,10 +851,10 @@ int do_iproute(int argc, char **argv) cmd = RTM_DELROUTE; break; case 5: /* get */ - return iproute_get(argc-1, argv+1); + return iproute_get(argv+1); case 6: /* list */ case 7: /* show */ - return iproute_list_or_flush(argc-1, argv+1, 0); + return iproute_list_or_flush(argv+1, 0); case 8: /* prepend */ flags = NLM_F_CREATE; break; @@ -866,10 +865,10 @@ int do_iproute(int argc, char **argv) flags = NLM_F_EXCL; break; case 11: /* flush */ - return iproute_list_or_flush(argc-1, argv+1, 1); + return iproute_list_or_flush(argv+1, 1); default: bb_error_msg_and_die("unknown command %s", *argv); } - return iproute_modify(cmd, flags, argc-1, argv+1); + return iproute_modify(cmd, flags, argv+1); } |