Lines Matching full:link
2 * lib/route/link/ipip.c IPIP Link Info
13 * @ingroup link
15 * ipip link module
18 * \b Link Type Name: "ipip"
31 #include <netlink/route/link/ipip.h>
32 #include <netlink-private/route/link/api.h>
47 uint32_t link; member
62 static int ipip_alloc(struct rtnl_link *link) in ipip_alloc() argument
66 if (link->l_info) in ipip_alloc()
67 memset(link->l_info, 0, sizeof(*ipip)); in ipip_alloc()
73 link->l_info = ipip; in ipip_alloc()
79 static int ipip_parse(struct rtnl_link *link, struct nlattr *data, in ipip_parse() argument
86 NL_DBG(3, "Parsing IPIP link info\n"); in ipip_parse()
92 err = ipip_alloc(link); in ipip_parse()
96 ipip = link->l_info; in ipip_parse()
99 ipip->link = nla_get_u32(tb[IFLA_IPTUN_LINK]); in ipip_parse()
134 static int ipip_put_attrs(struct nl_msg *msg, struct rtnl_link *link) in ipip_put_attrs() argument
136 struct ipip_info *ipip = link->l_info; in ipip_put_attrs()
144 NLA_PUT_U32(msg, IFLA_IPTUN_LINK, ipip->link); in ipip_put_attrs()
167 static void ipip_free(struct rtnl_link *link) in ipip_free() argument
169 struct ipip_info *ipip = link->l_info; in ipip_free()
172 link->l_info = NULL; in ipip_free()
175 static void ipip_dump_line(struct rtnl_link *link, struct nl_dump_params *p) in ipip_dump_line() argument
177 nl_dump(p, "ipip : %s", link->l_name); in ipip_dump_line()
180 static void ipip_dump_details(struct rtnl_link *link, struct nl_dump_params *p) in ipip_dump_details() argument
182 struct ipip_info *ipip = link->l_info; in ipip_dump_details()
187 nl_dump(p, " link "); in ipip_dump_details()
190 parent = link_lookup(link->ce_cache, ipip->link); in ipip_dump_details()
197 nl_dump_line(p, "%u\n", ipip->link); in ipip_dump_details()
266 #define IS_IPIP_LINK_ASSERT(link) \ argument
267 if ((link)->l_info_ops != &ipip_info_ops) { \
268 APPBUG("Link is not a ipip link. set type \"ipip\" first."); \
274 struct rtnl_link *link; in rtnl_link_ipip_alloc() local
277 link = rtnl_link_alloc(); in rtnl_link_ipip_alloc()
278 if (!link) in rtnl_link_ipip_alloc()
281 err = rtnl_link_set_type(link, "ipip"); in rtnl_link_ipip_alloc()
283 rtnl_link_put(link); in rtnl_link_ipip_alloc()
287 return link; in rtnl_link_ipip_alloc()
291 * Check if link is a IPIP link
292 * @arg link Link object
294 * @return True if link is a IPIP link, otherwise false is returned.
296 int rtnl_link_is_ipip(struct rtnl_link *link) in rtnl_link_is_ipip() argument
298 return link->l_info_ops && !strcmp(link->l_info_ops->io_name, "ipip"); in rtnl_link_is_ipip()
311 struct rtnl_link *link; in rtnl_link_ipip_add() local
314 link = rtnl_link_ipip_alloc(); in rtnl_link_ipip_add()
315 if (!link) in rtnl_link_ipip_add()
319 rtnl_link_set_name(link, name); in rtnl_link_ipip_add()
321 err = rtnl_link_add(sk, link, NLM_F_CREATE); in rtnl_link_ipip_add()
322 rtnl_link_put(link); in rtnl_link_ipip_add()
329 * @arg link Link object
334 int rtnl_link_ipip_set_link(struct rtnl_link *link, uint32_t index) in rtnl_link_ipip_set_link() argument
336 struct ipip_info *ipip = link->l_info; in rtnl_link_ipip_set_link()
338 IS_IPIP_LINK_ASSERT(link); in rtnl_link_ipip_set_link()
340 ipip->link = index; in rtnl_link_ipip_set_link()
348 * @arg link Link object
352 uint32_t rtnl_link_ipip_get_link(struct rtnl_link *link) in rtnl_link_ipip_get_link() argument
354 struct ipip_info *ipip = link->l_info; in rtnl_link_ipip_get_link()
356 IS_IPIP_LINK_ASSERT(link); in rtnl_link_ipip_get_link()
358 return ipip->link; in rtnl_link_ipip_get_link()
363 * @arg link Link object
368 int rtnl_link_ipip_set_local(struct rtnl_link *link, uint32_t addr) in rtnl_link_ipip_set_local() argument
370 struct ipip_info *ipip = link->l_info; in rtnl_link_ipip_set_local()
372 IS_IPIP_LINK_ASSERT(link); in rtnl_link_ipip_set_local()
382 * @arg link Link object
386 uint32_t rtnl_link_ipip_get_local(struct rtnl_link *link) in rtnl_link_ipip_get_local() argument
388 struct ipip_info *ipip = link->l_info; in rtnl_link_ipip_get_local()
390 IS_IPIP_LINK_ASSERT(link); in rtnl_link_ipip_get_local()
397 * @arg link Link object
402 int rtnl_link_ipip_set_remote(struct rtnl_link *link, uint32_t addr) in rtnl_link_ipip_set_remote() argument
404 struct ipip_info *ipip = link->l_info; in rtnl_link_ipip_set_remote()
406 IS_IPIP_LINK_ASSERT(link); in rtnl_link_ipip_set_remote()
416 * @arg link Link object
420 uint32_t rtnl_link_ipip_get_remote(struct rtnl_link *link) in rtnl_link_ipip_get_remote() argument
422 struct ipip_info *ipip = link->l_info; in rtnl_link_ipip_get_remote()
424 IS_IPIP_LINK_ASSERT(link); in rtnl_link_ipip_get_remote()
431 * @arg link Link object
436 int rtnl_link_ipip_set_ttl(struct rtnl_link *link, uint8_t ttl) in rtnl_link_ipip_set_ttl() argument
438 struct ipip_info *ipip = link->l_info; in rtnl_link_ipip_set_ttl()
440 IS_IPIP_LINK_ASSERT(link); in rtnl_link_ipip_set_ttl()
450 * @arg link Link object
454 uint8_t rtnl_link_ipip_get_ttl(struct rtnl_link *link) in rtnl_link_ipip_get_ttl() argument
456 struct ipip_info *ipip = link->l_info; in rtnl_link_ipip_get_ttl()
458 IS_IPIP_LINK_ASSERT(link); in rtnl_link_ipip_get_ttl()
465 * @arg link Link object
470 int rtnl_link_ipip_set_tos(struct rtnl_link *link, uint8_t tos) in rtnl_link_ipip_set_tos() argument
472 struct ipip_info *ipip = link->l_info; in rtnl_link_ipip_set_tos()
474 IS_IPIP_LINK_ASSERT(link); in rtnl_link_ipip_set_tos()
484 * @arg link Link object
488 uint8_t rtnl_link_ipip_get_tos(struct rtnl_link *link) in rtnl_link_ipip_get_tos() argument
490 struct ipip_info *ipip = link->l_info; in rtnl_link_ipip_get_tos()
492 IS_IPIP_LINK_ASSERT(link); in rtnl_link_ipip_get_tos()
499 * @arg link Link object
504 int rtnl_link_ipip_set_pmtudisc(struct rtnl_link *link, uint8_t pmtudisc) in rtnl_link_ipip_set_pmtudisc() argument
506 struct ipip_info *ipip = link->l_info; in rtnl_link_ipip_set_pmtudisc()
508 IS_IPIP_LINK_ASSERT(link); in rtnl_link_ipip_set_pmtudisc()
518 * @arg link Link object
522 uint8_t rtnl_link_ipip_get_pmtudisc(struct rtnl_link *link) in rtnl_link_ipip_get_pmtudisc() argument
524 struct ipip_info *ipip = link->l_info; in rtnl_link_ipip_get_pmtudisc()
526 IS_IPIP_LINK_ASSERT(link); in rtnl_link_ipip_get_pmtudisc()