Changeset 2725 in MondoRescue for branches/2.2.9/mindi-busybox/networking/ip.c
- Timestamp:
- Feb 25, 2011, 9:26:54 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2.9/mindi-busybox/networking/ip.c
r1765 r2725 1 1 /* vi: set sw=4 ts=4: */ 2 2 /* 3 * ip.c "ip" utility frontend.3 * Licensed under GPLv2 or later, see file LICENSE in this source tree. 4 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 * 5 * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> 9 6 * 10 7 * Changes: 11 * 12 * Rani Assaf <rani@magic.metawire.com> 980929: resolve addresses 13 * Bernhard Fischer rewrote to use index_in_substr_array 8 * Rani Assaf <rani@magic.metawire.com> 980929: resolve addresses 9 * Bernhard Reutner-Fischer rewrote to use index_in_substr_array 14 10 */ 15 11 … … 25 21 || ENABLE_FEATURE_IP_RULE 26 22 27 static int ATTRIBUTE_NORETURN ip_print_help(int ATTRIBUTE_UNUSED ac, char ATTRIBUTE_UNUSED **av)23 static int FAST_FUNC ip_print_help(char **argv UNUSED_PARAM) 28 24 { 29 25 bb_show_usage(); 30 26 } 31 27 32 static int (*ip_func)(int argc, char **argv) = ip_print_help;28 typedef int FAST_FUNC (*ip_func_ptr_t)(char**); 33 29 34 static int ip_do(i nt argc, char **argv)30 static int ip_do(ip_func_ptr_t ip_func, char **argv) 35 31 { 36 ip_parse_common_args(&argc, &argv);37 return ip_func(arg c-1, argv+1);32 argv = ip_parse_common_args(argv + 1); 33 return ip_func(argv); 38 34 } 39 35 40 36 #if ENABLE_FEATURE_IP_ADDRESS 41 int ipaddr_main(int argc, char **argv) ;42 int ipaddr_main(int argc , char **argv)37 int ipaddr_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 38 int ipaddr_main(int argc UNUSED_PARAM, char **argv) 43 39 { 44 ip_func = do_ipaddr; 45 return ip_do(argc, argv); 40 return ip_do(do_ipaddr, argv); 46 41 } 47 42 #endif 48 43 #if ENABLE_FEATURE_IP_LINK 49 int iplink_main(int argc, char **argv) ;50 int iplink_main(int argc , char **argv)44 int iplink_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 45 int iplink_main(int argc UNUSED_PARAM, char **argv) 51 46 { 52 ip_func = do_iplink; 53 return ip_do(argc, argv); 47 return ip_do(do_iplink, argv); 54 48 } 55 49 #endif 56 50 #if ENABLE_FEATURE_IP_ROUTE 57 int iproute_main(int argc, char **argv) ;58 int iproute_main(int argc , char **argv)51 int iproute_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 52 int iproute_main(int argc UNUSED_PARAM, char **argv) 59 53 { 60 ip_func = do_iproute; 61 return ip_do(argc, argv); 54 return ip_do(do_iproute, argv); 62 55 } 63 56 #endif 64 57 #if ENABLE_FEATURE_IP_RULE 65 int iprule_main(int argc, char **argv) ;66 int iprule_main(int argc , char **argv)58 int iprule_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 59 int iprule_main(int argc UNUSED_PARAM, char **argv) 67 60 { 68 ip_func = do_iprule; 69 return ip_do(argc, argv); 61 return ip_do(do_iprule, argv); 70 62 } 71 63 #endif 72 64 #if ENABLE_FEATURE_IP_TUNNEL 73 int iptunnel_main(int argc, char **argv) ;74 int iptunnel_main(int argc , char **argv)65 int iptunnel_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 66 int iptunnel_main(int argc UNUSED_PARAM, char **argv) 75 67 { 76 ip_func = do_iptunnel; 77 return ip_do(argc, argv); 68 return ip_do(do_iptunnel, argv); 78 69 } 79 70 #endif 80 71 81 72 82 int ip_main(int argc, char **argv) ;83 int ip_main(int argc , char **argv)73 int ip_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 74 int ip_main(int argc UNUSED_PARAM, char **argv) 84 75 { 85 76 static const char keywords[] ALIGN1 = 86 USE_FEATURE_IP_ADDRESS("address\0") 87 USE_FEATURE_IP_ROUTE("route\0") 88 USE_FEATURE_IP_LINK("link\0") 89 USE_FEATURE_IP_TUNNEL("tunnel\0" "tunl\0") 90 USE_FEATURE_IP_RULE("rule\0") 77 IF_FEATURE_IP_ADDRESS("address\0") 78 IF_FEATURE_IP_ROUTE("route\0") 79 IF_FEATURE_IP_ROUTE("r\0") 80 IF_FEATURE_IP_LINK("link\0") 81 IF_FEATURE_IP_TUNNEL("tunnel\0") 82 IF_FEATURE_IP_TUNNEL("tunl\0") 83 IF_FEATURE_IP_RULE("rule\0") 91 84 ; 92 enum { 93 USE_FEATURE_IP_ADDRESS(IP_addr,) 94 USE_FEATURE_IP_ROUTE(IP_route,) 95 USE_FEATURE_IP_LINK(IP_link,) 96 USE_FEATURE_IP_TUNNEL(IP_tunnel, IP_tunl,) 97 USE_FEATURE_IP_RULE(IP_rule,) 98 IP_none 85 static const ip_func_ptr_t ip_func_ptrs[] = { 86 ip_print_help, 87 IF_FEATURE_IP_ADDRESS(do_ipaddr,) 88 IF_FEATURE_IP_ROUTE(do_iproute,) 89 IF_FEATURE_IP_ROUTE(do_iproute,) 90 IF_FEATURE_IP_LINK(do_iplink,) 91 IF_FEATURE_IP_TUNNEL(do_iptunnel,) 92 IF_FEATURE_IP_TUNNEL(do_iptunnel,) 93 IF_FEATURE_IP_RULE(do_iprule,) 99 94 }; 95 ip_func_ptr_t ip_func; 96 int key; 100 97 101 ip_parse_common_args(&argc, &argv); 102 if (argc > 1) { 103 int key = index_in_substrings(keywords, argv[1]); 104 argc -= 2; 105 argv += 2; 106 #if ENABLE_FEATURE_IP_ADDRESS 107 if (key == IP_addr) 108 ip_func = do_ipaddr; 109 #endif 110 #if ENABLE_FEATURE_IP_ROUTE 111 if (key == IP_route) 112 ip_func = do_iproute; 113 #endif 114 #if ENABLE_FEATURE_IP_LINK 115 if (key == IP_link) 116 ip_func = do_iplink; 117 #endif 118 #if ENABLE_FEATURE_IP_TUNNEL 119 if (key == IP_tunnel || key == IP_tunl) 120 ip_func = do_iptunnel; 121 #endif 122 #if ENABLE_FEATURE_IP_RULE 123 if (key == IP_rule) 124 ip_func = do_iprule; 125 #endif 126 } 127 return ip_func(argc, argv); 98 argv = ip_parse_common_args(argv + 1); 99 key = *argv ? index_in_substrings(keywords, *argv++) : -1; 100 ip_func = ip_func_ptrs[key + 1]; 101 102 return ip_func(argv); 128 103 } 129 104
Note:
See TracChangeset
for help on using the changeset viewer.