Lines Matching full:link
7 * @ingroup link
9 * ip6tnl link module
12 * \b Link Type Name: "ip6tnl"
28 #include <netlink/route/link/ip6tnl.h>
31 #include "link-api.h"
51 uint32_t link; member
72 static int ip6_tnl_alloc(struct rtnl_link *link) in ip6_tnl_alloc() argument
76 if (link->l_info) in ip6_tnl_alloc()
77 memset(link->l_info, 0, sizeof(*ip6_tnl)); in ip6_tnl_alloc()
83 link->l_info = ip6_tnl; in ip6_tnl_alloc()
89 static int ip6_tnl_parse(struct rtnl_link *link, struct nlattr *data, in ip6_tnl_parse() argument
96 NL_DBG(3, "Parsing IP6_TNL link info\n"); in ip6_tnl_parse()
102 err = ip6_tnl_alloc(link); in ip6_tnl_parse()
106 ip6_tnl = link->l_info; in ip6_tnl_parse()
109 ip6_tnl->link = nla_get_u32(tb[IFLA_IPTUN_LINK]); in ip6_tnl_parse()
164 static int ip6_tnl_put_attrs(struct nl_msg *msg, struct rtnl_link *link) in ip6_tnl_put_attrs() argument
166 struct ip6_tnl_info *ip6_tnl = link->l_info; in ip6_tnl_put_attrs()
174 NLA_PUT_U32(msg, IFLA_IPTUN_LINK, ip6_tnl->link); in ip6_tnl_put_attrs()
212 static void ip6_tnl_free(struct rtnl_link *link) in ip6_tnl_free() argument
214 struct ip6_tnl_info *ip6_tnl = link->l_info; in ip6_tnl_free()
217 link->l_info = NULL; in ip6_tnl_free()
220 static void ip6_tnl_dump_line(struct rtnl_link *link, struct nl_dump_params *p) in ip6_tnl_dump_line() argument
222 nl_dump(p, "ip6_tnl : %s", link->l_name); in ip6_tnl_dump_line()
225 static void ip6_tnl_dump_details(struct rtnl_link *link, struct nl_dump_params *p) in ip6_tnl_dump_details() argument
227 struct ip6_tnl_info *ip6_tnl = link->l_info; in ip6_tnl_dump_details()
232 nl_dump(p, " link "); in ip6_tnl_dump_details()
235 parent = link_lookup(link->ce_cache, ip6_tnl->link); in ip6_tnl_dump_details()
242 nl_dump_line(p, "%u\n", ip6_tnl->link); in ip6_tnl_dump_details()
327 #define IS_IP6_TNL_LINK_ASSERT(link)\ argument
328 if ((link)->l_info_ops != &ip6_tnl_info_ops) {\
329 APPBUG("Link is not a ip6_tnl link. set type \"ip6tnl\" first.");\
335 struct rtnl_link *link; in rtnl_link_ip6_tnl_alloc() local
338 link = rtnl_link_alloc(); in rtnl_link_ip6_tnl_alloc()
339 if (!link) in rtnl_link_ip6_tnl_alloc()
342 err = rtnl_link_set_type(link, "ip6tnl"); in rtnl_link_ip6_tnl_alloc()
344 rtnl_link_put(link); in rtnl_link_ip6_tnl_alloc()
348 return link; in rtnl_link_ip6_tnl_alloc()
352 * Check if link is a IP6_TNL link
353 * @arg link Link object
355 * @return True if link is a IP6_TNL link, otherwise false is returned.
357 int rtnl_link_is_ip6_tnl(struct rtnl_link *link) in rtnl_link_is_ip6_tnl() argument
359 return link->l_info_ops && !strcmp(link->l_info_ops->io_name, "ip6tnl"); in rtnl_link_is_ip6_tnl()
372 struct rtnl_link *link; in rtnl_link_ip6_tnl_add() local
375 link = rtnl_link_ip6_tnl_alloc(); in rtnl_link_ip6_tnl_add()
376 if (!link) in rtnl_link_ip6_tnl_add()
380 rtnl_link_set_name(link, name); in rtnl_link_ip6_tnl_add()
382 err = rtnl_link_add(sk, link, NLM_F_CREATE); in rtnl_link_ip6_tnl_add()
383 rtnl_link_put(link); in rtnl_link_ip6_tnl_add()
390 * @arg link Link object
395 int rtnl_link_ip6_tnl_set_link(struct rtnl_link *link, uint32_t index) in rtnl_link_ip6_tnl_set_link() argument
397 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_set_link()
399 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_set_link()
401 ip6_tnl->link = index; in rtnl_link_ip6_tnl_set_link()
409 * @arg link Link object
413 uint32_t rtnl_link_ip6_tnl_get_link(struct rtnl_link *link) in rtnl_link_ip6_tnl_get_link() argument
415 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_get_link()
417 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_get_link()
419 return ip6_tnl->link; in rtnl_link_ip6_tnl_get_link()
424 * @arg link Link object
429 int rtnl_link_ip6_tnl_set_local(struct rtnl_link *link, struct in6_addr *addr) in rtnl_link_ip6_tnl_set_local() argument
431 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_set_local()
433 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_set_local()
443 * @arg link Link object
447 int rtnl_link_ip6_tnl_get_local(struct rtnl_link *link, struct in6_addr *addr) in rtnl_link_ip6_tnl_get_local() argument
449 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_get_local()
451 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_get_local()
460 * @arg link Link object
465 int rtnl_link_ip6_tnl_set_remote(struct rtnl_link *link, struct in6_addr *addr) in rtnl_link_ip6_tnl_set_remote() argument
467 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_set_remote()
469 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_set_remote()
479 * @arg link Link object
483 int rtnl_link_ip6_tnl_get_remote(struct rtnl_link *link, struct in6_addr *addr) in rtnl_link_ip6_tnl_get_remote() argument
485 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_get_remote()
487 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_get_remote()
496 * @arg link Link object
501 int rtnl_link_ip6_tnl_set_ttl(struct rtnl_link *link, uint8_t ttl) in rtnl_link_ip6_tnl_set_ttl() argument
503 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_set_ttl()
505 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_set_ttl()
515 * @arg link Link object
519 uint8_t rtnl_link_ip6_tnl_get_ttl(struct rtnl_link *link) in rtnl_link_ip6_tnl_get_ttl() argument
521 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_get_ttl()
523 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_get_ttl()
530 * @arg link Link object
535 int rtnl_link_ip6_tnl_set_tos(struct rtnl_link *link, uint8_t tos) in rtnl_link_ip6_tnl_set_tos() argument
537 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_set_tos()
539 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_set_tos()
549 * @arg link Link object
553 uint8_t rtnl_link_ip6_tnl_get_tos(struct rtnl_link *link) in rtnl_link_ip6_tnl_get_tos() argument
555 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_get_tos()
557 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_get_tos()
564 * @arg link Link object
569 int rtnl_link_ip6_tnl_set_encaplimit(struct rtnl_link *link, uint8_t encap_limit) in rtnl_link_ip6_tnl_set_encaplimit() argument
571 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_set_encaplimit()
573 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_set_encaplimit()
583 * @arg link Link object
587 uint8_t rtnl_link_ip6_tnl_get_encaplimit(struct rtnl_link *link) in rtnl_link_ip6_tnl_get_encaplimit() argument
589 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_get_encaplimit()
591 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_get_encaplimit()
598 * @arg link Link object
603 int rtnl_link_ip6_tnl_set_flowinfo(struct rtnl_link *link, uint32_t flowinfo) in rtnl_link_ip6_tnl_set_flowinfo() argument
605 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_set_flowinfo()
607 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_set_flowinfo()
617 * @arg link Link object
621 uint32_t rtnl_link_ip6_tnl_get_flowinfo(struct rtnl_link *link) in rtnl_link_ip6_tnl_get_flowinfo() argument
623 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_get_flowinfo()
625 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_get_flowinfo()
632 * @arg link Link object
637 int rtnl_link_ip6_tnl_set_flags(struct rtnl_link *link, uint32_t flags) in rtnl_link_ip6_tnl_set_flags() argument
639 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_set_flags()
641 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_set_flags()
651 * @arg link Link object
655 uint32_t rtnl_link_ip6_tnl_get_flags(struct rtnl_link *link) in rtnl_link_ip6_tnl_get_flags() argument
657 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_get_flags()
659 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_get_flags()
666 * @arg link Link object
671 int rtnl_link_ip6_tnl_set_proto(struct rtnl_link *link, uint8_t proto) in rtnl_link_ip6_tnl_set_proto() argument
673 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_set_proto()
675 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_set_proto()
685 * @arg link Link object
689 uint8_t rtnl_link_ip6_tnl_get_proto(struct rtnl_link *link) in rtnl_link_ip6_tnl_get_proto() argument
691 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_get_proto()
693 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_get_proto()
700 * @arg link Link object
705 int rtnl_link_ip6_tnl_set_fwmark(struct rtnl_link *link, uint32_t fwmark) in rtnl_link_ip6_tnl_set_fwmark() argument
707 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_set_fwmark()
709 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_set_fwmark()
719 * @arg link Link object
724 int rtnl_link_ip6_tnl_get_fwmark(struct rtnl_link *link, uint32_t *fwmark) in rtnl_link_ip6_tnl_get_fwmark() argument
726 struct ip6_tnl_info *ip6_tnl = link->l_info; in rtnl_link_ip6_tnl_get_fwmark()
728 IS_IP6_TNL_LINK_ASSERT(link); in rtnl_link_ip6_tnl_get_fwmark()