diff options
author | Glenn L McGrath <bug1@ihug.co.nz> | 2002-12-01 23:04:06 +0000 |
---|---|---|
committer | Glenn L McGrath <bug1@ihug.co.nz> | 2002-12-01 23:04:06 +0000 |
commit | f112daa232122dd114933d04a9e415cfc61f1717 (patch) | |
tree | 1e52823545fb3e20f89205fd6224017e19586c72 /networking/ip.c | |
parent | f3faf41334fab96d20854c2b4c1acab022c98028 (diff) | |
download | busybox-w32-f112daa232122dd114933d04a9e415cfc61f1717.tar.gz busybox-w32-f112daa232122dd114933d04a9e415cfc61f1717.tar.bz2 busybox-w32-f112daa232122dd114933d04a9e415cfc61f1717.zip |
Enable ip commands to be compiled seperate from ip, modifed patch from Bastian Blank
Diffstat (limited to 'networking/ip.c')
-rw-r--r-- | networking/ip.c | 55 |
1 files changed, 33 insertions, 22 deletions
diff --git a/networking/ip.c b/networking/ip.c index f045f5f78..e7cab74c9 100644 --- a/networking/ip.c +++ b/networking/ip.c | |||
@@ -28,30 +28,30 @@ | |||
28 | 28 | ||
29 | #include "busybox.h" | 29 | #include "busybox.h" |
30 | 30 | ||
31 | #if 0 | ||
31 | int preferred_family = AF_UNSPEC; | 32 | int preferred_family = AF_UNSPEC; |
32 | int oneline = 0; | 33 | int oneline = 0; |
33 | char * _SL_ = NULL; | 34 | char * _SL_ = NULL; |
34 | 35 | ||
35 | int ip_main(int argc, char **argv) | 36 | void ip_parse_common_args(int *argcp, char ***argvp) |
36 | { | 37 | { |
37 | char *basename; | 38 | int argc = *argcp; |
39 | char **argv = *argvp; | ||
38 | 40 | ||
39 | basename = strrchr(argv[0], '/'); | ||
40 | if (basename == NULL) | ||
41 | basename = argv[0]; | ||
42 | else | ||
43 | basename++; | ||
44 | |||
45 | while (argc > 1) { | 41 | while (argc > 1) { |
46 | char *opt = argv[1]; | 42 | char *opt = argv[1]; |
43 | |||
47 | if (strcmp(opt,"--") == 0) { | 44 | if (strcmp(opt,"--") == 0) { |
48 | argc--; argv++; | 45 | argc--; argv++; |
49 | break; | 46 | break; |
50 | } | 47 | } |
48 | |||
51 | if (opt[0] != '-') | 49 | if (opt[0] != '-') |
52 | break; | 50 | break; |
51 | |||
53 | if (opt[1] == '-') | 52 | if (opt[1] == '-') |
54 | opt++; | 53 | opt++; |
54 | |||
55 | if (matches(opt, "-family") == 0) { | 55 | if (matches(opt, "-family") == 0) { |
56 | argc--; | 56 | argc--; |
57 | argv++; | 57 | argv++; |
@@ -72,33 +72,44 @@ int ip_main(int argc, char **argv) | |||
72 | } else if (matches(opt, "-oneline") == 0) { | 72 | } else if (matches(opt, "-oneline") == 0) { |
73 | ++oneline; | 73 | ++oneline; |
74 | } else { | 74 | } else { |
75 | fprintf(stderr, "Option \"%s\" is unknown, try \"ip -help\".\n", opt); | 75 | show_usage(); |
76 | exit(-1); | ||
77 | } | 76 | } |
78 | argc--; argv++; | 77 | argc--; argv++; |
79 | } | 78 | } |
80 | |||
81 | _SL_ = oneline ? "\\" : "\n" ; | 79 | _SL_ = oneline ? "\\" : "\n" ; |
80 | } | ||
81 | #endif | ||
82 | |||
83 | int ip_main(int argc, char **argv) | ||
84 | { | ||
85 | int ret = EXIT_FAILURE; | ||
86 | |||
87 | ip_parse_common_args(&argc, &argv); | ||
82 | 88 | ||
83 | if (argc > 1) { | 89 | if (argc > 1) { |
84 | #ifdef CONFIG_FEATURE_IP_ADDRESS | 90 | #ifdef CONFIG_FEATURE_IP_ADDRESS |
85 | if (matches(argv[1], "address") == 0) | 91 | if (matches(argv[1], "address") == 0) { |
86 | return do_ipaddr(argc-2, argv+2); | 92 | ret = do_ipaddr(argc-2, argv+2); |
93 | } | ||
87 | #endif | 94 | #endif |
88 | #ifdef CONFIG_FEATURE_IP_ROUTE | 95 | #ifdef CONFIG_FEATURE_IP_ROUTE |
89 | if (matches(argv[1], "route") == 0) | 96 | else if (matches(argv[1], "route") == 0) { |
90 | return do_iproute(argc-2, argv+2); | 97 | ret = do_iproute(argc-2, argv+2); |
98 | } | ||
91 | #endif | 99 | #endif |
92 | #ifdef CONFIG_FEATURE_IP_LINK | 100 | #ifdef CONFIG_FEATURE_IP_LINK |
93 | if (matches(argv[1], "link") == 0) | 101 | else if (matches(argv[1], "link") == 0) { |
94 | return do_iplink(argc-2, argv+2); | 102 | ret = do_iplink(argc-2, argv+2); |
103 | } | ||
95 | #endif | 104 | #endif |
96 | #ifdef CONFIG_FEATURE_IP_TUNNEL | 105 | #ifdef CONFIG_FEATURE_IP_TUNNEL |
97 | if (matches(argv[1], "tunnel") == 0 || | 106 | else if (matches(argv[1], "tunnel") == 0 || strcmp(argv[1], "tunl") == 0) { |
98 | strcmp(argv[1], "tunl") == 0) | 107 | ret = do_iptunnel(argc-2, argv+2); |
99 | return do_iptunnel(argc-2, argv+2); | 108 | } |
100 | #endif | 109 | #endif |
101 | fprintf(stderr, "Object \"%s\" is unknown, try \"ip help\".\n", argv[1]); | ||
102 | exit(-1); | ||
103 | } | 110 | } |
111 | if (ret) { | ||
112 | show_usage(); | ||
113 | } | ||
114 | return(EXIT_SUCCESS); | ||
104 | } | 115 | } |