Lines Matching refs:fi
64 #define for_nexthops(fi) { int nhsel; const struct dn_fib_nh *nh;\ argument
65 for(nhsel = 0, nh = (fi)->fib_nh; nhsel < (fi)->fib_nhs; nh++, nhsel++)
67 #define endfor_nexthops(fi) } argument
229 …fib_nh_match(struct rtmsg *r, struct nlmsghdr *nlh, struct nlattr *attrs[], struct dn_fib_info *fi) in dn_fib_nh_match() argument
235 nla_get_u32(attrs[RTA_PRIORITY]) != fi->fib_priority) in dn_fib_nh_match()
239 if ((!attrs[RTA_OIF] || nla_get_u32(attrs[RTA_OIF]) == fi->fib_nh->nh_oif) && in dn_fib_nh_match()
240 (!attrs[RTA_GATEWAY] || nla_get_le16(attrs[RTA_GATEWAY]) != fi->fib_nh->nh_gw)) in dn_fib_nh_match()
251 for_nexthops(fi) { in dn_fib_nh_match()
269 } endfor_nexthops(fi); in dn_fib_nh_match()
274 static inline size_t dn_fib_nlmsg_size(struct dn_fib_info *fi) in dn_fib_nlmsg_size() argument
285 if (fi->fib_nhs) { in dn_fib_nlmsg_size()
295 payload += nla_total_size(fi->fib_nhs * nhsize); in dn_fib_nlmsg_size()
303 struct dn_fib_info *fi, unsigned int flags) in dn_fib_dump_info() argument
318 rtm->rtm_flags = fi->fib_flags; in dn_fib_dump_info()
321 rtm->rtm_protocol = fi->fib_protocol; in dn_fib_dump_info()
330 if (fi->fib_priority && in dn_fib_dump_info()
331 nla_put_u32(skb, RTA_PRIORITY, fi->fib_priority) < 0) in dn_fib_dump_info()
334 if (rtnetlink_put_metrics(skb, fi->fib_metrics) < 0) in dn_fib_dump_info()
337 if (fi->fib_nhs == 1) { in dn_fib_dump_info()
338 if (fi->fib_nh->nh_gw && in dn_fib_dump_info()
339 nla_put_le16(skb, RTA_GATEWAY, fi->fib_nh->nh_gw) < 0) in dn_fib_dump_info()
342 if (fi->fib_nh->nh_oif && in dn_fib_dump_info()
343 nla_put_u32(skb, RTA_OIF, fi->fib_nh->nh_oif) < 0) in dn_fib_dump_info()
347 if (fi->fib_nhs > 1) { in dn_fib_dump_info()
354 for_nexthops(fi) { in dn_fib_dump_info()
367 } endfor_nexthops(fi); in dn_fib_dump_info()
534 struct dn_fib_info *fi; in dn_fib_table_insert() local
555 if ((fi = dn_fib_create_info(r, attrs, n, &err)) == NULL) in dn_fib_table_insert()
581 if (fi->fib_priority <= DN_FIB_INFO(f)->fib_priority) in dn_fib_table_insert()
586 fi->fib_priority == DN_FIB_INFO(f)->fib_priority) { in dn_fib_table_insert()
604 if (fi->fib_priority != DN_FIB_INFO(f)->fib_priority) in dn_fib_table_insert()
608 DN_FIB_INFO(f) == fi) in dn_fib_table_insert()
632 DN_FIB_INFO(new_f) = fi; in dn_fib_table_insert()
660 dn_fib_release_info(fi); in dn_fib_table_insert()
702 struct dn_fib_info *fi = DN_FIB_INFO(f); in dn_fib_table_delete() local
713 fi->fib_protocol == r->rtm_protocol) && in dn_fib_table_delete()
714 dn_fib_nh_match(r, n, attrs, fi) == 0) in dn_fib_table_delete()
753 struct dn_fib_info *fi = DN_FIB_INFO(f); in dn_flush_list() local
755 if (fi && ((f->fn_state & DN_S_ZOMBIE) || (fi->fib_flags & RTNH_F_DEAD))) { in dn_flush_list()