Lines Matching refs:attrs

263 struct dn_fib_info *dn_fib_create_info(const struct rtmsg *r, struct nlattr *attrs[],  in dn_fib_create_info()  argument
277 if (attrs[RTA_MULTIPATH] && in dn_fib_create_info()
278 (nhs = dn_fib_count_nhs(attrs[RTA_MULTIPATH])) == 0) in dn_fib_create_info()
290 if (attrs[RTA_PRIORITY]) in dn_fib_create_info()
291 fi->fib_priority = nla_get_u32(attrs[RTA_PRIORITY]); in dn_fib_create_info()
293 if (attrs[RTA_METRICS]) { in dn_fib_create_info()
297 nla_for_each_nested(attr, attrs[RTA_METRICS], rem) { in dn_fib_create_info()
310 if (attrs[RTA_PREFSRC]) in dn_fib_create_info()
311 fi->fib_prefsrc = nla_get_le16(attrs[RTA_PREFSRC]); in dn_fib_create_info()
313 if (attrs[RTA_MULTIPATH]) { in dn_fib_create_info()
314 if ((err = dn_fib_get_nhs(fi, attrs[RTA_MULTIPATH], r)) != 0) in dn_fib_create_info()
317 if (attrs[RTA_OIF] && in dn_fib_create_info()
318 fi->fib_nh->nh_oif != nla_get_u32(attrs[RTA_OIF])) in dn_fib_create_info()
321 if (attrs[RTA_GATEWAY] && in dn_fib_create_info()
322 fi->fib_nh->nh_gw != nla_get_le16(attrs[RTA_GATEWAY])) in dn_fib_create_info()
327 if (attrs[RTA_OIF]) in dn_fib_create_info()
328 nh->nh_oif = nla_get_u32(attrs[RTA_OIF]); in dn_fib_create_info()
330 if (attrs[RTA_GATEWAY]) in dn_fib_create_info()
331 nh->nh_gw = nla_get_le16(attrs[RTA_GATEWAY]); in dn_fib_create_info()
338 if (!attrs[RTA_GATEWAY] || nhs != 1 || attrs[RTA_OIF]) in dn_fib_create_info()
341 fi->fib_nh->nh_gw = nla_get_le16(attrs[RTA_GATEWAY]); in dn_fib_create_info()
346 if (attrs[RTA_GATEWAY] || attrs[RTA_OIF] || attrs[RTA_MULTIPATH]) in dn_fib_create_info()
374 if (r->rtm_type != RTN_LOCAL || !attrs[RTA_DST] || in dn_fib_create_info()
375 fi->fib_prefsrc != nla_get_le16(attrs[RTA_DST])) in dn_fib_create_info()
493 static inline u32 rtm_get_table(struct nlattr *attrs[], u8 table) in rtm_get_table() argument
495 if (attrs[RTA_TABLE]) in rtm_get_table()
496 table = nla_get_u32(attrs[RTA_TABLE]); in rtm_get_table()
506 struct nlattr *attrs[RTA_MAX+1]; in dn_fib_rtm_delroute() local
515 err = nlmsg_parse(nlh, sizeof(*r), attrs, RTA_MAX, rtm_dn_policy); in dn_fib_rtm_delroute()
519 tb = dn_fib_get_table(rtm_get_table(attrs, r->rtm_table), 0); in dn_fib_rtm_delroute()
523 return tb->delete(tb, r, attrs, nlh, &NETLINK_CB(skb)); in dn_fib_rtm_delroute()
531 struct nlattr *attrs[RTA_MAX+1]; in dn_fib_rtm_newroute() local
540 err = nlmsg_parse(nlh, sizeof(*r), attrs, RTA_MAX, rtm_dn_policy); in dn_fib_rtm_newroute()
544 tb = dn_fib_get_table(rtm_get_table(attrs, r->rtm_table), 1); in dn_fib_rtm_newroute()
548 return tb->insert(tb, r, attrs, nlh, &NETLINK_CB(skb)); in dn_fib_rtm_newroute()
576 struct nlattr *attrs[RTA_MAX+1] = { in fib_magic() local
605 tb->insert(tb, &req.rtm, attrs, &req.nlh, NULL); in fib_magic()
607 tb->delete(tb, &req.rtm, attrs, &req.nlh, NULL); in fib_magic()