7a7f55c4697645a954e2b99c6c90b396fe2b3f6d
[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 {
22         int ret = EXIT_FAILURE;
23
24         ip_parse_common_args(&argc, &argv);
25
26         if (argc > 1) {
27                 if (ENABLE_FEATURE_IP_ADDRESS && matches(argv[1], "address") == 0) {
28                         ret = do_ipaddr(argc-2, argv+2);
29                 }
30                 if (ENABLE_FEATURE_IP_ROUTE && matches(argv[1], "route") == 0) {
31                         ret = do_iproute(argc-2, argv+2);
32                 }
33                 if (ENABLE_FEATURE_IP_LINK && matches(argv[1], "link") == 0) {
34                         ret = do_iplink(argc-2, argv+2);
35                 }
36                 if (ENABLE_FEATURE_IP_TUNNEL
37                  && (matches(argv[1], "tunnel") == 0 || strcmp(argv[1], "tunl") == 0)
38                 ) {
39                         ret = do_iptunnel(argc-2, argv+2);
40                 }
41                 if (ENABLE_FEATURE_IP_RULE && matches(argv[1], "rule") == 0) {
42                         ret = do_iprule(argc-2, argv+2);
43                 }
44         }
45         if (ret) {
46                 bb_show_usage();
47         }
48         return EXIT_SUCCESS;
49 }