libiproute: audit callgraph, shortcut error paths into die() functions.
[oweals/busybox.git] / networking / ip.c
1 /* vi: set sw=4 ts=4: */
2 /*
3  * ip.c         "ip" utility frontend.
4  *
5  * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
6  *
7  * Authors:     Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
8  *
9  *
10  * Changes:
11  *
12  * Rani Assaf <rani@magic.metawire.com> 980929: resolve addresses
13  */
14
15 #include "busybox.h"
16
17 #include "libiproute/utils.h"
18 #include "libiproute/ip_common.h"
19
20 int ip_main(int argc, char **argv);
21 int ip_main(int argc, char **argv)
22 {
23         ip_parse_common_args(&argc, &argv);
24
25         if (argc <= 1)
26                 bb_show_usage();
27
28         if (ENABLE_FEATURE_IP_ADDRESS && matches(argv[1], "address") == 0) {
29                 return do_ipaddr(argc-2, argv+2);
30         }
31         if (ENABLE_FEATURE_IP_ROUTE && matches(argv[1], "route") == 0) {
32                 return do_iproute(argc-2, argv+2);
33         }
34         if (ENABLE_FEATURE_IP_LINK && matches(argv[1], "link") == 0) {
35                 return do_iplink(argc-2, argv+2);
36         }
37         if (ENABLE_FEATURE_IP_TUNNEL
38          && (matches(argv[1], "tunnel") == 0 || strcmp(argv[1], "tunl") == 0)
39         ) {
40                 return do_iptunnel(argc-2, argv+2);
41         }
42         if (ENABLE_FEATURE_IP_RULE && matches(argv[1], "rule") == 0) {
43                 return do_iprule(argc-2, argv+2);
44         }
45
46         bb_show_usage();
47 }