1extern int print_linkinfo(const struct sockaddr_nl *who, 2 struct nlmsghdr *n, 3 void *arg); 4extern int print_addrinfo(const struct sockaddr_nl *who, 5 struct nlmsghdr *n, 6 void *arg); 7extern int print_addrlabel(const struct sockaddr_nl *who, 8 struct nlmsghdr *n, void *arg); 9extern int print_neigh(const struct sockaddr_nl *who, 10 struct nlmsghdr *n, void *arg); 11extern int print_ntable(const struct sockaddr_nl *who, 12 struct nlmsghdr *n, void *arg); 13extern int ipaddr_list(int argc, char **argv); 14extern int ipaddr_list_link(int argc, char **argv); 15extern int iproute_monitor(int argc, char **argv); 16extern void iplink_usage(void) __attribute__((noreturn)); 17extern void iproute_reset_filter(void); 18extern void ipaddr_reset_filter(int); 19extern void ipneigh_reset_filter(void); 20extern void ipntable_reset_filter(void); 21extern int print_route(const struct sockaddr_nl *who, 22 struct nlmsghdr *n, void *arg); 23extern int print_prefix(const struct sockaddr_nl *who, 24 struct nlmsghdr *n, void *arg); 25extern int print_rule(const struct sockaddr_nl *who, 26 struct nlmsghdr *n, void *arg); 27extern int do_ipaddr(int argc, char **argv); 28extern int do_ipaddrlabel(int argc, char **argv); 29extern int do_iproute(int argc, char **argv); 30extern int do_iprule(int argc, char **argv); 31extern int do_ipneigh(int argc, char **argv); 32extern int do_ipntable(int argc, char **argv); 33extern int do_iptunnel(int argc, char **argv); 34extern int do_ip6tunnel(int argc, char **argv); 35extern int do_iptuntap(int argc, char **argv); 36extern int do_iplink(int argc, char **argv); 37extern int do_ipmonitor(int argc, char **argv); 38extern int do_multiaddr(int argc, char **argv); 39extern int do_multiroute(int argc, char **argv); 40extern int do_multirule(int argc, char **argv); 41extern int do_xfrm(int argc, char **argv); 42 43static inline int rtm_get_table(struct rtmsg *r, struct rtattr **tb) 44{ 45 __u32 table = r->rtm_table; 46 if (tb[RTA_TABLE]) 47 table = *(__u32*) RTA_DATA(tb[RTA_TABLE]); 48 return table; 49} 50 51extern struct rtnl_handle rth; 52 53struct link_util 54{ 55 struct link_util *next; 56 const char *id; 57 int maxattr; 58 int (*parse_opt)(struct link_util *, int, char **, 59 struct nlmsghdr *); 60 void (*print_opt)(struct link_util *, FILE *, 61 struct rtattr *[]); 62 void (*print_xstats)(struct link_util *, FILE *, 63 struct rtattr *); 64}; 65 66struct link_util *get_link_kind(const char *kind); 67 68#ifndef INFINITY_LIFE_TIME 69#define INFINITY_LIFE_TIME 0xFFFFFFFFU 70#endif 71