/* * check if given interface (or any, if dev==0) has this anycast address */ int ipv6_chk_acast_addr(struct net_device *dev, struct in6_addr *addr) { int found = 0; if (dev) return ipv6_chk_acast_dev(dev, addr); read_lock(&dev_base_lock); for_each_netdev(&init_net, dev) if (ipv6_chk_acast_dev(dev, addr)) { found = 1; break; } read_unlock(&dev_base_lock); return found; }
/* * check if given interface (or any, if dev==0) has this anycast address */ int ipv6_chk_acast_addr(struct net *net, struct net_device *dev, struct in6_addr *addr) { int found = 0; if (dev) return ipv6_chk_acast_dev(dev, addr); rcu_read_lock(); for_each_netdev_rcu(net, dev) if (ipv6_chk_acast_dev(dev, addr)) { found = 1; break; } rcu_read_unlock(); return found; }
/* * check if given interface (or any, if dev==0) has this anycast address */ bool ipv6_chk_acast_addr(struct net *net, struct net_device *dev, const struct in6_addr *addr) { bool found = false; rcu_read_lock(); if (dev) found = ipv6_chk_acast_dev(dev, addr); else for_each_netdev_rcu(net, dev) if (ipv6_chk_acast_dev(dev, addr)) { found = true; break; } rcu_read_unlock(); return found; }