Contents of /trunk/mkinitrd-magellan/busybox/networking/ip.c
Parent Directory | Revision Log
Revision 1123 -
(show annotations)
(download)
Wed Aug 18 21:56:57 2010 UTC (14 years, 1 month ago) by niro
File MIME type: text/plain
File size: 2696 byte(s)
Wed Aug 18 21:56:57 2010 UTC (14 years, 1 month ago) by niro
File MIME type: text/plain
File size: 2696 byte(s)
-updated to busybox-1.17.1
1 | /* vi: set sw=4 ts=4: */ |
2 | /* |
3 | * "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 | * Changes: |
10 | * Rani Assaf <rani@magic.metawire.com> 980929: resolve addresses |
11 | * Bernhard Reutner-Fischer rewrote to use index_in_substr_array |
12 | */ |
13 | |
14 | #include "libbb.h" |
15 | |
16 | #include "libiproute/utils.h" |
17 | #include "libiproute/ip_common.h" |
18 | |
19 | #if ENABLE_FEATURE_IP_ADDRESS \ |
20 | || ENABLE_FEATURE_IP_ROUTE \ |
21 | || ENABLE_FEATURE_IP_LINK \ |
22 | || ENABLE_FEATURE_IP_TUNNEL \ |
23 | || ENABLE_FEATURE_IP_RULE |
24 | |
25 | static int ip_print_help(char **argv UNUSED_PARAM) |
26 | { |
27 | bb_show_usage(); |
28 | } |
29 | |
30 | typedef int (*ip_func_ptr_t)(char**); |
31 | |
32 | static int ip_do(ip_func_ptr_t ip_func, char **argv) |
33 | { |
34 | argv = ip_parse_common_args(argv + 1); |
35 | return ip_func(argv); |
36 | } |
37 | |
38 | #if ENABLE_FEATURE_IP_ADDRESS |
39 | int ipaddr_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
40 | int ipaddr_main(int argc UNUSED_PARAM, char **argv) |
41 | { |
42 | return ip_do(do_ipaddr, argv); |
43 | } |
44 | #endif |
45 | #if ENABLE_FEATURE_IP_LINK |
46 | int iplink_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
47 | int iplink_main(int argc UNUSED_PARAM, char **argv) |
48 | { |
49 | return ip_do(do_iplink, argv); |
50 | } |
51 | #endif |
52 | #if ENABLE_FEATURE_IP_ROUTE |
53 | int iproute_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
54 | int iproute_main(int argc UNUSED_PARAM, char **argv) |
55 | { |
56 | return ip_do(do_iproute, argv); |
57 | } |
58 | #endif |
59 | #if ENABLE_FEATURE_IP_RULE |
60 | int iprule_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
61 | int iprule_main(int argc UNUSED_PARAM, char **argv) |
62 | { |
63 | return ip_do(do_iprule, argv); |
64 | } |
65 | #endif |
66 | #if ENABLE_FEATURE_IP_TUNNEL |
67 | int iptunnel_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
68 | int iptunnel_main(int argc UNUSED_PARAM, char **argv) |
69 | { |
70 | return ip_do(do_iptunnel, argv); |
71 | } |
72 | #endif |
73 | |
74 | |
75 | int ip_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
76 | int ip_main(int argc UNUSED_PARAM, char **argv) |
77 | { |
78 | static const char keywords[] ALIGN1 = |
79 | IF_FEATURE_IP_ADDRESS("address\0") |
80 | IF_FEATURE_IP_ROUTE("route\0") |
81 | IF_FEATURE_IP_ROUTE("r\0") |
82 | IF_FEATURE_IP_LINK("link\0") |
83 | IF_FEATURE_IP_TUNNEL("tunnel\0") |
84 | IF_FEATURE_IP_TUNNEL("tunl\0") |
85 | IF_FEATURE_IP_RULE("rule\0") |
86 | ; |
87 | static const ip_func_ptr_t ip_func_ptrs[] = { |
88 | ip_print_help, |
89 | IF_FEATURE_IP_ADDRESS(do_ipaddr,) |
90 | IF_FEATURE_IP_ROUTE(do_iproute,) |
91 | IF_FEATURE_IP_ROUTE(do_iproute,) |
92 | IF_FEATURE_IP_LINK(do_iplink,) |
93 | IF_FEATURE_IP_TUNNEL(do_iptunnel,) |
94 | IF_FEATURE_IP_TUNNEL(do_iptunnel,) |
95 | IF_FEATURE_IP_RULE(do_iprule,) |
96 | }; |
97 | ip_func_ptr_t ip_func; |
98 | int key; |
99 | |
100 | argv = ip_parse_common_args(argv + 1); |
101 | key = *argv ? index_in_substrings(keywords, *argv++) : -1; |
102 | ip_func = ip_func_ptrs[key + 1]; |
103 | |
104 | return ip_func(argv); |
105 | } |
106 | |
107 | #endif /* any of ENABLE_FEATURE_IP_xxx is 1 */ |