diff options
author | Glenn L McGrath <bug1@ihug.co.nz> | 2002-11-28 11:17:19 +0000 |
---|---|---|
committer | Glenn L McGrath <bug1@ihug.co.nz> | 2002-11-28 11:17:19 +0000 |
commit | 1652855fbc830f41c7ee56ece1a30b328c4fb395 (patch) | |
tree | f07b98042dd8602c7f3ee119fc5ebecbc1052dcb | |
parent | eaed78a91f20cddf2efa480ba71b2389b8ce6aab (diff) | |
download | busybox-w32-1652855fbc830f41c7ee56ece1a30b328c4fb395.tar.gz busybox-w32-1652855fbc830f41c7ee56ece1a30b328c4fb395.tar.bz2 busybox-w32-1652855fbc830f41c7ee56ece1a30b328c4fb395.zip |
Style, error_msg
-rw-r--r-- | networking/libiproute/iproute.c | 163 |
1 files changed, 103 insertions, 60 deletions
diff --git a/networking/libiproute/iproute.c b/networking/libiproute/iproute.c index fcfb409f2..e251b941e 100644 --- a/networking/libiproute/iproute.c +++ b/networking/libiproute/iproute.c | |||
@@ -90,48 +90,59 @@ int print_route(struct sockaddr_nl *who, struct nlmsghdr *n, void *arg) | |||
90 | if (r->rtm_family == AF_INET6) { | 90 | if (r->rtm_family == AF_INET6) { |
91 | if (filter.tb) { | 91 | if (filter.tb) { |
92 | if (filter.tb < 0) { | 92 | if (filter.tb < 0) { |
93 | if (!(r->rtm_flags&RTM_F_CLONED)) | 93 | if (!(r->rtm_flags&RTM_F_CLONED)) { |
94 | return 0; | 94 | return 0; |
95 | } | ||
95 | } else { | 96 | } else { |
96 | if (r->rtm_flags&RTM_F_CLONED) | 97 | if (r->rtm_flags&RTM_F_CLONED) { |
97 | return 0; | 98 | return 0; |
99 | } | ||
98 | if (filter.tb == RT_TABLE_LOCAL) { | 100 | if (filter.tb == RT_TABLE_LOCAL) { |
99 | if (r->rtm_type != RTN_LOCAL) | 101 | if (r->rtm_type != RTN_LOCAL) { |
100 | return 0; | 102 | return 0; |
103 | } | ||
101 | } else if (filter.tb == RT_TABLE_MAIN) { | 104 | } else if (filter.tb == RT_TABLE_MAIN) { |
102 | if (r->rtm_type == RTN_LOCAL) | 105 | if (r->rtm_type == RTN_LOCAL) { |
103 | return 0; | 106 | return 0; |
107 | } | ||
104 | } else { | 108 | } else { |
105 | return 0; | 109 | return 0; |
106 | } | 110 | } |
107 | } | 111 | } |
108 | } | 112 | } |
109 | } else { | 113 | } else { |
110 | if (filter.tb > 0 && filter.tb != r->rtm_table) | 114 | if (filter.tb > 0 && filter.tb != r->rtm_table) { |
111 | return 0; | 115 | return 0; |
116 | } | ||
112 | } | 117 | } |
113 | if (filter.rdst.family && | 118 | if (filter.rdst.family && |
114 | (r->rtm_family != filter.rdst.family || filter.rdst.bitlen > r->rtm_dst_len)) | 119 | (r->rtm_family != filter.rdst.family || filter.rdst.bitlen > r->rtm_dst_len)) { |
115 | return 0; | 120 | return 0; |
121 | } | ||
116 | if (filter.mdst.family && | 122 | if (filter.mdst.family && |
117 | (r->rtm_family != filter.mdst.family || | 123 | (r->rtm_family != filter.mdst.family || |
118 | (filter.mdst.bitlen >= 0 && filter.mdst.bitlen < r->rtm_dst_len))) | 124 | (filter.mdst.bitlen >= 0 && filter.mdst.bitlen < r->rtm_dst_len))) { |
119 | return 0; | 125 | return 0; |
126 | } | ||
120 | if (filter.rsrc.family && | 127 | if (filter.rsrc.family && |
121 | (r->rtm_family != filter.rsrc.family || filter.rsrc.bitlen > r->rtm_src_len)) | 128 | (r->rtm_family != filter.rsrc.family || filter.rsrc.bitlen > r->rtm_src_len)) { |
122 | return 0; | 129 | return 0; |
130 | } | ||
123 | if (filter.msrc.family && | 131 | if (filter.msrc.family && |
124 | (r->rtm_family != filter.msrc.family || | 132 | (r->rtm_family != filter.msrc.family || |
125 | (filter.msrc.bitlen >= 0 && filter.msrc.bitlen < r->rtm_src_len))) | 133 | (filter.msrc.bitlen >= 0 && filter.msrc.bitlen < r->rtm_src_len))) { |
126 | return 0; | 134 | return 0; |
135 | } | ||
127 | 136 | ||
128 | memset(tb, 0, sizeof(tb)); | 137 | memset(tb, 0, sizeof(tb)); |
129 | parse_rtattr(tb, RTA_MAX, RTM_RTA(r), len); | 138 | parse_rtattr(tb, RTA_MAX, RTM_RTA(r), len); |
130 | 139 | ||
131 | if (n->nlmsg_type == RTM_DELROUTE) | 140 | if (n->nlmsg_type == RTM_DELROUTE) { |
132 | fprintf(fp, "Deleted "); | 141 | fprintf(fp, "Deleted "); |
133 | if (r->rtm_type != RTN_UNICAST && !filter.type) | 142 | } |
143 | if (r->rtm_type != RTN_UNICAST && !filter.type) { | ||
134 | fprintf(fp, "%s ", rtnl_rtntype_n2a(r->rtm_type, b1, sizeof(b1))); | 144 | fprintf(fp, "%s ", rtnl_rtntype_n2a(r->rtm_type, b1, sizeof(b1))); |
145 | } | ||
135 | 146 | ||
136 | if (tb[RTA_DST]) { | 147 | if (tb[RTA_DST]) { |
137 | if (r->rtm_dst_len != host_len) { | 148 | if (r->rtm_dst_len != host_len) { |
@@ -178,8 +189,9 @@ int print_route(struct sockaddr_nl *who, struct nlmsghdr *n, void *arg) | |||
178 | RTA_DATA(tb[RTA_GATEWAY]), | 189 | RTA_DATA(tb[RTA_GATEWAY]), |
179 | abuf, sizeof(abuf))); | 190 | abuf, sizeof(abuf))); |
180 | } | 191 | } |
181 | if (tb[RTA_OIF] && filter.oifmask != -1) | 192 | if (tb[RTA_OIF] && filter.oifmask != -1) { |
182 | fprintf(fp, "dev %s ", ll_index_to_name(*(int*)RTA_DATA(tb[RTA_OIF]))); | 193 | fprintf(fp, "dev %s ", ll_index_to_name(*(int*)RTA_DATA(tb[RTA_OIF]))); |
194 | } | ||
183 | 195 | ||
184 | if (tb[RTA_PREFSRC] && filter.rprefsrc.bitlen != host_len) { | 196 | if (tb[RTA_PREFSRC] && filter.rprefsrc.bitlen != host_len) { |
185 | /* Do not use format_host(). It is our local addr | 197 | /* Do not use format_host(). It is our local addr |
@@ -191,22 +203,28 @@ int print_route(struct sockaddr_nl *who, struct nlmsghdr *n, void *arg) | |||
191 | RTA_DATA(tb[RTA_PREFSRC]), | 203 | RTA_DATA(tb[RTA_PREFSRC]), |
192 | abuf, sizeof(abuf))); | 204 | abuf, sizeof(abuf))); |
193 | } | 205 | } |
194 | if (tb[RTA_PRIORITY]) | 206 | if (tb[RTA_PRIORITY]) { |
195 | fprintf(fp, " metric %d ", *(__u32*)RTA_DATA(tb[RTA_PRIORITY])); | 207 | fprintf(fp, " metric %d ", *(__u32*)RTA_DATA(tb[RTA_PRIORITY])); |
208 | } | ||
196 | if (r->rtm_family == AF_INET6) { | 209 | if (r->rtm_family == AF_INET6) { |
197 | struct rta_cacheinfo *ci = NULL; | 210 | struct rta_cacheinfo *ci = NULL; |
198 | if (tb[RTA_CACHEINFO]) | 211 | if (tb[RTA_CACHEINFO]) { |
199 | ci = RTA_DATA(tb[RTA_CACHEINFO]); | 212 | ci = RTA_DATA(tb[RTA_CACHEINFO]); |
213 | } | ||
200 | if ((r->rtm_flags & RTM_F_CLONED) || (ci && ci->rta_expires)) { | 214 | if ((r->rtm_flags & RTM_F_CLONED) || (ci && ci->rta_expires)) { |
201 | static int hz; | 215 | static int hz; |
202 | if (!hz) | 216 | if (!hz) { |
203 | hz = get_hz(); | 217 | hz = get_hz(); |
204 | if (r->rtm_flags & RTM_F_CLONED) | 218 | } |
219 | if (r->rtm_flags & RTM_F_CLONED) { | ||
205 | fprintf(fp, "%s cache ", _SL_); | 220 | fprintf(fp, "%s cache ", _SL_); |
206 | if (ci->rta_expires) | 221 | } |
222 | if (ci->rta_expires) { | ||
207 | fprintf(fp, " expires %dsec", ci->rta_expires/hz); | 223 | fprintf(fp, " expires %dsec", ci->rta_expires/hz); |
208 | if (ci->rta_error != 0) | 224 | } |
225 | if (ci->rta_error != 0) { | ||
209 | fprintf(fp, " error %d", ci->rta_error); | 226 | fprintf(fp, " error %d", ci->rta_error); |
227 | } | ||
210 | } else if (ci) { | 228 | } else if (ci) { |
211 | if (ci->rta_error != 0) | 229 | if (ci->rta_error != 0) |
212 | fprintf(fp, " error %d", ci->rta_error); | 230 | fprintf(fp, " error %d", ci->rta_error); |
@@ -260,16 +278,18 @@ int iproute_modify(int cmd, unsigned flags, int argc, char **argv) | |||
260 | inet_prefix addr; | 278 | inet_prefix addr; |
261 | NEXT_ARG(); | 279 | NEXT_ARG(); |
262 | get_addr(&addr, *argv, req.r.rtm_family); | 280 | get_addr(&addr, *argv, req.r.rtm_family); |
263 | if (req.r.rtm_family == AF_UNSPEC) | 281 | if (req.r.rtm_family == AF_UNSPEC) { |
264 | req.r.rtm_family = addr.family; | 282 | req.r.rtm_family = addr.family; |
283 | } | ||
265 | addattr_l(&req.n, sizeof(req), RTA_PREFSRC, &addr.data, addr.bytelen); | 284 | addattr_l(&req.n, sizeof(req), RTA_PREFSRC, &addr.data, addr.bytelen); |
266 | } else if (strcmp(*argv, "via") == 0) { | 285 | } else if (strcmp(*argv, "via") == 0) { |
267 | inet_prefix addr; | 286 | inet_prefix addr; |
268 | gw_ok = 1; | 287 | gw_ok = 1; |
269 | NEXT_ARG(); | 288 | NEXT_ARG(); |
270 | get_addr(&addr, *argv, req.r.rtm_family); | 289 | get_addr(&addr, *argv, req.r.rtm_family); |
271 | if (req.r.rtm_family == AF_UNSPEC) | 290 | if (req.r.rtm_family == AF_UNSPEC) { |
272 | req.r.rtm_family = addr.family; | 291 | req.r.rtm_family = addr.family; |
292 | } | ||
273 | addattr_l(&req.n, sizeof(req), RTA_GATEWAY, &addr.data, addr.bytelen); | 293 | addattr_l(&req.n, sizeof(req), RTA_GATEWAY, &addr.data, addr.bytelen); |
274 | } else if (strcmp(*argv, "mtu") == 0) { | 294 | } else if (strcmp(*argv, "mtu") == 0) { |
275 | unsigned mtu; | 295 | unsigned mtu; |
@@ -278,8 +298,9 @@ int iproute_modify(int cmd, unsigned flags, int argc, char **argv) | |||
278 | mxlock |= (1<<RTAX_MTU); | 298 | mxlock |= (1<<RTAX_MTU); |
279 | NEXT_ARG(); | 299 | NEXT_ARG(); |
280 | } | 300 | } |
281 | if (get_unsigned(&mtu, *argv, 0)) | 301 | if (get_unsigned(&mtu, *argv, 0)) { |
282 | invarg("\"mtu\" value is invalid\n", *argv); | 302 | invarg("\"mtu\" value is invalid\n", *argv); |
303 | } | ||
283 | rta_addattr32(mxrta, sizeof(mxbuf), RTAX_MTU, mtu); | 304 | rta_addattr32(mxrta, sizeof(mxbuf), RTAX_MTU, mtu); |
284 | } else if (matches(*argv, "protocol") == 0) { | 305 | } else if (matches(*argv, "protocol") == 0) { |
285 | int prot; | 306 | int prot; |
@@ -306,21 +327,25 @@ int iproute_modify(int cmd, unsigned flags, int argc, char **argv) | |||
306 | type_ok = 1; | 327 | type_ok = 1; |
307 | } | 328 | } |
308 | 329 | ||
309 | if (dst_ok) | 330 | if (dst_ok) { |
310 | duparg2("to", *argv); | 331 | duparg2("to", *argv); |
332 | } | ||
311 | get_prefix(&dst, *argv, req.r.rtm_family); | 333 | get_prefix(&dst, *argv, req.r.rtm_family); |
312 | if (req.r.rtm_family == AF_UNSPEC) | 334 | if (req.r.rtm_family == AF_UNSPEC) { |
313 | req.r.rtm_family = dst.family; | 335 | req.r.rtm_family = dst.family; |
336 | } | ||
314 | req.r.rtm_dst_len = dst.bitlen; | 337 | req.r.rtm_dst_len = dst.bitlen; |
315 | dst_ok = 1; | 338 | dst_ok = 1; |
316 | if (dst.bytelen) | 339 | if (dst.bytelen) { |
317 | addattr_l(&req.n, sizeof(req), RTA_DST, &dst.data, dst.bytelen); | 340 | addattr_l(&req.n, sizeof(req), RTA_DST, &dst.data, dst.bytelen); |
341 | } | ||
318 | } | 342 | } |
319 | argc--; argv++; | 343 | argc--; argv++; |
320 | } | 344 | } |
321 | 345 | ||
322 | if (rtnl_open(&rth, 0) < 0) | 346 | if (rtnl_open(&rth, 0) < 0) { |
323 | exit(1); | 347 | exit(1); |
348 | } | ||
324 | 349 | ||
325 | if (d) { | 350 | if (d) { |
326 | int idx; | 351 | int idx; |
@@ -337,16 +362,19 @@ int iproute_modify(int cmd, unsigned flags, int argc, char **argv) | |||
337 | } | 362 | } |
338 | 363 | ||
339 | if (mxrta->rta_len > RTA_LENGTH(0)) { | 364 | if (mxrta->rta_len > RTA_LENGTH(0)) { |
340 | if (mxlock) | 365 | if (mxlock) { |
341 | rta_addattr32(mxrta, sizeof(mxbuf), RTAX_LOCK, mxlock); | 366 | rta_addattr32(mxrta, sizeof(mxbuf), RTAX_LOCK, mxlock); |
367 | } | ||
342 | addattr_l(&req.n, sizeof(req), RTA_METRICS, RTA_DATA(mxrta), RTA_PAYLOAD(mxrta)); | 368 | addattr_l(&req.n, sizeof(req), RTA_METRICS, RTA_DATA(mxrta), RTA_PAYLOAD(mxrta)); |
343 | } | 369 | } |
344 | 370 | ||
345 | if (req.r.rtm_family == AF_UNSPEC) | 371 | if (req.r.rtm_family == AF_UNSPEC) { |
346 | req.r.rtm_family = AF_INET; | 372 | req.r.rtm_family = AF_INET; |
373 | } | ||
347 | 374 | ||
348 | if (rtnl_talk(&rth, &req.n, 0, 0, NULL, NULL, NULL) < 0) | 375 | if (rtnl_talk(&rth, &req.n, 0, 0, NULL, NULL, NULL) < 0) { |
349 | exit(2); | 376 | exit(2); |
377 | } | ||
350 | 378 | ||
351 | return 0; | 379 | return 0; |
352 | } | 380 | } |
@@ -390,8 +418,9 @@ static int iproute_list(int argc, char **argv) | |||
390 | NEXT_ARG(); | 418 | NEXT_ARG(); |
391 | filter.protocolmask = -1; | 419 | filter.protocolmask = -1; |
392 | if (rtnl_rtprot_a2n(&prot, *argv)) { | 420 | if (rtnl_rtprot_a2n(&prot, *argv)) { |
393 | if (strcmp(*argv, "all") != 0) | 421 | if (strcmp(*argv, "all") != 0) { |
394 | invarg("invalid \"protocol\"\n", *argv); | 422 | invarg("invalid \"protocol\"\n", *argv); |
423 | } | ||
395 | prot = 0; | 424 | prot = 0; |
396 | filter.protocolmask = 0; | 425 | filter.protocolmask = 0; |
397 | } | 426 | } |
@@ -439,11 +468,13 @@ static int iproute_list(int argc, char **argv) | |||
439 | argc--; argv++; | 468 | argc--; argv++; |
440 | } | 469 | } |
441 | 470 | ||
442 | if (do_ipv6 == AF_UNSPEC && filter.tb) | 471 | if (do_ipv6 == AF_UNSPEC && filter.tb) { |
443 | do_ipv6 = AF_INET; | 472 | do_ipv6 = AF_INET; |
473 | } | ||
444 | 474 | ||
445 | if (rtnl_open(&rth, 0) < 0) | 475 | if (rtnl_open(&rth, 0) < 0) { |
446 | exit(1); | 476 | exit(1); |
477 | } | ||
447 | 478 | ||
448 | ll_init_map(&rth); | 479 | ll_init_map(&rth); |
449 | 480 | ||
@@ -552,8 +583,7 @@ int iproute_get(int argc, char **argv) | |||
552 | } | 583 | } |
553 | 584 | ||
554 | if (req.r.rtm_dst_len == 0) { | 585 | if (req.r.rtm_dst_len == 0) { |
555 | fprintf(stderr, "need at least destination address\n"); | 586 | error_msg_and_die("need at least destination address"); |
556 | exit(1); | ||
557 | } | 587 | } |
558 | 588 | ||
559 | if (rtnl_open(&rth, 0) < 0) | 589 | if (rtnl_open(&rth, 0) < 0) |
@@ -566,25 +596,27 @@ int iproute_get(int argc, char **argv) | |||
566 | 596 | ||
567 | if (idev) { | 597 | if (idev) { |
568 | if ((idx = ll_name_to_index(idev)) == 0) { | 598 | if ((idx = ll_name_to_index(idev)) == 0) { |
569 | fprintf(stderr, "Cannot find device \"%s\"\n", idev); | 599 | error_msg("Cannot find device \"%s\"", idev); |
570 | return -1; | 600 | return -1; |
571 | } | 601 | } |
572 | addattr32(&req.n, sizeof(req), RTA_IIF, idx); | 602 | addattr32(&req.n, sizeof(req), RTA_IIF, idx); |
573 | } | 603 | } |
574 | if (odev) { | 604 | if (odev) { |
575 | if ((idx = ll_name_to_index(odev)) == 0) { | 605 | if ((idx = ll_name_to_index(odev)) == 0) { |
576 | fprintf(stderr, "Cannot find device \"%s\"\n", odev); | 606 | error_msg("Cannot find device \"%s\"", odev); |
577 | return -1; | 607 | return -1; |
578 | } | 608 | } |
579 | addattr32(&req.n, sizeof(req), RTA_OIF, idx); | 609 | addattr32(&req.n, sizeof(req), RTA_OIF, idx); |
580 | } | 610 | } |
581 | } | 611 | } |
582 | 612 | ||
583 | if (req.r.rtm_family == AF_UNSPEC) | 613 | if (req.r.rtm_family == AF_UNSPEC) { |
584 | req.r.rtm_family = AF_INET; | 614 | req.r.rtm_family = AF_INET; |
615 | } | ||
585 | 616 | ||
586 | if (rtnl_talk(&rth, &req.n, 0, 0, &req.n, NULL, NULL) < 0) | 617 | if (rtnl_talk(&rth, &req.n, 0, 0, &req.n, NULL, NULL) < 0) { |
587 | exit(2); | 618 | exit(2); |
619 | } | ||
588 | 620 | ||
589 | if (connected && !from_ok) { | 621 | if (connected && !from_ok) { |
590 | struct rtmsg *r = NLMSG_DATA(&req.n); | 622 | struct rtmsg *r = NLMSG_DATA(&req.n); |
@@ -592,17 +624,16 @@ int iproute_get(int argc, char **argv) | |||
592 | struct rtattr * tb[RTA_MAX+1]; | 624 | struct rtattr * tb[RTA_MAX+1]; |
593 | 625 | ||
594 | if (print_route(NULL, &req.n, (void*)stdout) < 0) { | 626 | if (print_route(NULL, &req.n, (void*)stdout) < 0) { |
595 | fprintf(stderr, "An error :-)\n"); | 627 | error_msg_and_die("An error :-)"); |
596 | exit(1); | ||
597 | } | 628 | } |
598 | 629 | ||
599 | if (req.n.nlmsg_type != RTM_NEWROUTE) { | 630 | if (req.n.nlmsg_type != RTM_NEWROUTE) { |
600 | fprintf(stderr, "Not a route?\n"); | 631 | error_msg("Not a route?"); |
601 | return -1; | 632 | return -1; |
602 | } | 633 | } |
603 | len -= NLMSG_LENGTH(sizeof(*r)); | 634 | len -= NLMSG_LENGTH(sizeof(*r)); |
604 | if (len < 0) { | 635 | if (len < 0) { |
605 | fprintf(stderr, "Wrong len %d\n", len); | 636 | error_msg("Wrong len %d", len); |
606 | return -1; | 637 | return -1; |
607 | } | 638 | } |
608 | 639 | ||
@@ -613,25 +644,28 @@ int iproute_get(int argc, char **argv) | |||
613 | tb[RTA_PREFSRC]->rta_type = RTA_SRC; | 644 | tb[RTA_PREFSRC]->rta_type = RTA_SRC; |
614 | r->rtm_src_len = 8*RTA_PAYLOAD(tb[RTA_PREFSRC]); | 645 | r->rtm_src_len = 8*RTA_PAYLOAD(tb[RTA_PREFSRC]); |
615 | } else if (!tb[RTA_SRC]) { | 646 | } else if (!tb[RTA_SRC]) { |
616 | fprintf(stderr, "Failed to connect the route\n"); | 647 | error_msg("Failed to connect the route"); |
617 | return -1; | 648 | return -1; |
618 | } | 649 | } |
619 | if (!odev && tb[RTA_OIF]) | 650 | if (!odev && tb[RTA_OIF]) { |
620 | tb[RTA_OIF]->rta_type = 0; | 651 | tb[RTA_OIF]->rta_type = 0; |
621 | if (tb[RTA_GATEWAY]) | 652 | } |
653 | if (tb[RTA_GATEWAY]) { | ||
622 | tb[RTA_GATEWAY]->rta_type = 0; | 654 | tb[RTA_GATEWAY]->rta_type = 0; |
623 | if (!idev && tb[RTA_IIF]) | 655 | } |
656 | if (!idev && tb[RTA_IIF]) { | ||
624 | tb[RTA_IIF]->rta_type = 0; | 657 | tb[RTA_IIF]->rta_type = 0; |
658 | } | ||
625 | req.n.nlmsg_flags = NLM_F_REQUEST; | 659 | req.n.nlmsg_flags = NLM_F_REQUEST; |
626 | req.n.nlmsg_type = RTM_GETROUTE; | 660 | req.n.nlmsg_type = RTM_GETROUTE; |
627 | 661 | ||
628 | if (rtnl_talk(&rth, &req.n, 0, 0, &req.n, NULL, NULL) < 0) | 662 | if (rtnl_talk(&rth, &req.n, 0, 0, &req.n, NULL, NULL) < 0) { |
629 | exit(2); | 663 | exit(2); |
664 | } | ||
630 | } | 665 | } |
631 | 666 | ||
632 | if (print_route(NULL, &req.n, (void*)stdout) < 0) { | 667 | if (print_route(NULL, &req.n, (void*)stdout) < 0) { |
633 | fprintf(stderr, "An error :-)\n"); | 668 | error_msg_and_die("An error :-)"); |
634 | exit(1); | ||
635 | } | 669 | } |
636 | 670 | ||
637 | exit(0); | 671 | exit(0); |
@@ -646,36 +680,45 @@ void iproute_reset_filter() | |||
646 | 680 | ||
647 | int do_iproute(int argc, char **argv) | 681 | int do_iproute(int argc, char **argv) |
648 | { | 682 | { |
649 | if (argc < 1) | 683 | if (argc < 1) { |
650 | return iproute_list(0, NULL); | 684 | return iproute_list(0, NULL); |
685 | } | ||
651 | 686 | ||
652 | if (matches(*argv, "add") == 0) | 687 | if (matches(*argv, "add") == 0) { |
653 | return iproute_modify(RTM_NEWROUTE, NLM_F_CREATE|NLM_F_EXCL, | 688 | return iproute_modify(RTM_NEWROUTE, NLM_F_CREATE|NLM_F_EXCL, |
654 | argc-1, argv+1); | 689 | argc-1, argv+1); |
655 | if (matches(*argv, "change") == 0 || strcmp(*argv, "chg") == 0) | 690 | } |
691 | if (matches(*argv, "change") == 0 || strcmp(*argv, "chg") == 0) { | ||
656 | return iproute_modify(RTM_NEWROUTE, NLM_F_REPLACE, | 692 | return iproute_modify(RTM_NEWROUTE, NLM_F_REPLACE, |
657 | argc-1, argv+1); | 693 | argc-1, argv+1); |
658 | if (matches(*argv, "replace") == 0) | 694 | } |
695 | if (matches(*argv, "replace") == 0) { | ||
659 | return iproute_modify(RTM_NEWROUTE, NLM_F_CREATE|NLM_F_REPLACE, | 696 | return iproute_modify(RTM_NEWROUTE, NLM_F_CREATE|NLM_F_REPLACE, |
660 | argc-1, argv+1); | 697 | argc-1, argv+1); |
661 | if (matches(*argv, "prepend") == 0) | 698 | } |
699 | if (matches(*argv, "prepend") == 0) { | ||
662 | return iproute_modify(RTM_NEWROUTE, NLM_F_CREATE, | 700 | return iproute_modify(RTM_NEWROUTE, NLM_F_CREATE, |
663 | argc-1, argv+1); | 701 | argc-1, argv+1); |
664 | if (matches(*argv, "append") == 0) | 702 | } |
703 | if (matches(*argv, "append") == 0) { | ||
665 | return iproute_modify(RTM_NEWROUTE, NLM_F_CREATE|NLM_F_APPEND, | 704 | return iproute_modify(RTM_NEWROUTE, NLM_F_CREATE|NLM_F_APPEND, |
666 | argc-1, argv+1); | 705 | argc-1, argv+1); |
667 | if (matches(*argv, "test") == 0) | 706 | } |
707 | if (matches(*argv, "test") == 0) { | ||
668 | return iproute_modify(RTM_NEWROUTE, NLM_F_EXCL, | 708 | return iproute_modify(RTM_NEWROUTE, NLM_F_EXCL, |
669 | argc-1, argv+1); | 709 | argc-1, argv+1); |
670 | if (matches(*argv, "delete") == 0) | 710 | } |
711 | if (matches(*argv, "delete") == 0) { | ||
671 | return iproute_modify(RTM_DELROUTE, 0, | 712 | return iproute_modify(RTM_DELROUTE, 0, |
672 | argc-1, argv+1); | 713 | argc-1, argv+1); |
714 | } | ||
673 | if (matches(*argv, "list") == 0 || matches(*argv, "show") == 0 | 715 | if (matches(*argv, "list") == 0 || matches(*argv, "show") == 0 |
674 | || matches(*argv, "lst") == 0) | 716 | || matches(*argv, "lst") == 0) { |
675 | return iproute_list(argc-1, argv+1); | 717 | return iproute_list(argc-1, argv+1); |
676 | if (matches(*argv, "get") == 0) | 718 | } |
719 | if (matches(*argv, "get") == 0) { | ||
677 | return iproute_get(argc-1, argv+1); | 720 | return iproute_get(argc-1, argv+1); |
678 | fprintf(stderr, "Command \"%s\" is unknown, try \"ip route help\".\n", *argv); | 721 | } |
679 | exit(-1); | 722 | error_msg_and_die("Command \"%s\" is unknown, try \"ip route help\".", *argv); |
680 | } | 723 | } |
681 | 724 | ||