ip_common.h revision 0dc34c7713bb7055378fe5cbc720d63d0db572a1
1ae665a522bd46bea44c5ea84c89c8b1731954170Stephen Hemmingerextern int print_linkinfo(const struct sockaddr_nl *who,
2ae665a522bd46bea44c5ea84c89c8b1731954170Stephen Hemminger			  struct nlmsghdr *n,
36dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemminger			  void *arg);
46dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemmingerextern int print_addrinfo(const struct sockaddr_nl *who,
5ae665a522bd46bea44c5ea84c89c8b1731954170Stephen Hemminger			  struct nlmsghdr *n,
66dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemminger			  void *arg);
75ef82157002d1ae22b168604f0aec5331dd55defStephen Hemmingerextern int print_addrlabel(const struct sockaddr_nl *who,
85ef82157002d1ae22b168604f0aec5331dd55defStephen Hemminger			   struct nlmsghdr *n, void *arg);
96dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemmingerextern int print_neigh(const struct sockaddr_nl *who,
1050772dc51ac02239958e1ebcdb21277fcdf133a7osdl.net!shemminger		       struct nlmsghdr *n, void *arg);
1109954dc61adc3051cbb2127e2bfcf692502c8306shemmingerextern int print_ntable(const struct sockaddr_nl *who,
1209954dc61adc3051cbb2127e2bfcf692502c8306shemminger			struct nlmsghdr *n, void *arg);
13aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int ipaddr_list(int argc, char **argv);
14aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int ipaddr_list_link(int argc, char **argv);
15aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int iproute_monitor(int argc, char **argv);
16aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern void iplink_usage(void) __attribute__((noreturn));
17aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern void iproute_reset_filter(void);
18aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern void ipaddr_reset_filter(int);
19aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern void ipneigh_reset_filter(void);
2009954dc61adc3051cbb2127e2bfcf692502c8306shemmingerextern void ipntable_reset_filter(void);
21ae665a522bd46bea44c5ea84c89c8b1731954170Stephen Hemmingerextern int print_route(const struct sockaddr_nl *who,
2250772dc51ac02239958e1ebcdb21277fcdf133a7osdl.net!shemminger		       struct nlmsghdr *n, void *arg);
231cb54e58069fb413bd20738754b4e49f0403da0cnet[shemminger]!shemmingerextern int print_prefix(const struct sockaddr_nl *who,
241cb54e58069fb413bd20738754b4e49f0403da0cnet[shemminger]!shemminger			struct nlmsghdr *n, void *arg);
2598bde989db679153ee7a5f6425037b5a002eb95dThomas Grafextern int print_rule(const struct sockaddr_nl *who,
2698bde989db679153ee7a5f6425037b5a002eb95dThomas Graf		      struct nlmsghdr *n, void *arg);
27aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int do_ipaddr(int argc, char **argv);
284759758c05b3bda53b743a1c3238f1479bb61b43YOSHIFUJI Hideaki / 吉藤英明extern int do_ipaddrlabel(int argc, char **argv);
29aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int do_iproute(int argc, char **argv);
30aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int do_iprule(int argc, char **argv);
31aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int do_ipneigh(int argc, char **argv);
3209954dc61adc3051cbb2127e2bfcf692502c8306shemmingerextern int do_ipntable(int argc, char **argv);
33aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int do_iptunnel(int argc, char **argv);
34288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURAextern int do_ip6tunnel(int argc, char **argv);
35580fbd88f75cc9eea0d28a48c025b090eb9419a7David Woodhouseextern int do_iptuntap(int argc, char **argv);
36aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int do_iplink(int argc, char **argv);
37aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int do_ipmonitor(int argc, char **argv);
38aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int do_multiaddr(int argc, char **argv);
39aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int do_multiroute(int argc, char **argv);
40b6c8e808fcea80da8bb97078ff942a0b9001e1c1Patrick McHardyextern int do_multirule(int argc, char **argv);
410dc34c7713bb7055378fe5cbc720d63d0db572a1Eric W. Biedermanextern int do_netns(int argc, char **argv);
42c7699875bee00fbcd057fc62c30d6560b044e007net[shemminger]!shemmingerextern int do_xfrm(int argc, char **argv);
43351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger
4434e9564753075c756f96597e7aa57f969a403aafPatrick McHardystatic inline int rtm_get_table(struct rtmsg *r, struct rtattr **tb)
4534e9564753075c756f96597e7aa57f969a403aafPatrick McHardy{
4634e9564753075c756f96597e7aa57f969a403aafPatrick McHardy	__u32 table = r->rtm_table;
4734e9564753075c756f96597e7aa57f969a403aafPatrick McHardy	if (tb[RTA_TABLE])
4834e9564753075c756f96597e7aa57f969a403aafPatrick McHardy		table = *(__u32*) RTA_DATA(tb[RTA_TABLE]);
4934e9564753075c756f96597e7aa57f969a403aafPatrick McHardy	return table;
5034e9564753075c756f96597e7aa57f969a403aafPatrick McHardy}
5134e9564753075c756f96597e7aa57f969a403aafPatrick McHardy
52351efcde4e62967362a10b29f3b701cfecd7cdfcshemmingerextern struct rtnl_handle rth;
53141bb60640efb17844b9b9c87d62f679c3036238Masahide NAKAMURA
541d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardystruct link_util
551d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy{
561d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy	struct link_util	*next;
571d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy	const char		*id;
581d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy	int			maxattr;
591d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy	int			(*parse_opt)(struct link_util *, int, char **,
601d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy					     struct nlmsghdr *);
611d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy	void			(*print_opt)(struct link_util *, FILE *,
621d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy					     struct rtattr *[]);
631d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy	void			(*print_xstats)(struct link_util *, FILE *,
641d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy					     struct rtattr *);
651d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy};
661d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy
671d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardystruct link_util *get_link_kind(const char *kind);
680dc34c7713bb7055378fe5cbc720d63d0db572a1Eric W. Biedermanint get_netns_fd(const char *name);
691d93483985f0aa2d2afc72dde5179ff3f79a0999Patrick McHardy
70141bb60640efb17844b9b9c87d62f679c3036238Masahide NAKAMURA#ifndef	INFINITY_LIFE_TIME
71141bb60640efb17844b9b9c87d62f679c3036238Masahide NAKAMURA#define     INFINITY_LIFE_TIME      0xFFFFFFFFU
72141bb60640efb17844b9b9c87d62f679c3036238Masahide NAKAMURA#endif
73