]>
Commit | Line | Data |
---|---|---|
1 | /* SPDX-License-Identifier: GPL-2.0 */ | |
2 | #ifndef _IP_COMMON_H_ | |
3 | #define _IP_COMMON_H_ | |
4 | ||
5 | #include <stdbool.h> | |
6 | ||
7 | #include "json_print.h" | |
8 | ||
9 | struct link_filter { | |
10 | int ifindex; | |
11 | int family; | |
12 | int oneline; | |
13 | int showqueue; | |
14 | inet_prefix pfx; | |
15 | int scope, scopemask; | |
16 | int flags, flagmask; | |
17 | int up; | |
18 | char *label; | |
19 | int flushed; | |
20 | char *flushb; | |
21 | int flushp; | |
22 | int flushe; | |
23 | int group; | |
24 | int master; | |
25 | char *kind; | |
26 | char *slave_kind; | |
27 | int target_nsid; | |
28 | }; | |
29 | ||
30 | int get_operstate(const char *name); | |
31 | int print_linkinfo(struct nlmsghdr *n, void *arg); | |
32 | int print_addrinfo(struct nlmsghdr *n, void *arg); | |
33 | int print_addrlabel(struct nlmsghdr *n, void *arg); | |
34 | int print_neigh(struct nlmsghdr *n, void *arg); | |
35 | int ipaddr_list_link(int argc, char **argv); | |
36 | void ipaddr_get_vf_rate(int, int *, int *, const char *); | |
37 | void iplink_usage(void) __attribute__((noreturn)); | |
38 | ||
39 | void iproute_reset_filter(int ifindex); | |
40 | void ipmroute_reset_filter(int ifindex); | |
41 | void ipaddr_reset_filter(int oneline, int ifindex); | |
42 | void ipneigh_reset_filter(int ifindex); | |
43 | void ipnetconf_reset_filter(int ifindex); | |
44 | ||
45 | int print_route(struct nlmsghdr *n, void *arg); | |
46 | int print_mroute(struct nlmsghdr *n, void *arg); | |
47 | int print_prefix(struct nlmsghdr *n, void *arg); | |
48 | int print_rule(struct nlmsghdr *n, void *arg); | |
49 | int print_netconf(struct rtnl_ctrl_data *ctrl, | |
50 | struct nlmsghdr *n, void *arg); | |
51 | int print_nexthop(struct nlmsghdr *n, void *arg); | |
52 | void netns_map_init(void); | |
53 | void netns_nsid_socket_init(void); | |
54 | int print_nsid(struct nlmsghdr *n, void *arg); | |
55 | char *get_name_from_nsid(int nsid); | |
56 | int get_netnsid_from_name(const char *name); | |
57 | int set_netnsid_from_name(const char *name, int nsid); | |
58 | int do_ipaddr(int argc, char **argv); | |
59 | int do_ipaddrlabel(int argc, char **argv); | |
60 | int do_iproute(int argc, char **argv); | |
61 | int do_iprule(int argc, char **argv); | |
62 | int do_ipneigh(int argc, char **argv); | |
63 | int do_ipntable(int argc, char **argv); | |
64 | int do_iptunnel(int argc, char **argv); | |
65 | int do_ip6tunnel(int argc, char **argv); | |
66 | int do_iptuntap(int argc, char **argv); | |
67 | int do_iplink(int argc, char **argv); | |
68 | int do_ipmacsec(int argc, char **argv); | |
69 | int do_ipmonitor(int argc, char **argv); | |
70 | int do_multiaddr(int argc, char **argv); | |
71 | int do_multiroute(int argc, char **argv); | |
72 | int do_multirule(int argc, char **argv); | |
73 | int do_netns(int argc, char **argv); | |
74 | int do_xfrm(int argc, char **argv); | |
75 | int do_ipl2tp(int argc, char **argv); | |
76 | int do_ipfou(int argc, char **argv); | |
77 | int do_ipila(int argc, char **argv); | |
78 | int do_tcp_metrics(int argc, char **argv); | |
79 | int do_ipnetconf(int argc, char **argv); | |
80 | int do_iptoken(int argc, char **argv); | |
81 | int do_ipvrf(int argc, char **argv); | |
82 | void vrf_reset(void); | |
83 | int netns_identify_pid(const char *pidstr, char *name, int len); | |
84 | int do_seg6(int argc, char **argv); | |
85 | int do_ipnh(int argc, char **argv); | |
86 | ||
87 | int iplink_get(char *name, __u32 filt_mask); | |
88 | int iplink_ifla_xstats(int argc, char **argv); | |
89 | ||
90 | int ip_link_list(req_filter_fn_t filter_fn, struct nlmsg_chain *linfo); | |
91 | void free_nlmsg_chain(struct nlmsg_chain *info); | |
92 | ||
93 | static inline int rtm_get_table(struct rtmsg *r, struct rtattr **tb) | |
94 | { | |
95 | __u32 table = r->rtm_table; | |
96 | ||
97 | if (tb[RTA_TABLE]) | |
98 | table = rta_getattr_u32(tb[RTA_TABLE]); | |
99 | return table; | |
100 | } | |
101 | ||
102 | extern struct rtnl_handle rth; | |
103 | ||
104 | struct iplink_req { | |
105 | struct nlmsghdr n; | |
106 | struct ifinfomsg i; | |
107 | char buf[1024]; | |
108 | }; | |
109 | ||
110 | struct link_util { | |
111 | struct link_util *next; | |
112 | const char *id; | |
113 | int maxattr; | |
114 | int (*parse_opt)(struct link_util *, int, char **, | |
115 | struct nlmsghdr *); | |
116 | void (*print_opt)(struct link_util *, FILE *, | |
117 | struct rtattr *[]); | |
118 | void (*print_xstats)(struct link_util *, FILE *, | |
119 | struct rtattr *); | |
120 | void (*print_help)(struct link_util *, int, char **, | |
121 | FILE *); | |
122 | int (*parse_ifla_xstats)(struct link_util *, | |
123 | int, char **); | |
124 | int (*print_ifla_xstats)(struct nlmsghdr *, void *); | |
125 | }; | |
126 | ||
127 | struct link_util *get_link_kind(const char *kind); | |
128 | ||
129 | int iplink_parse(int argc, char **argv, struct iplink_req *req, char **type); | |
130 | ||
131 | /* iplink_bridge.c */ | |
132 | void br_dump_bridge_id(const struct ifla_bridge_id *id, char *buf, size_t len); | |
133 | int bridge_parse_xstats(struct link_util *lu, int argc, char **argv); | |
134 | int bridge_print_xstats(struct nlmsghdr *n, void *arg); | |
135 | ||
136 | int bond_parse_xstats(struct link_util *lu, int argc, char **argv); | |
137 | int bond_print_xstats(struct nlmsghdr *n, void *arg); | |
138 | ||
139 | /* iproute_lwtunnel.c */ | |
140 | int lwt_parse_encap(struct rtattr *rta, size_t len, int *argcp, char ***argvp, | |
141 | int encap_attr, int encap_type_attr); | |
142 | void lwt_print_encap(FILE *fp, struct rtattr *encap_type, struct rtattr *encap); | |
143 | ||
144 | /* iplink_xdp.c */ | |
145 | int xdp_parse(int *argc, char ***argv, struct iplink_req *req, const char *ifname, | |
146 | bool generic, bool drv, bool offload); | |
147 | void xdp_dump(FILE *fp, struct rtattr *tb, bool link, bool details); | |
148 | ||
149 | /* iplink_vrf.c */ | |
150 | __u32 ipvrf_get_table(const char *name); | |
151 | int name_is_vrf(const char *name); | |
152 | ||
153 | #ifndef INFINITY_LIFE_TIME | |
154 | #define INFINITY_LIFE_TIME 0xFFFFFFFFU | |
155 | #endif | |
156 | ||
157 | #ifndef LABEL_MAX_MASK | |
158 | #define LABEL_MAX_MASK 0xFFFFFU | |
159 | #endif | |
160 | ||
161 | void print_num(FILE *fp, unsigned int width, uint64_t count); | |
162 | void print_rt_flags(FILE *fp, unsigned int flags); | |
163 | void print_rta_if(FILE *fp, const struct rtattr *rta, const char *prefix); | |
164 | void print_rta_gateway(FILE *fp, unsigned char family, | |
165 | const struct rtattr *rta); | |
166 | #endif /* _IP_COMMON_H_ */ |