diff options
Diffstat (limited to 'networking/libiproute/iplink.c')
-rw-r--r-- | networking/libiproute/iplink.c | 20 |
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 */ |
277 | int do_iplink(int argc, char **argv) | 276 | int 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++; |