Lines Matching refs:ifa

553 			const struct in_ifaddr *ifa;  in rtentry_to_fib_config()  local
562 in_dev_for_each_ifa_rtnl_net(net, ifa, in_dev) { in rtentry_to_fib_config()
563 if (strcmp(ifa->ifa_label, devname) == 0) in rtentry_to_fib_config()
567 if (!ifa) in rtentry_to_fib_config()
569 cfg->fc_prefsrc = ifa->ifa_local; in rtentry_to_fib_config()
1099 struct in_ifaddr *ifa, u32 rt_priority) in fib_magic() argument
1101 struct net *net = dev_net(ifa->ifa_dev->dev); in fib_magic()
1102 u32 tb_id = l3mdev_fib_table(ifa->ifa_dev->dev); in fib_magic()
1110 .fc_prefsrc = ifa->ifa_local, in fib_magic()
1111 .fc_oif = ifa->ifa_dev->dev->ifindex, in fib_magic()
1138 void fib_add_ifaddr(struct in_ifaddr *ifa) in fib_add_ifaddr() argument
1140 struct in_device *in_dev = ifa->ifa_dev; in fib_add_ifaddr()
1142 struct in_ifaddr *prim = ifa; in fib_add_ifaddr()
1143 __be32 mask = ifa->ifa_mask; in fib_add_ifaddr()
1144 __be32 addr = ifa->ifa_local; in fib_add_ifaddr()
1145 __be32 prefix = ifa->ifa_address & mask; in fib_add_ifaddr()
1147 if (ifa->ifa_flags & IFA_F_SECONDARY) { in fib_add_ifaddr()
1161 if (ifa->ifa_broadcast && ifa->ifa_broadcast != htonl(0xFFFFFFFF)) { in fib_add_ifaddr()
1162 fib_magic(RTM_NEWROUTE, RTN_BROADCAST, ifa->ifa_broadcast, 32, in fib_add_ifaddr()
1164 arp_invalidate(dev, ifa->ifa_broadcast, false); in fib_add_ifaddr()
1167 if (!ipv4_is_zeronet(prefix) && !(ifa->ifa_flags & IFA_F_SECONDARY) && in fib_add_ifaddr()
1168 (prefix != addr || ifa->ifa_prefixlen < 32)) { in fib_add_ifaddr()
1169 if (!(ifa->ifa_flags & IFA_F_NOPREFIXROUTE)) in fib_add_ifaddr()
1172 prefix, ifa->ifa_prefixlen, prim, in fib_add_ifaddr()
1173 ifa->ifa_rt_priority); in fib_add_ifaddr()
1176 if (ifa->ifa_prefixlen < 31) { in fib_add_ifaddr()
1184 void fib_modify_prefix_metric(struct in_ifaddr *ifa, u32 new_metric) in fib_modify_prefix_metric() argument
1186 __be32 prefix = ifa->ifa_address & ifa->ifa_mask; in fib_modify_prefix_metric()
1187 struct in_device *in_dev = ifa->ifa_dev; in fib_modify_prefix_metric()
1191 ifa->ifa_flags & (IFA_F_SECONDARY | IFA_F_NOPREFIXROUTE) || in fib_modify_prefix_metric()
1193 (prefix == ifa->ifa_local && ifa->ifa_prefixlen == 32)) in fib_modify_prefix_metric()
1199 prefix, ifa->ifa_prefixlen, ifa, new_metric); in fib_modify_prefix_metric()
1204 prefix, ifa->ifa_prefixlen, ifa, ifa->ifa_rt_priority); in fib_modify_prefix_metric()
1212 void fib_del_ifaddr(struct in_ifaddr *ifa, struct in_ifaddr *iprim) in fib_del_ifaddr() argument
1214 struct in_device *in_dev = ifa->ifa_dev; in fib_del_ifaddr()
1217 struct in_ifaddr *prim = ifa, *prim1 = NULL; in fib_del_ifaddr()
1218 __be32 brd = ifa->ifa_address | ~ifa->ifa_mask; in fib_del_ifaddr()
1219 __be32 any = ifa->ifa_address & ifa->ifa_mask; in fib_del_ifaddr()
1229 if (ifa->ifa_flags & IFA_F_SECONDARY) { in fib_del_ifaddr()
1230 prim = inet_ifa_byprefix(in_dev, any, ifa->ifa_mask); in fib_del_ifaddr()
1244 (any != ifa->ifa_local || ifa->ifa_prefixlen < 32)) { in fib_del_ifaddr()
1245 if (!(ifa->ifa_flags & IFA_F_NOPREFIXROUTE)) in fib_del_ifaddr()
1248 any, ifa->ifa_prefixlen, prim, 0); in fib_del_ifaddr()
1262 if (ifa1 == ifa) { in fib_del_ifaddr()
1305 if (ifa->ifa_local == ifa1->ifa_local) in fib_del_ifaddr()
1307 if (ifa->ifa_broadcast == ifa1->ifa_broadcast) in fib_del_ifaddr()
1319 if (ifa->ifa_broadcast == brd1 || in fib_del_ifaddr()
1320 ifa->ifa_broadcast == any1) in fib_del_ifaddr()
1333 fib_magic(RTM_DELROUTE, RTN_BROADCAST, ifa->ifa_broadcast, 32, in fib_del_ifaddr()
1335 if (subnet && ifa->ifa_prefixlen < 31) { in fib_del_ifaddr()
1346 fib_magic(RTM_DELROUTE, RTN_LOCAL, ifa->ifa_local, 32, prim, 0); in fib_del_ifaddr()
1350 ifa->ifa_local); in fib_del_ifaddr()
1358 if (fib_sync_down_addr(dev, ifa->ifa_local)) in fib_del_ifaddr()
1463 struct in_ifaddr *ifa = ptr; in fib_inetaddr_event() local
1464 struct net_device *dev = ifa->ifa_dev->dev; in fib_inetaddr_event()
1469 fib_add_ifaddr(ifa); in fib_inetaddr_event()
1477 fib_del_ifaddr(ifa, NULL); in fib_inetaddr_event()
1479 if (!ifa->ifa_dev->ifa_list) { in fib_inetaddr_event()
1499 struct in_ifaddr *ifa; in fib_netdev_event() local
1514 in_dev_for_each_ifa_rtnl(ifa, in_dev) { in fib_netdev_event()
1515 fib_add_ifaddr(ifa); in fib_netdev_event()