14f2fdd44b6694f713aa638cc2222a2d7d17dfe5fStephen Hemmingerextern int get_operstate(const char *name); 2ae665a522bd46bea44c5ea84c89c8b1731954170Stephen Hemmingerextern int print_linkinfo(const struct sockaddr_nl *who, 3ae665a522bd46bea44c5ea84c89c8b1731954170Stephen Hemminger struct nlmsghdr *n, 46dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemminger void *arg); 56dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemmingerextern int print_addrinfo(const struct sockaddr_nl *who, 6ae665a522bd46bea44c5ea84c89c8b1731954170Stephen Hemminger struct nlmsghdr *n, 76dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemminger void *arg); 85ef82157002d1ae22b168604f0aec5331dd55defStephen Hemmingerextern int print_addrlabel(const struct sockaddr_nl *who, 95ef82157002d1ae22b168604f0aec5331dd55defStephen Hemminger struct nlmsghdr *n, void *arg); 106dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemmingerextern int print_neigh(const struct sockaddr_nl *who, 1150772dc51ac02239958e1ebcdb21277fcdf133a7osdl.net!shemminger struct nlmsghdr *n, void *arg); 1209954dc61adc3051cbb2127e2bfcf692502c8306shemmingerextern int print_ntable(const struct sockaddr_nl *who, 1309954dc61adc3051cbb2127e2bfcf692502c8306shemminger struct nlmsghdr *n, void *arg); 14aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int ipaddr_list(int argc, char **argv); 15aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int ipaddr_list_link(int argc, char **argv); 16aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int iproute_monitor(int argc, char **argv); 17aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern void iplink_usage(void) __attribute__((noreturn)); 18aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern void iproute_reset_filter(void); 19aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern void ipaddr_reset_filter(int); 20aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern void ipneigh_reset_filter(void); 2109954dc61adc3051cbb2127e2bfcf692502c8306shemmingerextern void ipntable_reset_filter(void); 22ae665a522bd46bea44c5ea84c89c8b1731954170Stephen Hemmingerextern int print_route(const struct sockaddr_nl *who, 2350772dc51ac02239958e1ebcdb21277fcdf133a7osdl.net!shemminger struct nlmsghdr *n, void *arg); 241cb54e58069fb413bd20738754b4e49f0403da0cnet[shemminger]!shemmingerextern int print_prefix(const struct sockaddr_nl *who, 251cb54e58069fb413bd20738754b4e49f0403da0cnet[shemminger]!shemminger struct nlmsghdr *n, void *arg); 2698bde989db679153ee7a5f6425037b5a002eb95dThomas Grafextern int print_rule(const struct sockaddr_nl *who, 2798bde989db679153ee7a5f6425037b5a002eb95dThomas Graf struct nlmsghdr *n, void *arg); 28aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int do_ipaddr(int argc, char **argv); 294759758c05b3bda53b743a1c3238f1479bb61b43YOSHIFUJI Hideaki / 吉藤英明extern int do_ipaddrlabel(int argc, char **argv); 30aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int do_iproute(int argc, char **argv); 31aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int do_iprule(int argc, char **argv); 32aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int do_ipneigh(int argc, char **argv); 3309954dc61adc3051cbb2127e2bfcf692502c8306shemmingerextern int do_ipntable(int argc, char **argv); 34aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int do_iptunnel(int argc, char **argv); 35288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURAextern int do_ip6tunnel(int argc, char **argv); 36580fbd88f75cc9eea0d28a48c025b090eb9419a7David Woodhouseextern int do_iptuntap(int argc, char **argv); 37aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int do_iplink(int argc, char **argv); 38aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int do_ipmonitor(int argc, char **argv); 39aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int do_multiaddr(int argc, char **argv); 40aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int do_multiroute(int argc, char **argv); 41b6c8e808fcea80da8bb97078ff942a0b9001e1c1Patrick McHardyextern int do_multirule(int argc, char **argv); 420dc34c7713bb7055378fe5cbc720d63d0db572a1Eric W. Biedermanextern int do_netns(int argc, char **argv); 43c7699875bee00fbcd057fc62c30d6560b044e007net[shemminger]!shemmingerextern int do_xfrm(int argc, char **argv); 4438cd311adef818a891a0d9fa778969419fe55141Stephen Hemmingerextern int do_ipl2tp(int argc, char **argv); 45351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger 4634e9564753075c756f96597e7aa57f969a403aafPatrick McHardystatic inline int rtm_get_table(struct rtmsg *r, struct rtattr **tb) 4734e9564753075c756f96597e7aa57f969a403aafPatrick McHardy{ 4834e9564753075c756f96597e7aa57f969a403aafPatrick McHardy __u32 table = r->rtm_table; 4934e9564753075c756f96597e7aa57f969a403aafPatrick McHardy if (tb[RTA_TABLE]) 50ff24746cca1ef0c92d46614158e6672acd6b63d3Stephen Hemminger table = rta_getattr_u32(tb[RTA_TABLE]); 5134e9564753075c756f96597e7aa57f969a403aafPatrick McHardy return table; 5234e9564753075c756f96597e7aa57f969a403aafPatrick McHardy} 5334e9564753075c756f96597e7aa57f969a403aafPatrick McHardy 54351efcde4e62967362a10b29f3b701cfecd7cdfcshemmingerextern struct rtnl_handle rth; 55141bb60640efb17844b9b9c87d62f679c3036238Masahide NAKAMURA 561d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardystruct link_util 571d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy{ 581d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy struct link_util *next; 591d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy const char *id; 601d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy int maxattr; 611d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy int (*parse_opt)(struct link_util *, int, char **, 621d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy struct nlmsghdr *); 631d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy void (*print_opt)(struct link_util *, FILE *, 641d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy struct rtattr *[]); 651d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy void (*print_xstats)(struct link_util *, FILE *, 661d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy struct rtattr *); 671d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy}; 681d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy 691d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardystruct link_util *get_link_kind(const char *kind); 700dc34c7713bb7055378fe5cbc720d63d0db572a1Eric W. Biedermanint get_netns_fd(const char *name); 711d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy 72141bb60640efb17844b9b9c87d62f679c3036238Masahide NAKAMURA#ifndef INFINITY_LIFE_TIME 73141bb60640efb17844b9b9c87d62f679c3036238Masahide NAKAMURA#define INFINITY_LIFE_TIME 0xFFFFFFFFU 74141bb60640efb17844b9b9c87d62f679c3036238Masahide NAKAMURA#endif 75