1 /* vi: set sw=4 ts=4: */
3 * ip.c "ip" utility frontend.
5 * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
7 * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
12 * Rani Assaf <rani@magic.metawire.com> 980929: resolve addresses
13 * Bernhard Fischer rewrote to use index_in_substr_array
18 #include "libiproute/utils.h"
19 #include "libiproute/ip_common.h"
21 static int ATTRIBUTE_NORETURN ip_print_help(int ATTRIBUTE_UNUSED ac, char ATTRIBUTE_UNUSED **av)
26 static int (*ip_func)(int argc, char **argv) = ip_print_help;
28 static int ip_do(int argc, char **argv)
30 ip_parse_common_args(&argc, &argv);
31 return ip_func(argc-1, argv+1);
34 #if ENABLE_FEATURE_IP_ADDRESS
35 int ipaddr_main(int argc, char **argv);
36 int ipaddr_main(int argc, char **argv)
39 return ip_do(argc, argv);
42 #if ENABLE_FEATURE_IP_LINK
43 int iplink_main(int argc, char **argv);
44 int iplink_main(int argc, char **argv)
47 return ip_do(argc, argv);
50 #if ENABLE_FEATURE_IP_ROUTE
51 int iproute_main(int argc, char **argv);
52 int iproute_main(int argc, char **argv)
55 return ip_do(argc, argv);
58 #if ENABLE_FEATURE_IP_RULE
59 int iprule_main(int argc, char **argv);
60 int iprule_main(int argc, char **argv)
63 return ip_do(argc, argv);
66 #if ENABLE_FEATURE_IP_TUNNEL
67 int iptunnel_main(int argc, char **argv);
68 int iptunnel_main(int argc, char **argv)
70 ip_func = do_iptunnel;
71 return ip_do(argc, argv);
76 int ip_main(int argc, char **argv);
77 int ip_main(int argc, char **argv)
79 const char * const keywords[] = {
80 USE_FEATURE_IP_ADDRESS("address",)
81 USE_FEATURE_IP_ROUTE("route",)
82 USE_FEATURE_IP_LINK("link",)
83 USE_FEATURE_IP_TUNNEL("tunnel", "tunl",)
84 USE_FEATURE_IP_RULE("rule",)
88 USE_FEATURE_IP_ADDRESS(IP_addr,)
89 USE_FEATURE_IP_ROUTE(IP_route,)
90 USE_FEATURE_IP_LINK(IP_link,)
91 USE_FEATURE_IP_TUNNEL(IP_tunnel, IP_tunl,)
92 USE_FEATURE_IP_RULE(IP_rule,)
96 ip_parse_common_args(&argc, &argv);
98 int key = index_in_substr_array(keywords, argv[1]);
101 #if ENABLE_FEATURE_IP_ADDRESS
105 #if ENABLE_FEATURE_IP_ROUTE
107 ip_func = do_iproute;
109 #if ENABLE_FEATURE_IP_LINK
113 #if ENABLE_FEATURE_IP_TUNNEL
114 if (key == IP_tunnel || key == IP_tunl)
115 ip_func = do_iptunnel;
117 #if ENABLE_FEATURE_IP_RULE
122 return (ip_func(argc, argv));