Lines Matching refs:ifa
131 static void inet_hash_insert(struct net *net, struct in_ifaddr *ifa) in inet_hash_insert() argument
133 u32 hash = inet_addr_hash(net, ifa->ifa_local); in inet_hash_insert()
136 hlist_add_head_rcu(&ifa->hash, &inet_addr_lst[hash]); in inet_hash_insert()
139 static void inet_hash_remove(struct in_ifaddr *ifa) in inet_hash_remove() argument
142 hlist_del_init_rcu(&ifa->hash); in inet_hash_remove()
156 struct in_ifaddr *ifa; in __ip_dev_find() local
159 ifa = inet_lookup_ifaddr_rcu(net, addr); in __ip_dev_find()
160 if (!ifa) { in __ip_dev_find()
174 result = ifa->ifa_dev->dev; in __ip_dev_find()
187 struct in_ifaddr *ifa; in inet_lookup_ifaddr_rcu() local
189 hlist_for_each_entry_rcu(ifa, &inet_addr_lst[hash], hash) in inet_lookup_ifaddr_rcu()
190 if (ifa->ifa_local == addr && in inet_lookup_ifaddr_rcu()
191 net_eq(dev_net(ifa->ifa_dev->dev), net)) in inet_lookup_ifaddr_rcu()
192 return ifa; in inet_lookup_ifaddr_rcu()
221 struct in_ifaddr *ifa; in inet_alloc_ifa() local
223 ifa = kzalloc(sizeof(*ifa), GFP_KERNEL_ACCOUNT); in inet_alloc_ifa()
224 if (!ifa) in inet_alloc_ifa()
228 ifa->ifa_dev = in_dev; in inet_alloc_ifa()
230 INIT_HLIST_NODE(&ifa->hash); in inet_alloc_ifa()
232 return ifa; in inet_alloc_ifa()
237 struct in_ifaddr *ifa = container_of(head, struct in_ifaddr, rcu_head); in inet_rcu_free_ifa() local
239 in_dev_put(ifa->ifa_dev); in inet_rcu_free_ifa()
240 kfree(ifa); in inet_rcu_free_ifa()
243 static void inet_free_ifa(struct in_ifaddr *ifa) in inet_free_ifa() argument
249 call_rcu_hurry(&ifa->rcu_head, inet_rcu_free_ifa); in inet_free_ifa()
328 struct in_ifaddr *ifa; in inetdev_destroy() local
338 while ((ifa = rtnl_dereference(in_dev->ifa_list)) != NULL) { in inetdev_destroy()
340 inet_free_ifa(ifa); in inetdev_destroy()
367 const struct in_ifaddr *ifa; in inet_addr_onlink() local
370 in_dev_for_each_ifa_rcu(ifa, in_dev) { in inet_addr_onlink()
371 if (inet_ifa_match(a, ifa)) { in inet_addr_onlink()
372 if (!b || inet_ifa_match(b, ifa)) { in inet_addr_onlink()
387 struct in_ifaddr *ifa, *ifa1; in __inet_del_ifa() local
406 while ((ifa = rtnl_dereference(*ifap1)) != NULL) { in __inet_del_ifa()
407 if (!(ifa->ifa_flags & IFA_F_SECONDARY) && in __inet_del_ifa()
408 ifa1->ifa_scope <= ifa->ifa_scope) in __inet_del_ifa()
409 last_prim = &ifa->ifa_next; in __inet_del_ifa()
411 if (!(ifa->ifa_flags & IFA_F_SECONDARY) || in __inet_del_ifa()
412 ifa1->ifa_mask != ifa->ifa_mask || in __inet_del_ifa()
413 !inet_ifa_match(ifa1->ifa_address, ifa)) { in __inet_del_ifa()
414 ifap1 = &ifa->ifa_next; in __inet_del_ifa()
415 prev_prom = ifa; in __inet_del_ifa()
420 inet_hash_remove(ifa); in __inet_del_ifa()
421 *ifap1 = ifa->ifa_next; in __inet_del_ifa()
423 rtmsg_ifa(RTM_DELADDR, ifa, nlh, portid); in __inet_del_ifa()
425 NETDEV_DOWN, ifa); in __inet_del_ifa()
426 inet_free_ifa(ifa); in __inet_del_ifa()
428 promote = ifa; in __inet_del_ifa()
439 for (ifa = promote; ifa; ifa = rtnl_dereference(ifa->ifa_next)) { in __inet_del_ifa()
440 if (ifa1->ifa_mask == ifa->ifa_mask && in __inet_del_ifa()
441 inet_ifa_match(ifa1->ifa_address, ifa)) in __inet_del_ifa()
442 fib_del_ifaddr(ifa, ifa1); in __inet_del_ifa()
482 for (ifa = next_sec; ifa; in __inet_del_ifa()
483 ifa = rtnl_dereference(ifa->ifa_next)) { in __inet_del_ifa()
484 if (ifa1->ifa_mask != ifa->ifa_mask || in __inet_del_ifa()
485 !inet_ifa_match(ifa1->ifa_address, ifa)) in __inet_del_ifa()
487 fib_add_ifaddr(ifa); in __inet_del_ifa()
506 static int __inet_insert_ifa(struct in_ifaddr *ifa, struct nlmsghdr *nlh, in __inet_insert_ifa() argument
510 struct in_device *in_dev = ifa->ifa_dev; in __inet_insert_ifa()
517 if (!ifa->ifa_local) { in __inet_insert_ifa()
518 inet_free_ifa(ifa); in __inet_insert_ifa()
522 ifa->ifa_flags &= ~IFA_F_SECONDARY; in __inet_insert_ifa()
526 ifa->ifa_flags &= ~IPV6ONLY_FLAGS; in __inet_insert_ifa()
533 ifa->ifa_scope <= ifa1->ifa_scope) in __inet_insert_ifa()
535 if (ifa1->ifa_mask == ifa->ifa_mask && in __inet_insert_ifa()
536 inet_ifa_match(ifa1->ifa_address, ifa)) { in __inet_insert_ifa()
537 if (ifa1->ifa_local == ifa->ifa_local) { in __inet_insert_ifa()
538 inet_free_ifa(ifa); in __inet_insert_ifa()
541 if (ifa1->ifa_scope != ifa->ifa_scope) { in __inet_insert_ifa()
543 inet_free_ifa(ifa); in __inet_insert_ifa()
546 ifa->ifa_flags |= IFA_F_SECONDARY; in __inet_insert_ifa()
560 ivi.ivi_addr = ifa->ifa_address; in __inet_insert_ifa()
561 ivi.ivi_dev = ifa->ifa_dev; in __inet_insert_ifa()
567 inet_free_ifa(ifa); in __inet_insert_ifa()
571 if (!(ifa->ifa_flags & IFA_F_SECONDARY)) in __inet_insert_ifa()
574 rcu_assign_pointer(ifa->ifa_next, *ifap); in __inet_insert_ifa()
575 rcu_assign_pointer(*ifap, ifa); in __inet_insert_ifa()
577 inet_hash_insert(dev_net(in_dev->dev), ifa); in __inet_insert_ifa()
585 rtmsg_ifa(RTM_NEWADDR, ifa, nlh, portid); in __inet_insert_ifa()
586 blocking_notifier_call_chain(&inetaddr_chain, NETDEV_UP, ifa); in __inet_insert_ifa()
591 static int inet_insert_ifa(struct in_ifaddr *ifa) in inet_insert_ifa() argument
593 return __inet_insert_ifa(ifa, NULL, 0, NULL); in inet_insert_ifa()
596 static int inet_set_ifa(struct net_device *dev, struct in_ifaddr *ifa) in inet_set_ifa() argument
605 if (ipv4_is_loopback(ifa->ifa_local)) in inet_set_ifa()
606 ifa->ifa_scope = RT_SCOPE_HOST; in inet_set_ifa()
607 return inet_insert_ifa(ifa); in inet_set_ifa()
632 struct in_ifaddr *ifa; in inet_ifa_byprefix() local
636 in_dev_for_each_ifa_rtnl(ifa, in_dev) { in inet_ifa_byprefix()
637 if (ifa->ifa_mask == mask && inet_ifa_match(prefix, ifa)) in inet_ifa_byprefix()
638 return ifa; in inet_ifa_byprefix()
644 const struct in_ifaddr *ifa) in ip_mc_autojoin_config() argument
648 .imr_multiaddr.s_addr = ifa->ifa_address, in ip_mc_autojoin_config()
649 .imr_ifindex = ifa->ifa_dev->dev->ifindex, in ip_mc_autojoin_config()
677 struct in_ifaddr *ifa; in inet_rtm_deladdr() local
695 for (ifap = &in_dev->ifa_list; (ifa = rtnl_dereference(*ifap)) != NULL; in inet_rtm_deladdr()
696 ifap = &ifa->ifa_next) { in inet_rtm_deladdr()
698 ifa->ifa_local != nla_get_in_addr(tb[IFA_LOCAL])) in inet_rtm_deladdr()
701 if (tb[IFA_LABEL] && nla_strcmp(tb[IFA_LABEL], ifa->ifa_label)) in inet_rtm_deladdr()
705 (ifm->ifa_prefixlen != ifa->ifa_prefixlen || in inet_rtm_deladdr()
706 !inet_ifa_match(nla_get_in_addr(tb[IFA_ADDRESS]), ifa))) in inet_rtm_deladdr()
709 if (ipv4_is_multicast(ifa->ifa_address)) in inet_rtm_deladdr()
710 ip_mc_autojoin_config(net, false, ifa); in inet_rtm_deladdr()
724 struct in_ifaddr *ifa; in check_lifetime() local
735 hlist_for_each_entry_rcu(ifa, &inet_addr_lst[i], hash) { in check_lifetime()
741 flags = READ_ONCE(ifa->ifa_flags); in check_lifetime()
745 preferred_lft = READ_ONCE(ifa->ifa_preferred_lft); in check_lifetime()
746 valid_lft = READ_ONCE(ifa->ifa_valid_lft); in check_lifetime()
747 tstamp = READ_ONCE(ifa->ifa_tstamp); in check_lifetime()
773 hlist_for_each_entry_safe(ifa, n, &inet_addr_lst[i], hash) { in check_lifetime()
776 if (ifa->ifa_flags & IFA_F_PERMANENT) in check_lifetime()
780 age = (now - ifa->ifa_tstamp + in check_lifetime()
783 if (ifa->ifa_valid_lft != INFINITY_LIFE_TIME && in check_lifetime()
784 age >= ifa->ifa_valid_lft) { in check_lifetime()
788 ifap = &ifa->ifa_dev->ifa_list; in check_lifetime()
791 if (tmp == ifa) { in check_lifetime()
792 inet_del_ifa(ifa->ifa_dev, in check_lifetime()
799 } else if (ifa->ifa_preferred_lft != in check_lifetime()
801 age >= ifa->ifa_preferred_lft && in check_lifetime()
802 !(ifa->ifa_flags & IFA_F_DEPRECATED)) { in check_lifetime()
803 ifa->ifa_flags |= IFA_F_DEPRECATED; in check_lifetime()
804 rtmsg_ifa(RTM_NEWADDR, ifa, NULL, 0); in check_lifetime()
826 static void set_ifa_lifetime(struct in_ifaddr *ifa, __u32 valid_lft, in set_ifa_lifetime() argument
832 flags = ifa->ifa_flags & ~(IFA_F_PERMANENT | IFA_F_DEPRECATED); in set_ifa_lifetime()
836 WRITE_ONCE(ifa->ifa_valid_lft, timeout); in set_ifa_lifetime()
844 WRITE_ONCE(ifa->ifa_preferred_lft, timeout); in set_ifa_lifetime()
846 WRITE_ONCE(ifa->ifa_flags, flags); in set_ifa_lifetime()
847 WRITE_ONCE(ifa->ifa_tstamp, jiffies); in set_ifa_lifetime()
848 if (!ifa->ifa_cstamp) in set_ifa_lifetime()
849 WRITE_ONCE(ifa->ifa_cstamp, ifa->ifa_tstamp); in set_ifa_lifetime()
857 struct in_ifaddr *ifa; in rtm_to_ifaddr() local
893 ifa = inet_alloc_ifa(in_dev); in rtm_to_ifaddr()
894 if (!ifa) in rtm_to_ifaddr()
907 ifa->ifa_prefixlen = ifm->ifa_prefixlen; in rtm_to_ifaddr()
908 ifa->ifa_mask = inet_make_mask(ifm->ifa_prefixlen); in rtm_to_ifaddr()
909 ifa->ifa_flags = tb[IFA_FLAGS] ? nla_get_u32(tb[IFA_FLAGS]) : in rtm_to_ifaddr()
911 ifa->ifa_scope = ifm->ifa_scope; in rtm_to_ifaddr()
912 ifa->ifa_local = nla_get_in_addr(tb[IFA_LOCAL]); in rtm_to_ifaddr()
913 ifa->ifa_address = nla_get_in_addr(tb[IFA_ADDRESS]); in rtm_to_ifaddr()
916 ifa->ifa_broadcast = nla_get_in_addr(tb[IFA_BROADCAST]); in rtm_to_ifaddr()
919 nla_strscpy(ifa->ifa_label, tb[IFA_LABEL], IFNAMSIZ); in rtm_to_ifaddr()
921 memcpy(ifa->ifa_label, dev->name, IFNAMSIZ); in rtm_to_ifaddr()
924 ifa->ifa_rt_priority = nla_get_u32(tb[IFA_RT_PRIORITY]); in rtm_to_ifaddr()
927 ifa->ifa_proto = nla_get_u8(tb[IFA_PROTO]); in rtm_to_ifaddr()
942 return ifa; in rtm_to_ifaddr()
945 inet_free_ifa(ifa); in rtm_to_ifaddr()
950 static struct in_ifaddr *find_matching_ifa(struct in_ifaddr *ifa) in find_matching_ifa() argument
952 struct in_device *in_dev = ifa->ifa_dev; in find_matching_ifa()
955 if (!ifa->ifa_local) in find_matching_ifa()
959 if (ifa1->ifa_mask == ifa->ifa_mask && in find_matching_ifa()
960 inet_ifa_match(ifa1->ifa_address, ifa) && in find_matching_ifa()
961 ifa1->ifa_local == ifa->ifa_local) in find_matching_ifa()
971 struct in_ifaddr *ifa; in inet_rtm_newaddr() local
978 ifa = rtm_to_ifaddr(net, nlh, &valid_lft, &prefered_lft, extack); in inet_rtm_newaddr()
979 if (IS_ERR(ifa)) in inet_rtm_newaddr()
980 return PTR_ERR(ifa); in inet_rtm_newaddr()
982 ifa_existing = find_matching_ifa(ifa); in inet_rtm_newaddr()
987 set_ifa_lifetime(ifa, valid_lft, prefered_lft); in inet_rtm_newaddr()
988 if (ifa->ifa_flags & IFA_F_MCAUTOJOIN) { in inet_rtm_newaddr()
989 int ret = ip_mc_autojoin_config(net, true, ifa); in inet_rtm_newaddr()
993 inet_free_ifa(ifa); in inet_rtm_newaddr()
997 return __inet_insert_ifa(ifa, nlh, NETLINK_CB(skb).portid, in inet_rtm_newaddr()
1000 u32 new_metric = ifa->ifa_rt_priority; in inet_rtm_newaddr()
1001 u8 new_proto = ifa->ifa_proto; in inet_rtm_newaddr()
1003 inet_free_ifa(ifa); in inet_rtm_newaddr()
1010 ifa = ifa_existing; in inet_rtm_newaddr()
1012 if (ifa->ifa_rt_priority != new_metric) { in inet_rtm_newaddr()
1013 fib_modify_prefix_metric(ifa, new_metric); in inet_rtm_newaddr()
1014 ifa->ifa_rt_priority = new_metric; in inet_rtm_newaddr()
1017 ifa->ifa_proto = new_proto; in inet_rtm_newaddr()
1019 set_ifa_lifetime(ifa, valid_lft, prefered_lft); in inet_rtm_newaddr()
1023 rtmsg_ifa(RTM_NEWADDR, ifa, nlh, NETLINK_CB(skb).portid); in inet_rtm_newaddr()
1060 struct in_ifaddr *ifa = NULL; in devinet_ioctl() local
1132 (ifa = rtnl_dereference(*ifap)) != NULL; in devinet_ioctl()
1133 ifap = &ifa->ifa_next) { in devinet_ioctl()
1134 if (!strcmp(ifr->ifr_name, ifa->ifa_label) && in devinet_ioctl()
1136 ifa->ifa_local) { in devinet_ioctl()
1144 if (!ifa) { in devinet_ioctl()
1146 (ifa = rtnl_dereference(*ifap)) != NULL; in devinet_ioctl()
1147 ifap = &ifa->ifa_next) in devinet_ioctl()
1148 if (!strcmp(ifr->ifr_name, ifa->ifa_label)) in devinet_ioctl()
1154 if (!ifa && cmd != SIOCSIFADDR && cmd != SIOCSIFFLAGS) in devinet_ioctl()
1160 sin->sin_addr.s_addr = ifa->ifa_local; in devinet_ioctl()
1165 sin->sin_addr.s_addr = ifa->ifa_broadcast; in devinet_ioctl()
1170 sin->sin_addr.s_addr = ifa->ifa_address; in devinet_ioctl()
1175 sin->sin_addr.s_addr = ifa->ifa_mask; in devinet_ioctl()
1181 if (!ifa) in devinet_ioctl()
1196 if (!ifa) { in devinet_ioctl()
1200 ifa = inet_alloc_ifa(in_dev); in devinet_ioctl()
1201 if (!ifa) in devinet_ioctl()
1205 memcpy(ifa->ifa_label, ifr->ifr_name, IFNAMSIZ); in devinet_ioctl()
1207 memcpy(ifa->ifa_label, dev->name, IFNAMSIZ); in devinet_ioctl()
1210 if (ifa->ifa_local == sin->sin_addr.s_addr) in devinet_ioctl()
1213 ifa->ifa_broadcast = 0; in devinet_ioctl()
1214 ifa->ifa_scope = 0; in devinet_ioctl()
1217 ifa->ifa_address = ifa->ifa_local = sin->sin_addr.s_addr; in devinet_ioctl()
1220 ifa->ifa_prefixlen = inet_abc_len(ifa->ifa_address); in devinet_ioctl()
1221 ifa->ifa_mask = inet_make_mask(ifa->ifa_prefixlen); in devinet_ioctl()
1223 ifa->ifa_prefixlen < 31) in devinet_ioctl()
1224 ifa->ifa_broadcast = ifa->ifa_address | in devinet_ioctl()
1225 ~ifa->ifa_mask; in devinet_ioctl()
1227 ifa->ifa_prefixlen = 32; in devinet_ioctl()
1228 ifa->ifa_mask = inet_make_mask(32); in devinet_ioctl()
1230 set_ifa_lifetime(ifa, INFINITY_LIFE_TIME, INFINITY_LIFE_TIME); in devinet_ioctl()
1231 ret = inet_set_ifa(dev, ifa); in devinet_ioctl()
1236 if (ifa->ifa_broadcast != sin->sin_addr.s_addr) { in devinet_ioctl()
1238 ifa->ifa_broadcast = sin->sin_addr.s_addr; in devinet_ioctl()
1239 inet_insert_ifa(ifa); in devinet_ioctl()
1245 if (ifa->ifa_address == sin->sin_addr.s_addr) in devinet_ioctl()
1252 ifa->ifa_address = sin->sin_addr.s_addr; in devinet_ioctl()
1253 inet_insert_ifa(ifa); in devinet_ioctl()
1265 if (ifa->ifa_mask != sin->sin_addr.s_addr) { in devinet_ioctl()
1266 __be32 old_mask = ifa->ifa_mask; in devinet_ioctl()
1268 ifa->ifa_mask = sin->sin_addr.s_addr; in devinet_ioctl()
1269 ifa->ifa_prefixlen = inet_mask_len(ifa->ifa_mask); in devinet_ioctl()
1278 (ifa->ifa_prefixlen < 31) && in devinet_ioctl()
1279 (ifa->ifa_broadcast == in devinet_ioctl()
1280 (ifa->ifa_local|~old_mask))) { in devinet_ioctl()
1281 ifa->ifa_broadcast = (ifa->ifa_local | in devinet_ioctl()
1284 inet_insert_ifa(ifa); in devinet_ioctl()
1297 const struct in_ifaddr *ifa; in inet_gifconf() local
1307 in_dev_for_each_ifa_rtnl(ifa, in_dev) { in inet_gifconf()
1315 strcpy(ifr.ifr_name, ifa->ifa_label); in inet_gifconf()
1319 ifa->ifa_local; in inet_gifconf()
1335 const struct in_ifaddr *ifa; in in_dev_select_addr() local
1337 in_dev_for_each_ifa_rcu(ifa, in_dev) { in in_dev_select_addr()
1338 if (READ_ONCE(ifa->ifa_flags) & IFA_F_SECONDARY) in in_dev_select_addr()
1340 if (ifa->ifa_scope != RT_SCOPE_LINK && in in_dev_select_addr()
1341 ifa->ifa_scope <= scope) in in_dev_select_addr()
1342 return ifa->ifa_local; in in_dev_select_addr()
1350 const struct in_ifaddr *ifa; in inet_select_addr() local
1365 in_dev_for_each_ifa_rcu(ifa, in_dev) { in inet_select_addr()
1366 if (READ_ONCE(ifa->ifa_flags) & IFA_F_SECONDARY) in inet_select_addr()
1368 if (min(ifa->ifa_scope, localnet_scope) > scope) in inet_select_addr()
1370 if (!dst || inet_ifa_match(dst, ifa)) { in inet_select_addr()
1371 addr = ifa->ifa_local; in inet_select_addr()
1375 addr = ifa->ifa_local; in inet_select_addr()
1422 const struct in_ifaddr *ifa; in confirm_addr_indev() local
1429 in_dev_for_each_ifa_rcu(ifa, in_dev) { in confirm_addr_indev()
1430 unsigned char min_scope = min(ifa->ifa_scope, localnet_scope); in confirm_addr_indev()
1433 (local == ifa->ifa_local || !local) && in confirm_addr_indev()
1435 addr = ifa->ifa_local; in confirm_addr_indev()
1440 same = (!local || inet_ifa_match(local, ifa)) && in confirm_addr_indev()
1441 (!dst || inet_ifa_match(dst, ifa)); in confirm_addr_indev()
1446 if (inet_ifa_match(addr, ifa)) in confirm_addr_indev()
1450 addr = ifa->ifa_local; in confirm_addr_indev()
1528 struct in_ifaddr *ifa; in inetdev_changename() local
1531 in_dev_for_each_ifa_rtnl(ifa, in_dev) { in inetdev_changename()
1534 memcpy(old, ifa->ifa_label, IFNAMSIZ); in inetdev_changename()
1535 memcpy(ifa->ifa_label, dev->name, IFNAMSIZ); in inetdev_changename()
1544 strcat(ifa->ifa_label, dot); in inetdev_changename()
1546 strcpy(ifa->ifa_label + (IFNAMSIZ - strlen(dot) - 1), dot); in inetdev_changename()
1548 rtmsg_ifa(RTM_NEWADDR, ifa, NULL, 0); in inetdev_changename()
1556 const struct in_ifaddr *ifa; in inetdev_send_gratuitous_arp() local
1558 in_dev_for_each_ifa_rtnl(ifa, in_dev) { in inetdev_send_gratuitous_arp()
1560 ifa->ifa_local, dev, in inetdev_send_gratuitous_arp()
1561 ifa->ifa_local, NULL, in inetdev_send_gratuitous_arp()
1602 struct in_ifaddr *ifa = inet_alloc_ifa(in_dev); in inetdev_event() local
1604 if (ifa) { in inetdev_event()
1605 ifa->ifa_local = in inetdev_event()
1606 ifa->ifa_address = htonl(INADDR_LOOPBACK); in inetdev_event()
1607 ifa->ifa_prefixlen = 8; in inetdev_event()
1608 ifa->ifa_mask = inet_make_mask(8); in inetdev_event()
1609 ifa->ifa_scope = RT_SCOPE_HOST; in inetdev_event()
1610 memcpy(ifa->ifa_label, dev->name, IFNAMSIZ); in inetdev_event()
1611 set_ifa_lifetime(ifa, INFINITY_LIFE_TIME, in inetdev_event()
1615 inet_insert_ifa(ifa); in inetdev_event()
1694 static int inet_fill_ifaddr(struct sk_buff *skb, const struct in_ifaddr *ifa, in inet_fill_ifaddr() argument
1710 ifm->ifa_prefixlen = ifa->ifa_prefixlen; in inet_fill_ifaddr()
1712 flags = READ_ONCE(ifa->ifa_flags); in inet_fill_ifaddr()
1718 ifm->ifa_scope = ifa->ifa_scope; in inet_fill_ifaddr()
1719 ifm->ifa_index = ifa->ifa_dev->dev->ifindex; in inet_fill_ifaddr()
1725 tstamp = READ_ONCE(ifa->ifa_tstamp); in inet_fill_ifaddr()
1727 preferred = READ_ONCE(ifa->ifa_preferred_lft); in inet_fill_ifaddr()
1728 valid = READ_ONCE(ifa->ifa_valid_lft); in inet_fill_ifaddr()
1747 if ((ifa->ifa_address && in inet_fill_ifaddr()
1748 nla_put_in_addr(skb, IFA_ADDRESS, ifa->ifa_address)) || in inet_fill_ifaddr()
1749 (ifa->ifa_local && in inet_fill_ifaddr()
1750 nla_put_in_addr(skb, IFA_LOCAL, ifa->ifa_local)) || in inet_fill_ifaddr()
1751 (ifa->ifa_broadcast && in inet_fill_ifaddr()
1752 nla_put_in_addr(skb, IFA_BROADCAST, ifa->ifa_broadcast)) || in inet_fill_ifaddr()
1753 (ifa->ifa_label[0] && in inet_fill_ifaddr()
1754 nla_put_string(skb, IFA_LABEL, ifa->ifa_label)) || in inet_fill_ifaddr()
1755 (ifa->ifa_proto && in inet_fill_ifaddr()
1756 nla_put_u8(skb, IFA_PROTO, ifa->ifa_proto)) || in inet_fill_ifaddr()
1758 (ifa->ifa_rt_priority && in inet_fill_ifaddr()
1759 nla_put_u32(skb, IFA_RT_PRIORITY, ifa->ifa_rt_priority)) || in inet_fill_ifaddr()
1760 put_cacheinfo(skb, READ_ONCE(ifa->ifa_cstamp), tstamp, in inet_fill_ifaddr()
1833 struct in_ifaddr *ifa; in in_dev_dump_addr() local
1837 in_dev_for_each_ifa_rcu(ifa, in_dev) { in in_dev_dump_addr()
1842 err = inet_fill_ifaddr(skb, ifa, fillargs); in in_dev_dump_addr()
1932 static void rtmsg_ifa(int event, struct in_ifaddr *ifa, struct nlmsghdr *nlh, in rtmsg_ifa() argument
1946 net = dev_net(ifa->ifa_dev->dev); in rtmsg_ifa()
1951 err = inet_fill_ifaddr(skb, ifa, &fillargs); in rtmsg_ifa()