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