Lines Matching refs:ifa

121 static void inet_hash_insert(struct net *net, struct in_ifaddr *ifa)  in inet_hash_insert()  argument
123 u32 hash = inet_addr_hash(net, ifa->ifa_local); in inet_hash_insert()
126 hlist_add_head_rcu(&ifa->addr_lst, &net->ipv4.inet_addr_lst[hash]); in inet_hash_insert()
129 static void inet_hash_remove(struct in_ifaddr *ifa) in inet_hash_remove() argument
132 hlist_del_init_rcu(&ifa->addr_lst); in inet_hash_remove()
146 struct in_ifaddr *ifa; in __ip_dev_find() local
149 ifa = inet_lookup_ifaddr_rcu(net, addr); in __ip_dev_find()
150 if (!ifa) { in __ip_dev_find()
164 result = ifa->ifa_dev->dev; in __ip_dev_find()
177 struct in_ifaddr *ifa; in inet_lookup_ifaddr_rcu() local
179 hlist_for_each_entry_rcu(ifa, &net->ipv4.inet_addr_lst[hash], addr_lst) in inet_lookup_ifaddr_rcu()
180 if (ifa->ifa_local == addr) in inet_lookup_ifaddr_rcu()
181 return ifa; in inet_lookup_ifaddr_rcu()
210 struct in_ifaddr *ifa; in inet_alloc_ifa() local
212 ifa = kzalloc(sizeof(*ifa), GFP_KERNEL_ACCOUNT); in inet_alloc_ifa()
213 if (!ifa) in inet_alloc_ifa()
217 ifa->ifa_dev = in_dev; in inet_alloc_ifa()
219 INIT_HLIST_NODE(&ifa->addr_lst); in inet_alloc_ifa()
221 return ifa; in inet_alloc_ifa()
226 struct in_ifaddr *ifa = container_of(head, struct in_ifaddr, rcu_head); in inet_rcu_free_ifa() local
228 in_dev_put(ifa->ifa_dev); in inet_rcu_free_ifa()
229 kfree(ifa); in inet_rcu_free_ifa()
232 static void inet_free_ifa(struct in_ifaddr *ifa) in inet_free_ifa() argument
238 call_rcu_hurry(&ifa->rcu_head, inet_rcu_free_ifa); in inet_free_ifa()
317 struct in_ifaddr *ifa; in inetdev_destroy() local
327 while ((ifa = rtnl_dereference(in_dev->ifa_list)) != NULL) { in inetdev_destroy()
329 inet_free_ifa(ifa); in inetdev_destroy()
356 const struct in_ifaddr *ifa; in inet_addr_onlink() local
359 in_dev_for_each_ifa_rcu(ifa, in_dev) { in inet_addr_onlink()
360 if (inet_ifa_match(a, ifa)) { in inet_addr_onlink()
361 if (!b || inet_ifa_match(b, ifa)) { in inet_addr_onlink()
376 struct in_ifaddr *ifa, *ifa1; in __inet_del_ifa() local
395 while ((ifa = rtnl_dereference(*ifap1)) != NULL) { in __inet_del_ifa()
396 if (!(ifa->ifa_flags & IFA_F_SECONDARY) && in __inet_del_ifa()
397 ifa1->ifa_scope <= ifa->ifa_scope) in __inet_del_ifa()
398 last_prim = &ifa->ifa_next; in __inet_del_ifa()
400 if (!(ifa->ifa_flags & IFA_F_SECONDARY) || in __inet_del_ifa()
401 ifa1->ifa_mask != ifa->ifa_mask || in __inet_del_ifa()
402 !inet_ifa_match(ifa1->ifa_address, ifa)) { in __inet_del_ifa()
403 ifap1 = &ifa->ifa_next; in __inet_del_ifa()
404 prev_prom = ifa; in __inet_del_ifa()
409 inet_hash_remove(ifa); in __inet_del_ifa()
410 *ifap1 = ifa->ifa_next; in __inet_del_ifa()
412 rtmsg_ifa(RTM_DELADDR, ifa, nlh, portid); in __inet_del_ifa()
414 NETDEV_DOWN, ifa); in __inet_del_ifa()
415 inet_free_ifa(ifa); in __inet_del_ifa()
417 promote = ifa; in __inet_del_ifa()
428 for (ifa = promote; ifa; ifa = rtnl_dereference(ifa->ifa_next)) { in __inet_del_ifa()
429 if (ifa1->ifa_mask == ifa->ifa_mask && in __inet_del_ifa()
430 inet_ifa_match(ifa1->ifa_address, ifa)) in __inet_del_ifa()
431 fib_del_ifaddr(ifa, ifa1); in __inet_del_ifa()
471 for (ifa = next_sec; ifa; in __inet_del_ifa()
472 ifa = rtnl_dereference(ifa->ifa_next)) { in __inet_del_ifa()
473 if (ifa1->ifa_mask != ifa->ifa_mask || in __inet_del_ifa()
474 !inet_ifa_match(ifa1->ifa_address, ifa)) in __inet_del_ifa()
476 fib_add_ifaddr(ifa); in __inet_del_ifa()
491 static int __inet_insert_ifa(struct in_ifaddr *ifa, struct nlmsghdr *nlh, in __inet_insert_ifa() argument
495 struct in_device *in_dev = ifa->ifa_dev; in __inet_insert_ifa()
503 ifa->ifa_flags &= ~IFA_F_SECONDARY; in __inet_insert_ifa()
507 ifa->ifa_flags &= ~IPV6ONLY_FLAGS; in __inet_insert_ifa()
514 ifa->ifa_scope <= ifa1->ifa_scope) in __inet_insert_ifa()
516 if (ifa1->ifa_mask == ifa->ifa_mask && in __inet_insert_ifa()
517 inet_ifa_match(ifa1->ifa_address, ifa)) { in __inet_insert_ifa()
518 if (ifa1->ifa_local == ifa->ifa_local) { in __inet_insert_ifa()
519 inet_free_ifa(ifa); in __inet_insert_ifa()
522 if (ifa1->ifa_scope != ifa->ifa_scope) { in __inet_insert_ifa()
524 inet_free_ifa(ifa); in __inet_insert_ifa()
527 ifa->ifa_flags |= IFA_F_SECONDARY; in __inet_insert_ifa()
541 ivi.ivi_addr = ifa->ifa_address; in __inet_insert_ifa()
542 ivi.ivi_dev = ifa->ifa_dev; in __inet_insert_ifa()
548 inet_free_ifa(ifa); in __inet_insert_ifa()
552 if (!(ifa->ifa_flags & IFA_F_SECONDARY)) in __inet_insert_ifa()
555 rcu_assign_pointer(ifa->ifa_next, *ifap); in __inet_insert_ifa()
556 rcu_assign_pointer(*ifap, ifa); in __inet_insert_ifa()
558 inet_hash_insert(dev_net(in_dev->dev), ifa); in __inet_insert_ifa()
566 rtmsg_ifa(RTM_NEWADDR, ifa, nlh, portid); in __inet_insert_ifa()
567 blocking_notifier_call_chain(&inetaddr_chain, NETDEV_UP, ifa); in __inet_insert_ifa()
572 static int inet_insert_ifa(struct in_ifaddr *ifa) in inet_insert_ifa() argument
574 if (!ifa->ifa_local) { in inet_insert_ifa()
575 inet_free_ifa(ifa); in inet_insert_ifa()
579 return __inet_insert_ifa(ifa, NULL, 0, NULL); in inet_insert_ifa()
582 static int inet_set_ifa(struct net_device *dev, struct in_ifaddr *ifa) in inet_set_ifa() argument
589 if (ipv4_is_loopback(ifa->ifa_local)) in inet_set_ifa()
590 ifa->ifa_scope = RT_SCOPE_HOST; in inet_set_ifa()
591 return inet_insert_ifa(ifa); in inet_set_ifa()
616 struct in_ifaddr *ifa; in inet_ifa_byprefix() local
620 in_dev_for_each_ifa_rtnl(ifa, in_dev) { in inet_ifa_byprefix()
621 if (ifa->ifa_mask == mask && inet_ifa_match(prefix, ifa)) in inet_ifa_byprefix()
622 return ifa; in inet_ifa_byprefix()
628 const struct in_ifaddr *ifa) in ip_mc_autojoin_config() argument
632 .imr_multiaddr.s_addr = ifa->ifa_address, in ip_mc_autojoin_config()
633 .imr_ifindex = ifa->ifa_dev->dev->ifindex, in ip_mc_autojoin_config()
661 struct in_ifaddr *ifa; in inet_rtm_deladdr() local
681 (ifa = rtnl_net_dereference(net, *ifap)) != NULL; in inet_rtm_deladdr()
682 ifap = &ifa->ifa_next) { in inet_rtm_deladdr()
684 ifa->ifa_local != nla_get_in_addr(tb[IFA_LOCAL])) in inet_rtm_deladdr()
687 if (tb[IFA_LABEL] && nla_strcmp(tb[IFA_LABEL], ifa->ifa_label)) in inet_rtm_deladdr()
691 (ifm->ifa_prefixlen != ifa->ifa_prefixlen || in inet_rtm_deladdr()
692 !inet_ifa_match(nla_get_in_addr(tb[IFA_ADDRESS]), ifa))) in inet_rtm_deladdr()
695 if (ipv4_is_multicast(ifa->ifa_address)) in inet_rtm_deladdr()
696 ip_mc_autojoin_config(net, false, ifa); in inet_rtm_deladdr()
713 struct in_ifaddr *ifa; in check_lifetime() local
727 hlist_for_each_entry_rcu(ifa, head, addr_lst) { in check_lifetime()
733 flags = READ_ONCE(ifa->ifa_flags); in check_lifetime()
737 preferred_lft = READ_ONCE(ifa->ifa_preferred_lft); in check_lifetime()
738 valid_lft = READ_ONCE(ifa->ifa_valid_lft); in check_lifetime()
739 tstamp = READ_ONCE(ifa->ifa_tstamp); in check_lifetime()
766 hlist_for_each_entry_safe(ifa, n, head, addr_lst) { in check_lifetime()
769 if (ifa->ifa_flags & IFA_F_PERMANENT) in check_lifetime()
773 age = (now - ifa->ifa_tstamp + in check_lifetime()
776 if (ifa->ifa_valid_lft != INFINITY_LIFE_TIME && in check_lifetime()
777 age >= ifa->ifa_valid_lft) { in check_lifetime()
781 ifap = &ifa->ifa_dev->ifa_list; in check_lifetime()
784 if (tmp == ifa) { in check_lifetime()
785 inet_del_ifa(ifa->ifa_dev, in check_lifetime()
792 } else if (ifa->ifa_preferred_lft != in check_lifetime()
794 age >= ifa->ifa_preferred_lft && in check_lifetime()
795 !(ifa->ifa_flags & IFA_F_DEPRECATED)) { in check_lifetime()
796 ifa->ifa_flags |= IFA_F_DEPRECATED; in check_lifetime()
797 rtmsg_ifa(RTM_NEWADDR, ifa, NULL, 0); in check_lifetime()
819 static void set_ifa_lifetime(struct in_ifaddr *ifa, __u32 valid_lft, in set_ifa_lifetime() argument
825 flags = ifa->ifa_flags & ~(IFA_F_PERMANENT | IFA_F_DEPRECATED); in set_ifa_lifetime()
829 WRITE_ONCE(ifa->ifa_valid_lft, timeout); in set_ifa_lifetime()
837 WRITE_ONCE(ifa->ifa_preferred_lft, timeout); in set_ifa_lifetime()
839 WRITE_ONCE(ifa->ifa_flags, flags); in set_ifa_lifetime()
840 WRITE_ONCE(ifa->ifa_tstamp, jiffies); in set_ifa_lifetime()
841 if (!ifa->ifa_cstamp) in set_ifa_lifetime()
842 WRITE_ONCE(ifa->ifa_cstamp, ifa->ifa_tstamp); in set_ifa_lifetime()
890 struct in_ifaddr *ifa; in inet_rtm_to_ifa() local
905 ifa = inet_alloc_ifa(in_dev); in inet_rtm_to_ifa()
906 if (!ifa) in inet_rtm_to_ifa()
919 ifa->ifa_prefixlen = ifm->ifa_prefixlen; in inet_rtm_to_ifa()
920 ifa->ifa_mask = inet_make_mask(ifm->ifa_prefixlen); in inet_rtm_to_ifa()
921 ifa->ifa_flags = nla_get_u32_default(tb[IFA_FLAGS], ifm->ifa_flags); in inet_rtm_to_ifa()
922 ifa->ifa_scope = ifm->ifa_scope; in inet_rtm_to_ifa()
923 ifa->ifa_local = nla_get_in_addr(tb[IFA_LOCAL]); in inet_rtm_to_ifa()
924 ifa->ifa_address = nla_get_in_addr(tb[IFA_ADDRESS]); in inet_rtm_to_ifa()
927 ifa->ifa_broadcast = nla_get_in_addr(tb[IFA_BROADCAST]); in inet_rtm_to_ifa()
930 nla_strscpy(ifa->ifa_label, tb[IFA_LABEL], IFNAMSIZ); in inet_rtm_to_ifa()
932 memcpy(ifa->ifa_label, dev->name, IFNAMSIZ); in inet_rtm_to_ifa()
935 ifa->ifa_rt_priority = nla_get_u32(tb[IFA_RT_PRIORITY]); in inet_rtm_to_ifa()
938 ifa->ifa_proto = nla_get_u8(tb[IFA_PROTO]); in inet_rtm_to_ifa()
940 return ifa; in inet_rtm_to_ifa()
946 static struct in_ifaddr *find_matching_ifa(struct net *net, struct in_ifaddr *ifa) in find_matching_ifa() argument
948 struct in_device *in_dev = ifa->ifa_dev; in find_matching_ifa()
952 if (ifa1->ifa_mask == ifa->ifa_mask && in find_matching_ifa()
953 inet_ifa_match(ifa1->ifa_address, ifa) && in find_matching_ifa()
954 ifa1->ifa_local == ifa->ifa_local) in find_matching_ifa()
969 struct in_ifaddr *ifa; in inet_rtm_newaddr() local
981 ifa = inet_rtm_to_ifa(net, nlh, tb, extack); in inet_rtm_newaddr()
982 if (IS_ERR(ifa)) { in inet_rtm_newaddr()
983 ret = PTR_ERR(ifa); in inet_rtm_newaddr()
987 ifa_existing = find_matching_ifa(net, ifa); in inet_rtm_newaddr()
992 set_ifa_lifetime(ifa, valid_lft, prefered_lft); in inet_rtm_newaddr()
993 if (ifa->ifa_flags & IFA_F_MCAUTOJOIN) { in inet_rtm_newaddr()
994 ret = ip_mc_autojoin_config(net, true, ifa); in inet_rtm_newaddr()
997 inet_free_ifa(ifa); in inet_rtm_newaddr()
1002 ret = __inet_insert_ifa(ifa, nlh, NETLINK_CB(skb).portid, extack); in inet_rtm_newaddr()
1004 u32 new_metric = ifa->ifa_rt_priority; in inet_rtm_newaddr()
1005 u8 new_proto = ifa->ifa_proto; in inet_rtm_newaddr()
1007 inet_free_ifa(ifa); in inet_rtm_newaddr()
1015 ifa = ifa_existing; in inet_rtm_newaddr()
1017 if (ifa->ifa_rt_priority != new_metric) { in inet_rtm_newaddr()
1018 fib_modify_prefix_metric(ifa, new_metric); in inet_rtm_newaddr()
1019 ifa->ifa_rt_priority = new_metric; in inet_rtm_newaddr()
1022 ifa->ifa_proto = new_proto; in inet_rtm_newaddr()
1024 set_ifa_lifetime(ifa, valid_lft, prefered_lft); in inet_rtm_newaddr()
1028 rtmsg_ifa(RTM_NEWADDR, ifa, nlh, NETLINK_CB(skb).portid); in inet_rtm_newaddr()
1069 struct in_ifaddr *ifa = NULL; in devinet_ioctl() local
1141 (ifa = rtnl_net_dereference(net, *ifap)) != NULL; in devinet_ioctl()
1142 ifap = &ifa->ifa_next) { in devinet_ioctl()
1143 if (!strcmp(ifr->ifr_name, ifa->ifa_label) && in devinet_ioctl()
1145 ifa->ifa_local) { in devinet_ioctl()
1153 if (!ifa) { in devinet_ioctl()
1155 (ifa = rtnl_net_dereference(net, *ifap)) != NULL; in devinet_ioctl()
1156 ifap = &ifa->ifa_next) in devinet_ioctl()
1157 if (!strcmp(ifr->ifr_name, ifa->ifa_label)) in devinet_ioctl()
1163 if (!ifa && cmd != SIOCSIFADDR && cmd != SIOCSIFFLAGS) in devinet_ioctl()
1169 sin->sin_addr.s_addr = ifa->ifa_local; in devinet_ioctl()
1174 sin->sin_addr.s_addr = ifa->ifa_broadcast; in devinet_ioctl()
1179 sin->sin_addr.s_addr = ifa->ifa_address; in devinet_ioctl()
1184 sin->sin_addr.s_addr = ifa->ifa_mask; in devinet_ioctl()
1190 if (!ifa) in devinet_ioctl()
1208 if (!ifa) { in devinet_ioctl()
1212 ifa = inet_alloc_ifa(in_dev); in devinet_ioctl()
1213 if (!ifa) in devinet_ioctl()
1217 memcpy(ifa->ifa_label, ifr->ifr_name, IFNAMSIZ); in devinet_ioctl()
1219 memcpy(ifa->ifa_label, dev->name, IFNAMSIZ); in devinet_ioctl()
1222 if (ifa->ifa_local == sin->sin_addr.s_addr) in devinet_ioctl()
1225 ifa->ifa_broadcast = 0; in devinet_ioctl()
1226 ifa->ifa_scope = 0; in devinet_ioctl()
1229 ifa->ifa_address = ifa->ifa_local = sin->sin_addr.s_addr; in devinet_ioctl()
1232 ifa->ifa_prefixlen = inet_abc_len(ifa->ifa_address); in devinet_ioctl()
1233 ifa->ifa_mask = inet_make_mask(ifa->ifa_prefixlen); in devinet_ioctl()
1235 ifa->ifa_prefixlen < 31) in devinet_ioctl()
1236 ifa->ifa_broadcast = ifa->ifa_address | in devinet_ioctl()
1237 ~ifa->ifa_mask; in devinet_ioctl()
1239 ifa->ifa_prefixlen = 32; in devinet_ioctl()
1240 ifa->ifa_mask = inet_make_mask(32); in devinet_ioctl()
1242 set_ifa_lifetime(ifa, INFINITY_LIFE_TIME, INFINITY_LIFE_TIME); in devinet_ioctl()
1243 ret = inet_set_ifa(dev, ifa); in devinet_ioctl()
1248 if (ifa->ifa_broadcast != sin->sin_addr.s_addr) { in devinet_ioctl()
1250 ifa->ifa_broadcast = sin->sin_addr.s_addr; in devinet_ioctl()
1251 inet_insert_ifa(ifa); in devinet_ioctl()
1257 if (ifa->ifa_address == sin->sin_addr.s_addr) in devinet_ioctl()
1264 ifa->ifa_address = sin->sin_addr.s_addr; in devinet_ioctl()
1265 inet_insert_ifa(ifa); in devinet_ioctl()
1277 if (ifa->ifa_mask != sin->sin_addr.s_addr) { in devinet_ioctl()
1278 __be32 old_mask = ifa->ifa_mask; in devinet_ioctl()
1280 ifa->ifa_mask = sin->sin_addr.s_addr; in devinet_ioctl()
1281 ifa->ifa_prefixlen = inet_mask_len(ifa->ifa_mask); in devinet_ioctl()
1290 (ifa->ifa_prefixlen < 31) && in devinet_ioctl()
1291 (ifa->ifa_broadcast == in devinet_ioctl()
1292 (ifa->ifa_local|~old_mask))) { in devinet_ioctl()
1293 ifa->ifa_broadcast = (ifa->ifa_local | in devinet_ioctl()
1296 inet_insert_ifa(ifa); in devinet_ioctl()
1309 const struct in_ifaddr *ifa; in inet_gifconf() local
1319 in_dev_for_each_ifa_rtnl_net(dev_net(dev), ifa, in_dev) { in inet_gifconf()
1327 strcpy(ifr.ifr_name, ifa->ifa_label); in inet_gifconf()
1331 ifa->ifa_local; in inet_gifconf()
1347 const struct in_ifaddr *ifa; in in_dev_select_addr() local
1349 in_dev_for_each_ifa_rcu(ifa, in_dev) { in in_dev_select_addr()
1350 if (READ_ONCE(ifa->ifa_flags) & IFA_F_SECONDARY) in in_dev_select_addr()
1352 if (ifa->ifa_scope != RT_SCOPE_LINK && in in_dev_select_addr()
1353 ifa->ifa_scope <= scope) in in_dev_select_addr()
1354 return ifa->ifa_local; in in_dev_select_addr()
1362 const struct in_ifaddr *ifa; in inet_select_addr() local
1378 in_dev_for_each_ifa_rcu(ifa, in_dev) { in inet_select_addr()
1379 if (READ_ONCE(ifa->ifa_flags) & IFA_F_SECONDARY) in inet_select_addr()
1381 if (min(ifa->ifa_scope, localnet_scope) > scope) in inet_select_addr()
1383 if (!dst || inet_ifa_match(dst, ifa)) { in inet_select_addr()
1384 addr = ifa->ifa_local; in inet_select_addr()
1388 addr = ifa->ifa_local; in inet_select_addr()
1435 const struct in_ifaddr *ifa; in confirm_addr_indev() local
1442 in_dev_for_each_ifa_rcu(ifa, in_dev) { in confirm_addr_indev()
1443 unsigned char min_scope = min(ifa->ifa_scope, localnet_scope); in confirm_addr_indev()
1446 (local == ifa->ifa_local || !local) && in confirm_addr_indev()
1448 addr = ifa->ifa_local; in confirm_addr_indev()
1453 same = (!local || inet_ifa_match(local, ifa)) && in confirm_addr_indev()
1454 (!dst || inet_ifa_match(dst, ifa)); in confirm_addr_indev()
1459 if (inet_ifa_match(addr, ifa)) in confirm_addr_indev()
1463 addr = ifa->ifa_local; in confirm_addr_indev()
1541 struct in_ifaddr *ifa; in inetdev_changename() local
1544 in_dev_for_each_ifa_rtnl(ifa, in_dev) { in inetdev_changename()
1547 memcpy(old, ifa->ifa_label, IFNAMSIZ); in inetdev_changename()
1548 memcpy(ifa->ifa_label, dev->name, IFNAMSIZ); in inetdev_changename()
1557 strcat(ifa->ifa_label, dot); in inetdev_changename()
1559 strcpy(ifa->ifa_label + (IFNAMSIZ - strlen(dot) - 1), dot); in inetdev_changename()
1561 rtmsg_ifa(RTM_NEWADDR, ifa, NULL, 0); in inetdev_changename()
1569 const struct in_ifaddr *ifa; in inetdev_send_gratuitous_arp() local
1571 in_dev_for_each_ifa_rtnl(ifa, in_dev) { in inetdev_send_gratuitous_arp()
1573 ifa->ifa_local, dev, in inetdev_send_gratuitous_arp()
1574 ifa->ifa_local, NULL, in inetdev_send_gratuitous_arp()
1615 struct in_ifaddr *ifa = inet_alloc_ifa(in_dev); in inetdev_event() local
1617 if (ifa) { in inetdev_event()
1618 ifa->ifa_local = in inetdev_event()
1619 ifa->ifa_address = htonl(INADDR_LOOPBACK); in inetdev_event()
1620 ifa->ifa_prefixlen = 8; in inetdev_event()
1621 ifa->ifa_mask = inet_make_mask(8); in inetdev_event()
1622 ifa->ifa_scope = RT_SCOPE_HOST; in inetdev_event()
1623 memcpy(ifa->ifa_label, dev->name, IFNAMSIZ); in inetdev_event()
1624 set_ifa_lifetime(ifa, INFINITY_LIFE_TIME, in inetdev_event()
1628 inet_insert_ifa(ifa); in inetdev_event()
1707 static int inet_fill_ifaddr(struct sk_buff *skb, const struct in_ifaddr *ifa, in inet_fill_ifaddr() argument
1723 ifm->ifa_prefixlen = ifa->ifa_prefixlen; in inet_fill_ifaddr()
1725 flags = READ_ONCE(ifa->ifa_flags); in inet_fill_ifaddr()
1731 ifm->ifa_scope = ifa->ifa_scope; in inet_fill_ifaddr()
1732 ifm->ifa_index = ifa->ifa_dev->dev->ifindex; in inet_fill_ifaddr()
1738 tstamp = READ_ONCE(ifa->ifa_tstamp); in inet_fill_ifaddr()
1740 preferred = READ_ONCE(ifa->ifa_preferred_lft); in inet_fill_ifaddr()
1741 valid = READ_ONCE(ifa->ifa_valid_lft); in inet_fill_ifaddr()
1760 if ((ifa->ifa_address && in inet_fill_ifaddr()
1761 nla_put_in_addr(skb, IFA_ADDRESS, ifa->ifa_address)) || in inet_fill_ifaddr()
1762 (ifa->ifa_local && in inet_fill_ifaddr()
1763 nla_put_in_addr(skb, IFA_LOCAL, ifa->ifa_local)) || in inet_fill_ifaddr()
1764 (ifa->ifa_broadcast && in inet_fill_ifaddr()
1765 nla_put_in_addr(skb, IFA_BROADCAST, ifa->ifa_broadcast)) || in inet_fill_ifaddr()
1766 (ifa->ifa_label[0] && in inet_fill_ifaddr()
1767 nla_put_string(skb, IFA_LABEL, ifa->ifa_label)) || in inet_fill_ifaddr()
1768 (ifa->ifa_proto && in inet_fill_ifaddr()
1769 nla_put_u8(skb, IFA_PROTO, ifa->ifa_proto)) || in inet_fill_ifaddr()
1771 (ifa->ifa_rt_priority && in inet_fill_ifaddr()
1772 nla_put_u32(skb, IFA_RT_PRIORITY, ifa->ifa_rt_priority)) || in inet_fill_ifaddr()
1773 put_cacheinfo(skb, READ_ONCE(ifa->ifa_cstamp), tstamp, in inet_fill_ifaddr()
1875 struct in_ifaddr *ifa; in in_dev_dump_ifaddr() local
1879 in_dev_for_each_ifa_rcu(ifa, in_dev) { in in_dev_dump_ifaddr()
1884 err = inet_fill_ifaddr(skb, ifa, fillargs); in in_dev_dump_ifaddr()
2000 static void rtmsg_ifa(int event, struct in_ifaddr *ifa, struct nlmsghdr *nlh, in rtmsg_ifa() argument
2014 net = dev_net(ifa->ifa_dev->dev); in rtmsg_ifa()
2019 err = inet_fill_ifaddr(skb, ifa, &fillargs); in rtmsg_ifa()