diff options
-rw-r--r-- | networking/libiproute/ipaddress.c | 22 | ||||
-rw-r--r-- | networking/libiproute/iprule.c | 8 | ||||
-rw-r--r-- | networking/libiproute/iptunnel.c | 6 |
3 files changed, 16 insertions, 20 deletions
diff --git a/networking/libiproute/ipaddress.c b/networking/libiproute/ipaddress.c index 3fd3f4478..aa4779ad1 100644 --- a/networking/libiproute/ipaddress.c +++ b/networking/libiproute/ipaddress.c | |||
@@ -627,10 +627,12 @@ static int ipaddr_modify(int cmd, char **argv) | |||
627 | req.ifa.ifa_family = preferred_family; | 627 | req.ifa.ifa_family = preferred_family; |
628 | 628 | ||
629 | while (*argv) { | 629 | while (*argv) { |
630 | const smalluint arg = index_in_strings(option, *argv); | 630 | unsigned arg = index_in_strings(option, *argv); |
631 | if (arg <= 1) { /* peer, remote */ | 631 | /* if search fails, "local" is assumed */ |
632 | if ((int)arg >= 0) | ||
632 | NEXT_ARG(); | 633 | NEXT_ARG(); |
633 | 634 | ||
635 | if (arg <= 1) { /* peer, remote */ | ||
634 | if (peer_len) { | 636 | if (peer_len) { |
635 | duparg("peer", *argv); | 637 | duparg("peer", *argv); |
636 | } | 638 | } |
@@ -643,7 +645,6 @@ static int ipaddr_modify(int cmd, char **argv) | |||
643 | req.ifa.ifa_prefixlen = peer.bitlen; | 645 | req.ifa.ifa_prefixlen = peer.bitlen; |
644 | } else if (arg <= 3) { /* broadcast, brd */ | 646 | } else if (arg <= 3) { /* broadcast, brd */ |
645 | inet_prefix addr; | 647 | inet_prefix addr; |
646 | NEXT_ARG(); | ||
647 | if (brd_len) { | 648 | if (brd_len) { |
648 | duparg("broadcast", *argv); | 649 | duparg("broadcast", *argv); |
649 | } | 650 | } |
@@ -660,7 +661,6 @@ static int ipaddr_modify(int cmd, char **argv) | |||
660 | } | 661 | } |
661 | } else if (arg == 4) { /* anycast */ | 662 | } else if (arg == 4) { /* anycast */ |
662 | inet_prefix addr; | 663 | inet_prefix addr; |
663 | NEXT_ARG(); | ||
664 | if (any_len) { | 664 | if (any_len) { |
665 | duparg("anycast", *argv); | 665 | duparg("anycast", *argv); |
666 | } | 666 | } |
@@ -672,22 +672,18 @@ static int ipaddr_modify(int cmd, char **argv) | |||
672 | any_len = addr.bytelen; | 672 | any_len = addr.bytelen; |
673 | } else if (arg == 5) { /* scope */ | 673 | } else if (arg == 5) { /* scope */ |
674 | uint32_t scope = 0; | 674 | uint32_t scope = 0; |
675 | NEXT_ARG(); | ||
676 | if (rtnl_rtscope_a2n(&scope, *argv)) { | 675 | if (rtnl_rtscope_a2n(&scope, *argv)) { |
677 | invarg(*argv, "scope"); | 676 | invarg(*argv, "scope"); |
678 | } | 677 | } |
679 | req.ifa.ifa_scope = scope; | 678 | req.ifa.ifa_scope = scope; |
680 | scoped = 1; | 679 | scoped = 1; |
681 | } else if (arg == 6) { /* dev */ | 680 | } else if (arg == 6) { /* dev */ |
682 | NEXT_ARG(); | ||
683 | d = *argv; | 681 | d = *argv; |
684 | } else if (arg == 7) { /* label */ | 682 | } else if (arg == 7) { /* label */ |
685 | NEXT_ARG(); | ||
686 | l = *argv; | 683 | l = *argv; |
687 | addattr_l(&req.n, sizeof(req), IFA_LABEL, l, strlen(l) + 1); | 684 | addattr_l(&req.n, sizeof(req), IFA_LABEL, l, strlen(l) + 1); |
688 | } else { | 685 | } else { |
689 | if (arg == 8) /* local */ | 686 | /* local (specified or assumed) */ |
690 | NEXT_ARG(); | ||
691 | if (local_len) { | 687 | if (local_len) { |
692 | duparg2("local", *argv); | 688 | duparg2("local", *argv); |
693 | } | 689 | } |
@@ -724,7 +720,7 @@ static int ipaddr_modify(int cmd, char **argv) | |||
724 | } | 720 | } |
725 | brd = peer; | 721 | brd = peer; |
726 | if (brd.bitlen <= 30) { | 722 | if (brd.bitlen <= 30) { |
727 | for (i=31; i>=brd.bitlen; i--) { | 723 | for (i = 31; i >= brd.bitlen; i--) { |
728 | if (brd_len == -1) | 724 | if (brd_len == -1) |
729 | brd.data[0] |= htonl(1<<(31-i)); | 725 | brd.data[0] |= htonl(1<<(31-i)); |
730 | else | 726 | else |
@@ -754,11 +750,11 @@ int FAST_FUNC do_ipaddr(char **argv) | |||
754 | { | 750 | { |
755 | static const char commands[] ALIGN1 = | 751 | static const char commands[] ALIGN1 = |
756 | "add\0""delete\0""list\0""show\0""lst\0""flush\0"; | 752 | "add\0""delete\0""list\0""show\0""lst\0""flush\0"; |
757 | smalluint cmd = 2; | 753 | int cmd = 2; |
758 | if (*argv) { | 754 | if (*argv) { |
759 | cmd = index_in_substrings(commands, *argv); | 755 | cmd = index_in_substrings(commands, *argv); |
760 | if (cmd > 5) | 756 | if (cmd < 0) |
761 | bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name); | 757 | invarg(*argv, applet_name); |
762 | argv++; | 758 | argv++; |
763 | if (cmd <= 1) | 759 | if (cmd <= 1) |
764 | return ipaddr_modify((cmd == 0) ? RTM_NEWADDR : RTM_DELADDR, argv); | 760 | return ipaddr_modify((cmd == 0) ? RTM_NEWADDR : RTM_DELADDR, argv); |
diff --git a/networking/libiproute/iprule.c b/networking/libiproute/iprule.c index 241a6bf9d..8dbe6bd92 100644 --- a/networking/libiproute/iprule.c +++ b/networking/libiproute/iprule.c | |||
@@ -215,7 +215,7 @@ static int iprule_modify(int cmd, char **argv) | |||
215 | while (*argv) { | 215 | while (*argv) { |
216 | key = index_in_substrings(keywords, *argv) + 1; | 216 | key = index_in_substrings(keywords, *argv) + 1; |
217 | if (key == 0) /* no match found in keywords array, bail out. */ | 217 | if (key == 0) /* no match found in keywords array, bail out. */ |
218 | bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name); | 218 | invarg(*argv, applet_name); |
219 | if (key == ARG_from) { | 219 | if (key == ARG_from) { |
220 | inet_prefix dst; | 220 | inet_prefix dst; |
221 | NEXT_ARG(); | 221 | NEXT_ARG(); |
@@ -308,9 +308,9 @@ int FAST_FUNC do_iprule(char **argv) | |||
308 | static const char ip_rule_commands[] ALIGN1 = | 308 | static const char ip_rule_commands[] ALIGN1 = |
309 | "add\0""delete\0""list\0""show\0"; | 309 | "add\0""delete\0""list\0""show\0"; |
310 | if (*argv) { | 310 | if (*argv) { |
311 | smalluint cmd = index_in_substrings(ip_rule_commands, *argv); | 311 | int cmd = index_in_substrings(ip_rule_commands, *argv); |
312 | if (cmd > 3) | 312 | if (cmd < 0) |
313 | bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name); | 313 | invarg(*argv, applet_name); |
314 | argv++; | 314 | argv++; |
315 | if (cmd < 2) | 315 | if (cmd < 2) |
316 | return iprule_modify((cmd == 0) ? RTM_NEWRULE : RTM_DELRULE, argv); | 316 | return iprule_modify((cmd == 0) ? RTM_NEWRULE : RTM_DELRULE, argv); |
diff --git a/networking/libiproute/iptunnel.c b/networking/libiproute/iptunnel.c index 2b651b926..b54c3c53f 100644 --- a/networking/libiproute/iptunnel.c +++ b/networking/libiproute/iptunnel.c | |||
@@ -561,9 +561,9 @@ int FAST_FUNC do_iptunnel(char **argv) | |||
561 | enum { ARG_add = 0, ARG_change, ARG_del, ARG_show, ARG_list, ARG_lst }; | 561 | enum { ARG_add = 0, ARG_change, ARG_del, ARG_show, ARG_list, ARG_lst }; |
562 | 562 | ||
563 | if (*argv) { | 563 | if (*argv) { |
564 | smalluint key = index_in_substrings(keywords, *argv); | 564 | int key = index_in_substrings(keywords, *argv); |
565 | if (key > 5) | 565 | if (key < 0) |
566 | bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name); | 566 | invarg(*argv, applet_name); |
567 | argv++; | 567 | argv++; |
568 | if (key == ARG_add) | 568 | if (key == ARG_add) |
569 | return do_add(SIOCADDTUNNEL, argv); | 569 | return do_add(SIOCADDTUNNEL, argv); |