• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 %module capi
2 %{
3 #include <netlink/route/rtnl.h>
4 #include <netlink/route/link.h>
5 #include <netlink/route/link/vlan.h>
6 #include <netlink/route/link/macvlan.h>
7 #include <netlink/route/link/vxlan.h>
8 #include <netlink/route/link/bridge.h>
9 #include <netlink/route/link/inet.h>
10 
11 #include <netlink/route/tc.h>
12 #include <netlink/route/qdisc.h>
13 #include <netlink/route/class.h>
14 #include <netlink/route/classifier.h>
15 
16 #include <netlink/route/qdisc/htb.h>
17 
18 #include <netlink/route/addr.h>
19 %}
20 
21 %include <stdint.i>
22 %include <cstring.i>
23 
24 %inline %{
link2obj(struct rtnl_link * link)25         struct nl_object *link2obj(struct rtnl_link *link)
26         {
27                 return OBJ_CAST(link);
28         }
29 
obj2link(struct nl_object * obj)30         struct rtnl_link *obj2link(struct nl_object *obj)
31         {
32                 return (struct rtnl_link *) obj;
33         }
34 
get_from_kernel(struct nl_sock * sk,int ifindex,const char * name)35         struct rtnl_link *get_from_kernel(struct nl_sock *sk, int ifindex, const char *name)
36         {
37                 struct rtnl_link *link;
38                 if (rtnl_link_get_kernel(sk, ifindex, name, &link) < 0)
39                         return NULL;
40                 return link;
41         }
42 
inet_get_conf(struct rtnl_link * link,const unsigned int id)43         uint32_t inet_get_conf(struct rtnl_link *link, const unsigned int id)
44         {
45                 uint32_t result;
46 
47                 if (rtnl_link_inet_get_conf(link, id, &result) < 0)
48                         return 0;
49 
50                 return result;
51         }
52 %};
53 
54 extern struct nl_object *link2obj(struct rtnl_link *);
55 extern struct rtnl_link *obj2link(struct nl_object *);
56 
57 /* <netlink/route/rtnl.h> */
58 
59 %cstring_output_maxsize(char *buf, size_t len)
60 extern char *		rtnl_scope2str(int, char *buf, size_t len);
61 extern int		rtnl_str2scope(const char *);
62 
63 /* <netlink/route/link.h> */
64 
65 extern struct rtnl_link *rtnl_link_alloc(void);
66 
67 extern struct rtnl_link *rtnl_link_get(struct nl_cache *, int);
68 extern struct rtnl_link *rtnl_link_get_by_name(struct nl_cache *, const char *);
69 
70 extern int rtnl_link_build_add_request(struct rtnl_link *, int, struct nl_msg **);
71 extern int rtnl_link_add(struct nl_sock *, struct rtnl_link *, int);
72 extern int rtnl_link_build_change_request(struct rtnl_link *, struct rtnl_link *, int, struct nl_msg **);
73 extern int rtnl_link_change(struct nl_sock *, struct rtnl_link *, struct rtnl_link *, int);
74 
75 extern int rtnl_link_build_delete_request(const struct rtnl_link *, struct nl_msg **);
76 extern int rtnl_link_delete(struct nl_sock *, const struct rtnl_link *);
77 extern int rtnl_link_build_get_request(int, const char *, struct nl_msg **);
78 
79 extern char *rtnl_link_stat2str(int, char *, size_t);
80 extern int rtnl_link_str2stat(const char *);
81 
82 %cstring_output_maxsize(char *buf, size_t len)
83 extern char *rtnl_link_flags2str(int, char *buf, size_t len);
84 extern int rtnl_link_str2flags(const char *);
85 
86 %cstring_output_maxsize(char *buf, size_t len)
87 extern char *rtnl_link_operstate2str(uint8_t, char *buf, size_t len);
88 extern int rtnl_link_str2operstate(const char *);
89 
90 %cstring_output_maxsize(char *buf, size_t len)
91 extern char *rtnl_link_mode2str(uint8_t, char *buf, size_t len);
92 extern int rtnl_link_str2mode(const char *);
93 
94 extern void rtnl_link_set_qdisc(struct rtnl_link *, const char *);
95 extern char *rtnl_link_get_qdisc(struct rtnl_link *);
96 
97 extern void rtnl_link_set_name(struct rtnl_link *, const char *);
98 extern char *rtnl_link_get_name(struct rtnl_link *);
99 
100 extern void rtnl_link_set_flags(struct rtnl_link *, unsigned int);
101 extern void rtnl_link_unset_flags(struct rtnl_link *, unsigned int);
102 extern unsigned int rtnl_link_get_flags(struct rtnl_link *);
103 
104 extern void rtnl_link_set_mtu(struct rtnl_link *, unsigned int);
105 extern unsigned int rtnl_link_get_mtu(struct rtnl_link *);
106 
107 extern void rtnl_link_set_txqlen(struct rtnl_link *, unsigned int);
108 extern unsigned int rtnl_link_get_txqlen(struct rtnl_link *);
109 
110 extern void rtnl_link_set_ifindex(struct rtnl_link *, int);
111 extern int rtnl_link_get_ifindex(struct rtnl_link *);
112 
113 extern void rtnl_link_set_family(struct rtnl_link *, int);
114 extern int rtnl_link_get_family(struct rtnl_link *);
115 
116 extern void rtnl_link_set_arptype(struct rtnl_link *, unsigned int);
117 extern unsigned int rtnl_link_get_arptype(struct rtnl_link *);
118 
119 extern void rtnl_link_set_addr(struct rtnl_link *, struct nl_addr *);
120 extern struct nl_addr *rtnl_link_get_addr(struct rtnl_link *);
121 
122 extern void rtnl_link_set_broadcast(struct rtnl_link *, struct nl_addr *);
123 extern struct nl_addr *rtnl_link_get_broadcast(struct rtnl_link *);
124 
125 extern void rtnl_link_set_link(struct rtnl_link *, int);
126 extern int rtnl_link_get_link(struct rtnl_link *);
127 
128 extern void rtnl_link_set_master(struct rtnl_link *, int);
129 extern int rtnl_link_get_master(struct rtnl_link *);
130 
131 extern void rtnl_link_set_operstate(struct rtnl_link *, uint8_t);
132 extern uint8_t rtnl_link_get_operstate(struct rtnl_link *);
133 
134 extern void rtnl_link_set_linkmode(struct rtnl_link *, uint8_t);
135 extern uint8_t rtnl_link_get_linkmode(struct rtnl_link *);
136 
137 extern const char *rtnl_link_get_ifalias(struct rtnl_link *);
138 extern void rtnl_link_set_ifalias(struct rtnl_link *, const char *);
139 
140 extern int rtnl_link_get_num_vf(struct rtnl_link *, uint32_t *);
141 
142 extern uint64_t rtnl_link_get_stat(struct rtnl_link *, int);
143 extern int rtnl_link_set_stat(struct rtnl_link *, const unsigned int, const uint64_t);
144 
145 extern int rtnl_link_set_type(struct rtnl_link *, const char *);
146 extern char *rtnl_link_get_type(struct rtnl_link *);
147 
148 extern int rtnl_link_enslave(struct nl_sock * sock, struct rtnl_link * master, struct rtnl_link * slave);
149 extern int rtnl_link_release(struct nl_sock * sock, struct rtnl_link * slave);
150 
151 /* <netlink/route/link/vlan.h> */
152 
153 struct vlan_map
154 {
155 	uint32_t		vm_from;
156 	uint32_t		vm_to;
157 };
158 
159 #define VLAN_PRIO_MAX 7
160 
161 %cstring_output_maxsize(char *buf, size_t len)
162 extern char *rtnl_link_vlan_flags2str(int, char *buf, size_t len);
163 extern int rtnl_link_vlan_str2flags(const char *);
164 
165 extern int rtnl_link_vlan_set_id(struct rtnl_link *, int);
166 extern int rtnl_link_vlan_get_id(struct rtnl_link *);
167 
168 extern int rtnl_link_vlan_set_flags(struct rtnl_link *, unsigned int);
169 extern int rtnl_link_vlan_unset_flags(struct rtnl_link *, unsigned int);
170 extern unsigned int rtnl_link_vlan_get_flags(struct rtnl_link *);
171 
172 extern int rtnl_link_vlan_set_ingress_map(struct rtnl_link *, int, uint32_t);
173 extern uint32_t *rtnl_link_vlan_get_ingress_map(struct rtnl_link *);
174 
175 extern int rtnl_link_vlan_set_egress_map(struct rtnl_link *, uint32_t, int);
176 extern struct vlan_map *rtnl_link_vlan_get_egress_map(struct rtnl_link *, int *);
177 
178 /* <netlink/route/link/macvlan.h> */
179 
180 %cstring_output_maxsize(char *buf, size_t len)
181 extern struct rtnl_link *rtnl_link_macvlan_alloc(void);
182 extern int		rtnl_link_is_macvlan(struct rtnl_link *);
183 extern char *		rtnl_link_macvlan_mode2str(int, char *, size_t);
184 extern int		rtnl_link_macvlan_str2mode(const char *);
185 extern char *		rtnl_link_macvlan_flags2str(int, char *, size_t);
186 extern int		rtnl_link_macvlan_str2flags(const char *);
187 extern int		rtnl_link_macvlan_set_mode(struct rtnl_link *, uint32_t);
188 extern uint32_t		rtnl_link_macvlan_get_mode(struct rtnl_link *);
189 extern int		rtnl_link_macvlan_set_flags(struct rtnl_link *, uint16_t);
190 extern int		rtnl_link_macvlan_unset_flags(struct rtnl_link *, uint16_t);
191 extern uint16_t		rtnl_link_macvlan_get_flags(struct rtnl_link *);
192 
193 /* <netlink/route/link/vxlan.h> */
194 
195 #define VXLAN_ID_MAX 16777215
196 
197 extern struct rtnl_link *rtnl_link_vxlan_alloc(void);
198 
199 extern int rtnl_link_is_vxlan(struct rtnl_link *);
200 
201 extern int rtnl_link_vxlan_set_id(struct rtnl_link *, uint32_t);
202 extern int rtnl_link_vxlan_get_id(struct rtnl_link *, uint32_t *);
203 
204 extern int rtnl_link_vxlan_set_group(struct rtnl_link *, struct nl_addr *);
205 extern int rtnl_link_vxlan_get_group(struct rtnl_link *, struct nl_addr **);
206 
207 extern int rtnl_link_vxlan_set_link(struct rtnl_link *, uint32_t);
208 extern int rtnl_link_vxlan_get_link(struct rtnl_link *, uint32_t *);
209 
210 extern int rtnl_link_vxlan_set_local(struct rtnl_link *, struct nl_addr *);
211 extern int rtnl_link_vxlan_get_local(struct rtnl_link *, struct nl_addr **);
212 
213 extern int rtnl_link_vxlan_set_ttl(struct rtnl_link *, uint8_t);
214 extern int rtnl_link_vxlan_get_ttl(struct rtnl_link *);
215 
216 extern int rtnl_link_vxlan_set_tos(struct rtnl_link *, uint8_t);
217 extern int rtnl_link_vxlan_get_tos(struct rtnl_link *);
218 
219 extern int rtnl_link_vxlan_set_learning(struct rtnl_link *, uint8_t);
220 extern int rtnl_link_vxlan_get_learning(struct rtnl_link *);
221 extern int rtnl_link_vxlan_enable_learning(struct rtnl_link *);
222 extern int rtnl_link_vxlan_disable_learning(struct rtnl_link *);
223 
224 extern int rtnl_link_vxlan_set_ageing(struct rtnl_link *, uint32_t);
225 extern int rtnl_link_vxlan_get_ageing(struct rtnl_link *, uint32_t *);
226 
227 extern int rtnl_link_vxlan_set_limit(struct rtnl_link *, uint32_t);
228 extern int rtnl_link_vxlan_get_limit(struct rtnl_link *, uint32_t *);
229 
230 extern int rtnl_link_vxlan_set_port_range(struct rtnl_link *,
231 										  struct ifla_vxlan_port_range *);
232 extern int rtnl_link_vxlan_get_port_range(struct rtnl_link *,
233 										  struct ifla_vxlan_port_range *);
234 
235 extern int rtnl_link_vxlan_set_proxy(struct rtnl_link *, uint8_t);
236 extern int rtnl_link_vxlan_get_proxy(struct rtnl_link *);
237 extern int rtnl_link_vxlan_enable_proxy(struct rtnl_link *);
238 extern int rtnl_link_vxlan_disable_proxy(struct rtnl_link *);
239 
240 extern int rtnl_link_vxlan_set_rsc(struct rtnl_link *, uint8_t);
241 extern int rtnl_link_vxlan_get_rsc(struct rtnl_link *);
242 extern int rtnl_link_vxlan_enable_rsc(struct rtnl_link *);
243 extern int rtnl_link_vxlan_disable_rsc(struct rtnl_link *);
244 
245 extern int rtnl_link_vxlan_set_l2miss(struct rtnl_link *, uint8_t);
246 extern int rtnl_link_vxlan_get_l2miss(struct rtnl_link *);
247 extern int rtnl_link_vxlan_enable_l2miss(struct rtnl_link *);
248 extern int rtnl_link_vxlan_disable_l2miss(struct rtnl_link *);
249 
250 extern int rtnl_link_vxlan_set_l3miss(struct rtnl_link *, uint8_t);
251 extern int rtnl_link_vxlan_get_l3miss(struct rtnl_link *);
252 extern int rtnl_link_vxlan_enable_l3miss(struct rtnl_link *);
253 extern int rtnl_link_vxlan_disable_l3miss(struct rtnl_link *);
254 
255 /* <netlink/route/link/bridge.h> */
256 
257 enum rtnl_link_bridge_flags {
258 	RTNL_BRIDGE_HAIRPIN_MODE	= 0x0001,
259 	RTNL_BRIDGE_BPDU_GUARD		= 0x0002,
260 	RTNL_BRIDGE_ROOT_BLOCK		= 0x0004,
261 	RTNL_BRIDGE_FAST_LEAVE		= 0x0008,
262 };
263 
264 extern int	rtnl_link_is_bridge(struct rtnl_link *);
265 extern int	rtnl_link_bridge_has_ext_info(struct rtnl_link *);
266 
267 extern int	rtnl_link_bridge_set_port_state(struct rtnl_link *, uint8_t );
268 extern int	rtnl_link_bridge_get_port_state(struct rtnl_link *);
269 
270 extern int	rtnl_link_bridge_set_priority(struct rtnl_link *, uint16_t);
271 extern int	rtnl_link_bridge_get_priority(struct rtnl_link *);
272 
273 extern int	rtnl_link_bridge_set_cost(struct rtnl_link *, uint32_t);
274 extern int	rtnl_link_bridge_get_cost(struct rtnl_link *, uint32_t *);
275 
276 extern int	rtnl_link_bridge_unset_flags(struct rtnl_link *, unsigned int);
277 extern int	rtnl_link_bridge_set_flags(struct rtnl_link *, unsigned int);
278 extern int	rtnl_link_bridge_get_flags(struct rtnl_link *);
279 
280 extern char * rtnl_link_bridge_flags2str(int, char *, size_t);
281 extern int	rtnl_link_bridge_str2flags(const char *);
282 
283 /* <netlink/route/link/inet.h> */
284 %cstring_output_maxsize(char *buf, size_t len)
285 extern const char *rtnl_link_inet_devconf2str(int, char *buf, size_t len);
286 extern unsigned int rtnl_link_inet_str2devconf(const char *);
287 
288 extern int rtnl_link_inet_set_conf(struct rtnl_link *, const unsigned int, uint32_t);
289 
290 /* <netlink/route/tc.h> */
291 
292 %inline %{
tc_str2handle(const char * name)293         uint32_t tc_str2handle(const char *name)
294         {
295                 uint32_t result;
296 
297                 if (rtnl_tc_str2handle(name, &result) < 0)
298                         return 0;
299 
300                 return result;
301         }
302 %};
303 
304 extern void		rtnl_tc_set_ifindex(struct rtnl_tc *, int);
305 extern int		rtnl_tc_get_ifindex(struct rtnl_tc *);
306 extern void		rtnl_tc_set_link(struct rtnl_tc *, struct rtnl_link *);
307 extern struct rtnl_link *rtnl_tc_get_link(struct rtnl_tc *);
308 extern void		rtnl_tc_set_mtu(struct rtnl_tc *, uint32_t);
309 extern uint32_t		rtnl_tc_get_mtu(struct rtnl_tc *);
310 extern void		rtnl_tc_set_mpu(struct rtnl_tc *, uint32_t);
311 extern uint32_t		rtnl_tc_get_mpu(struct rtnl_tc *);
312 extern void		rtnl_tc_set_overhead(struct rtnl_tc *, uint32_t);
313 extern uint32_t		rtnl_tc_get_overhead(struct rtnl_tc *);
314 extern void		rtnl_tc_set_linktype(struct rtnl_tc *, uint32_t);
315 extern uint32_t		rtnl_tc_get_linktype(struct rtnl_tc *);
316 extern void		rtnl_tc_set_handle(struct rtnl_tc *, uint32_t);
317 extern uint32_t		rtnl_tc_get_handle(struct rtnl_tc *);
318 extern void		rtnl_tc_set_parent(struct rtnl_tc *, uint32_t);
319 extern uint32_t		rtnl_tc_get_parent(struct rtnl_tc *);
320 extern int		rtnl_tc_set_kind(struct rtnl_tc *, const char *);
321 extern char *		rtnl_tc_get_kind(struct rtnl_tc *);
322 extern uint64_t		rtnl_tc_get_stat(struct rtnl_tc *, enum rtnl_tc_stat);
323 
324 extern int		rtnl_tc_calc_txtime(int, int);
325 extern int		rtnl_tc_calc_bufsize(int, int);
326 extern int		rtnl_tc_calc_cell_log(int);
327 
328 extern int		rtnl_tc_read_classid_file(void);
329 %cstring_output_maxsize(char *buf, size_t len)
330 extern char *		rtnl_tc_handle2str(uint32_t, char *buf, size_t len);
331 extern int		rtnl_classid_generate(const char *, uint32_t *, uint32_t);
332 
333 /* <netlink/route/qdisc.h> */
334 
335 %inline %{
qdisc2obj(struct rtnl_qdisc * qdisc)336         struct nl_object *qdisc2obj(struct rtnl_qdisc *qdisc)
337         {
338                 return OBJ_CAST(qdisc);
339         }
340 
obj2qdisc(struct nl_object * obj)341         struct rtnl_qdisc *obj2qdisc(struct nl_object *obj)
342         {
343                 return (struct rtnl_qdisc *) obj;
344         }
345 
class2obj(struct rtnl_class * cl)346         struct nl_object *class2obj(struct rtnl_class *cl)
347         {
348                 return OBJ_CAST(cl);
349         }
350 
obj2class(struct nl_object * obj)351         struct rtnl_class *obj2class(struct nl_object *obj)
352         {
353                 return (struct rtnl_class *) obj;
354         }
355 
cls2obj(struct rtnl_cls * cls)356         struct nl_object *cls2obj(struct rtnl_cls *cls)
357         {
358                 return OBJ_CAST(cls);
359         }
360 
obj2cls(struct nl_object * obj)361         struct rtnl_cls *obj2cls(struct nl_object *obj)
362         {
363                 return (struct rtnl_cls *) obj;
364         }
365 
obj2tc(struct nl_object * obj)366         struct rtnl_tc *obj2tc(struct nl_object *obj)
367         {
368                 return TC_CAST(obj);
369         }
370 %};
371 extern struct rtnl_qdisc *
372 		rtnl_qdisc_alloc(void);
373 
374 extern struct rtnl_qdisc *
375 		rtnl_qdisc_get(struct nl_cache *, int, uint32_t);
376 
377 extern struct rtnl_qdisc *
378 		rtnl_qdisc_get_by_parent(struct nl_cache *, int, uint32_t);
379 
380 extern int	rtnl_qdisc_build_add_request(struct rtnl_qdisc *, int,
381 					     struct nl_msg **);
382 extern int	rtnl_qdisc_add(struct nl_sock *, struct rtnl_qdisc *, int);
383 
384 extern int	rtnl_qdisc_build_update_request(struct rtnl_qdisc *,
385 						struct rtnl_qdisc *,
386 						int, struct nl_msg **);
387 
388 extern int	rtnl_qdisc_update(struct nl_sock *, struct rtnl_qdisc *,
389 				  struct rtnl_qdisc *, int);
390 
391 extern int	rtnl_qdisc_build_delete_request(struct rtnl_qdisc *,
392 						struct nl_msg **);
393 extern int	rtnl_qdisc_delete(struct nl_sock *, struct rtnl_qdisc *);
394 
395 /* <netlink/route/classifier.h> */
396 
397 extern struct rtnl_cls *rtnl_cls_alloc(void);
398 extern void		rtnl_cls_put(struct rtnl_cls *);
399 
400 extern int		rtnl_cls_add(struct nl_sock *, struct rtnl_cls *, int);
401 
402 extern int		rtnl_cls_delete(struct nl_sock *, struct rtnl_cls *,
403 					int);
404 
405 extern void		rtnl_cls_set_prio(struct rtnl_cls *, uint16_t);
406 extern uint16_t		rtnl_cls_get_prio(struct rtnl_cls *);
407 
408 extern void		rtnl_cls_set_protocol(struct rtnl_cls *, uint16_t);
409 extern uint16_t		rtnl_cls_get_protocol(struct rtnl_cls *);
410 
411 /* <netlink/route/qdisc/htb.h> */
412 
413 extern uint32_t	rtnl_htb_get_rate2quantum(struct rtnl_qdisc *);
414 extern int	rtnl_htb_set_rate2quantum(struct rtnl_qdisc *, uint32_t);
415 extern uint32_t	rtnl_htb_get_defcls(struct rtnl_qdisc *);
416 extern int	rtnl_htb_set_defcls(struct rtnl_qdisc *, uint32_t);
417 
418 extern uint32_t	rtnl_htb_get_prio(struct rtnl_class *);
419 extern int	rtnl_htb_set_prio(struct rtnl_class *, uint32_t);
420 extern uint32_t	rtnl_htb_get_rate(struct rtnl_class *);
421 extern int	rtnl_htb_set_rate(struct rtnl_class *, uint32_t);
422 extern uint32_t	rtnl_htb_get_ceil(struct rtnl_class *);
423 extern int	rtnl_htb_set_ceil(struct rtnl_class *, uint32_t);
424 extern uint32_t	rtnl_htb_get_rbuffer(struct rtnl_class *);
425 extern int	rtnl_htb_set_rbuffer(struct rtnl_class *, uint32_t);
426 extern uint32_t	rtnl_htb_get_cbuffer(struct rtnl_class *);
427 extern int	rtnl_htb_set_cbuffer(struct rtnl_class *, uint32_t);
428 extern uint32_t	rtnl_htb_get_quantum(struct rtnl_class *);
429 extern int	rtnl_htb_set_quantum(struct rtnl_class *, uint32_t);
430 extern int	rtnl_htb_get_level(struct rtnl_class *);
431 
432 /* <netlink/route/addr.h> */
433 
434 %inline %{
addr2obj(struct rtnl_addr * addr)435         struct nl_object *addr2obj(struct rtnl_addr *addr)
436         {
437                 return OBJ_CAST(addr);
438         }
439 
obj2addr(struct nl_object * obj)440         struct rtnl_addr *obj2addr(struct nl_object *obj)
441         {
442                 return (struct rtnl_addr *) obj;
443         }
444 %};
445 
446 extern struct rtnl_addr *rtnl_addr_alloc(void);
447 
448 extern struct rtnl_addr *
449 		rtnl_addr_get(struct nl_cache *, int, struct nl_addr *);
450 
451 extern int	rtnl_addr_build_add_request(struct rtnl_addr *, int,
452 					    struct nl_msg **);
453 extern int	rtnl_addr_add(struct nl_sock *, struct rtnl_addr *, int);
454 
455 extern int	rtnl_addr_build_delete_request(struct rtnl_addr *, int,
456 					       struct nl_msg **);
457 extern int	rtnl_addr_delete(struct nl_sock *,
458 				 struct rtnl_addr *, int);
459 
460 %cstring_output_maxsize(char *buf, size_t len)
461 extern char *	rtnl_addr_flags2str(int, char *buf, size_t len);
462 extern int	rtnl_addr_str2flags(const char *);
463 
464 extern int	rtnl_addr_set_label(struct rtnl_addr *, const char *);
465 extern char *	rtnl_addr_get_label(struct rtnl_addr *);
466 
467 extern void	rtnl_addr_set_ifindex(struct rtnl_addr *, int);
468 extern int	rtnl_addr_get_ifindex(struct rtnl_addr *);
469 
470 extern void	rtnl_addr_set_link(struct rtnl_addr *, struct rtnl_link *);
471 extern struct rtnl_link *
472 		rtnl_addr_get_link(struct rtnl_addr *);
473 extern void	rtnl_addr_set_family(struct rtnl_addr *, int);
474 extern int	rtnl_addr_get_family(struct rtnl_addr *);
475 
476 extern void	rtnl_addr_set_prefixlen(struct rtnl_addr *, int);
477 extern int	rtnl_addr_get_prefixlen(struct rtnl_addr *);
478 
479 extern void	rtnl_addr_set_scope(struct rtnl_addr *, int);
480 extern int	rtnl_addr_get_scope(struct rtnl_addr *);
481 
482 extern void	rtnl_addr_set_flags(struct rtnl_addr *, unsigned int);
483 extern void	rtnl_addr_unset_flags(struct rtnl_addr *, unsigned int);
484 extern unsigned int rtnl_addr_get_flags(struct rtnl_addr *);
485 
486 extern int	rtnl_addr_set_local(struct rtnl_addr *,
487 					    struct nl_addr *);
488 extern struct nl_addr *rtnl_addr_get_local(struct rtnl_addr *);
489 
490 extern int	rtnl_addr_set_peer(struct rtnl_addr *, struct nl_addr *);
491 extern struct nl_addr *rtnl_addr_get_peer(struct rtnl_addr *);
492 
493 extern int	rtnl_addr_set_broadcast(struct rtnl_addr *, struct nl_addr *);
494 extern struct nl_addr *rtnl_addr_get_broadcast(struct rtnl_addr *);
495 
496 extern int	rtnl_addr_set_multicast(struct rtnl_addr *, struct nl_addr *);
497 extern struct nl_addr *rtnl_addr_get_multicast(struct rtnl_addr *);
498 
499 extern int	rtnl_addr_set_anycast(struct rtnl_addr *, struct nl_addr *);
500 extern struct nl_addr *rtnl_addr_get_anycast(struct rtnl_addr *);
501 
502 extern uint32_t rtnl_addr_get_valid_lifetime(struct rtnl_addr *);
503 extern void	rtnl_addr_set_valid_lifetime(struct rtnl_addr *, uint32_t);
504 extern uint32_t rtnl_addr_get_preferred_lifetime(struct rtnl_addr *);
505 extern void	rtnl_addr_set_preferred_lifetime(struct rtnl_addr *, uint32_t);
506 extern uint32_t rtnl_addr_get_create_time(struct rtnl_addr *);
507 extern uint32_t rtnl_addr_get_last_update_time(struct rtnl_addr *);
508