summaryrefslogtreecommitdiff
path: root/networking/libiproute/iplink.c
diff options
context:
space:
mode:
Diffstat (limited to 'networking/libiproute/iplink.c')
-rw-r--r--networking/libiproute/iplink.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/networking/libiproute/iplink.c b/networking/libiproute/iplink.c
index 3d3ea2a23..69ce84e49 100644
--- a/networking/libiproute/iplink.c
+++ b/networking/libiproute/iplink.c
@@ -171,16 +171,15 @@ static int do_set(int argc, char **argv)
171 struct ifreq ifr0, ifr1; 171 struct ifreq ifr0, ifr1;
172 char *newname = NULL; 172 char *newname = NULL;
173 int htype, halen; 173 int htype, halen;
174 static const char * const keywords[] = { 174 static const char keywords[] =
175 "up", "down", "name", "mtu", "multicast", "arp", "addr", "dev", 175 "up\0""down\0""name\0""mtu\0""multicast\0""arp\0""addr\0""dev\0"
176 "on", "off", NULL 176 "on\0""off\0";
177 };
178 enum { ARG_up = 1, ARG_down, ARG_name, ARG_mtu, ARG_multicast, ARG_arp, 177 enum { ARG_up = 1, ARG_down, ARG_name, ARG_mtu, ARG_multicast, ARG_arp,
179 ARG_addr, ARG_dev, PARM_on, PARM_off }; 178 ARG_addr, ARG_dev, PARM_on, PARM_off };
180 smalluint key; 179 smalluint key;
181 180
182 while (argc > 0) { 181 while (argc > 0) {
183 key = index_in_str_array(keywords, *argv) + 1; 182 key = index_in_strings(keywords, *argv) + 1;
184 if (key == ARG_up) { 183 if (key == ARG_up) {
185 mask |= IFF_UP; 184 mask |= IFF_UP;
186 flags |= IFF_UP; 185 flags |= IFF_UP;
@@ -199,7 +198,7 @@ static int do_set(int argc, char **argv)
199 } else if (key == ARG_multicast) { 198 } else if (key == ARG_multicast) {
200 NEXT_ARG(); 199 NEXT_ARG();
201 mask |= IFF_MULTICAST; 200 mask |= IFF_MULTICAST;
202 key = index_in_str_array(keywords, *argv) + 1; 201 key = index_in_strings(keywords, *argv) + 1;
203 if (key == PARM_on) { 202 if (key == PARM_on) {
204 flags |= IFF_MULTICAST; 203 flags |= IFF_MULTICAST;
205 } else if (key == PARM_off) { 204 } else if (key == PARM_off) {
@@ -209,7 +208,7 @@ static int do_set(int argc, char **argv)
209 } else if (key == ARG_arp) { 208 } else if (key == ARG_arp) {
210 NEXT_ARG(); 209 NEXT_ARG();
211 mask |= IFF_NOARP; 210 mask |= IFF_NOARP;
212 key = index_in_str_array(keywords, *argv) + 1; 211 key = index_in_strings(keywords, *argv) + 1;
213 if (key == PARM_on) { 212 if (key == PARM_on) {
214 flags &= ~IFF_NOARP; 213 flags &= ~IFF_NOARP;
215 } else if (key == PARM_off) { 214 } else if (key == PARM_off) {
@@ -276,13 +275,12 @@ static int ipaddr_list_link(int argc, char **argv)
276/* Return value becomes exitcode. It's okay to not return at all */ 275/* Return value becomes exitcode. It's okay to not return at all */
277int do_iplink(int argc, char **argv) 276int do_iplink(int argc, char **argv)
278{ 277{
279 static const char * const keywords[] = { 278 static const char keywords[] =
280 "set", "show", "lst", "list", NULL 279 "set\0""show\0""lst\0""list\0";
281 };
282 smalluint key; 280 smalluint key;
283 if (argc <= 0) 281 if (argc <= 0)
284 return ipaddr_list_link(0, NULL); 282 return ipaddr_list_link(0, NULL);
285 key = index_in_substr_array(keywords, *argv) + 1; 283 key = index_in_substrings(keywords, *argv) + 1;
286 if (key == 0) 284 if (key == 0)
287 bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name); 285 bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name);
288 argc--; argv++; 286 argc--; argv++;