Lines Matching full:link
2 * lib/route/link/ipvti.c IPVTI Link Info
13 * @ingroup link
15 * ipvti link module
18 * \b Link Type Name: "ipvti"
31 #include <netlink/route/link/ipvti.h>
32 #include <netlink-private/route/link/api.h>
43 uint32_t link; member
59 static int ipvti_alloc(struct rtnl_link *link) in ipvti_alloc() argument
63 if (link->l_info) in ipvti_alloc()
64 memset(link->l_info, 0, sizeof(*ipvti)); in ipvti_alloc()
70 link->l_info = ipvti; in ipvti_alloc()
76 static int ipvti_parse(struct rtnl_link *link, struct nlattr *data, in ipvti_parse() argument
83 NL_DBG(3, "Parsing IPVTI link info\n"); in ipvti_parse()
89 err = ipvti_alloc(link); in ipvti_parse()
93 ipvti = link->l_info; in ipvti_parse()
96 ipvti->link = nla_get_u32(tb[IFLA_VTI_LINK]); in ipvti_parse()
126 static int ipvti_put_attrs(struct nl_msg *msg, struct rtnl_link *link) in ipvti_put_attrs() argument
128 struct ipvti_info *ipvti = link->l_info; in ipvti_put_attrs()
136 NLA_PUT_U32(msg, IFLA_VTI_LINK, ipvti->link); in ipvti_put_attrs()
157 static void ipvti_free(struct rtnl_link *link) in ipvti_free() argument
159 struct ipvti_info *ipvti = link->l_info; in ipvti_free()
162 link->l_info = NULL; in ipvti_free()
165 static void ipvti_dump_line(struct rtnl_link *link, struct nl_dump_params *p) in ipvti_dump_line() argument
167 nl_dump(p, "ipvti : %s", link->l_name); in ipvti_dump_line()
170 static void ipvti_dump_details(struct rtnl_link *link, struct nl_dump_params *p) in ipvti_dump_details() argument
172 struct ipvti_info *ipvti = link->l_info; in ipvti_dump_details()
177 nl_dump(p, " link "); in ipvti_dump_details()
180 parent = link_lookup(link->ce_cache, ipvti->link); in ipvti_dump_details()
187 nl_dump_line(p, "%u\n", ipvti->link); in ipvti_dump_details()
251 #define IS_IPVTI_LINK_ASSERT(link) \ argument
252 if ((link)->l_info_ops != &ipvti_info_ops) { \
253 APPBUG("Link is not a ipvti link. set type \vti\" first."); \
259 struct rtnl_link *link; in rtnl_link_ipvti_alloc() local
262 link = rtnl_link_alloc(); in rtnl_link_ipvti_alloc()
263 if (!link) in rtnl_link_ipvti_alloc()
266 err = rtnl_link_set_type(link, "vti"); in rtnl_link_ipvti_alloc()
268 rtnl_link_put(link); in rtnl_link_ipvti_alloc()
272 return link; in rtnl_link_ipvti_alloc()
276 * Check if link is a IPVTI link
277 * @arg link Link object
279 * @return True if link is a IPVTI link, otherwise 0 is returned.
281 int rtnl_link_is_ipvti(struct rtnl_link *link) in rtnl_link_is_ipvti() argument
283 return link->l_info_ops && !strcmp(link->l_info_ops->io_name, "vti"); in rtnl_link_is_ipvti()
295 struct rtnl_link *link; in rtnl_link_ipvti_add() local
298 link = rtnl_link_ipvti_alloc(); in rtnl_link_ipvti_add()
299 if (!link) in rtnl_link_ipvti_add()
303 rtnl_link_set_name(link, name); in rtnl_link_ipvti_add()
305 err = rtnl_link_add(sk, link, NLM_F_CREATE); in rtnl_link_ipvti_add()
306 rtnl_link_put(link); in rtnl_link_ipvti_add()
312 * @arg link Link object
317 int rtnl_link_ipvti_set_link(struct rtnl_link *link, uint32_t index) in rtnl_link_ipvti_set_link() argument
319 struct ipvti_info *ipvti = link->l_info; in rtnl_link_ipvti_set_link()
321 IS_IPVTI_LINK_ASSERT(link); in rtnl_link_ipvti_set_link()
323 ipvti->link = index; in rtnl_link_ipvti_set_link()
331 * @arg link Link object
335 uint32_t rtnl_link_ipvti_get_link(struct rtnl_link *link) in rtnl_link_ipvti_get_link() argument
337 struct ipvti_info *ipvti = link->l_info; in rtnl_link_ipvti_get_link()
339 IS_IPVTI_LINK_ASSERT(link); in rtnl_link_ipvti_get_link()
341 return ipvti->link; in rtnl_link_ipvti_get_link()
346 * @arg link Link object
351 int rtnl_link_ipvti_set_ikey(struct rtnl_link *link, uint32_t ikey) in rtnl_link_ipvti_set_ikey() argument
353 struct ipvti_info *ipvti = link->l_info; in rtnl_link_ipvti_set_ikey()
355 IS_IPVTI_LINK_ASSERT(link); in rtnl_link_ipvti_set_ikey()
365 * @arg link Link object
369 uint32_t rtnl_link_ipvti_get_ikey(struct rtnl_link *link) in rtnl_link_ipvti_get_ikey() argument
371 struct ipvti_info *ipvti = link->l_info; in rtnl_link_ipvti_get_ikey()
373 IS_IPVTI_LINK_ASSERT(link); in rtnl_link_ipvti_get_ikey()
380 * @arg link Link object
385 int rtnl_link_ipvti_set_okey(struct rtnl_link *link, uint32_t okey) in rtnl_link_ipvti_set_okey() argument
387 struct ipvti_info *ipvti = link->l_info; in rtnl_link_ipvti_set_okey()
389 IS_IPVTI_LINK_ASSERT(link); in rtnl_link_ipvti_set_okey()
399 * @arg link Link object
403 uint32_t rtnl_link_ipvti_get_okey(struct rtnl_link *link) in rtnl_link_ipvti_get_okey() argument
405 struct ipvti_info *ipvti = link->l_info; in rtnl_link_ipvti_get_okey()
407 IS_IPVTI_LINK_ASSERT(link); in rtnl_link_ipvti_get_okey()
414 * @arg link Link object
419 int rtnl_link_ipvti_set_local(struct rtnl_link *link, uint32_t addr) in rtnl_link_ipvti_set_local() argument
421 struct ipvti_info *ipvti = link->l_info; in rtnl_link_ipvti_set_local()
423 IS_IPVTI_LINK_ASSERT(link); in rtnl_link_ipvti_set_local()
433 * @arg link Link object
437 uint32_t rtnl_link_ipvti_get_local(struct rtnl_link *link) in rtnl_link_ipvti_get_local() argument
439 struct ipvti_info *ipvti = link->l_info; in rtnl_link_ipvti_get_local()
441 IS_IPVTI_LINK_ASSERT(link); in rtnl_link_ipvti_get_local()
448 * @arg link Link object
453 int rtnl_link_ipvti_set_remote(struct rtnl_link *link, uint32_t remote) in rtnl_link_ipvti_set_remote() argument
455 struct ipvti_info *ipvti = link->l_info; in rtnl_link_ipvti_set_remote()
457 IS_IPVTI_LINK_ASSERT(link); in rtnl_link_ipvti_set_remote()
467 * @arg link Link object
471 uint32_t rtnl_link_ipvti_get_remote(struct rtnl_link *link) in rtnl_link_ipvti_get_remote() argument
473 struct ipvti_info *ipvti = link->l_info; in rtnl_link_ipvti_get_remote()
475 IS_IPVTI_LINK_ASSERT(link); in rtnl_link_ipvti_get_remote()