Lines Matching defs:addr
139 static void ipv6_gen_rnd_iid(struct in6_addr *addr);
143 static int ipv6_generate_stable_address(struct in6_addr *addr,
1010 int ifp_scope = ipv6_addr_src_scope(&ifp->addr);
1019 if (ifp_scope >= ipv6_addr_src_scope(&ifa->addr))
1026 static u32 inet6_addr_hash(const struct net *net, const struct in6_addr *addr)
1028 u32 val = ipv6_addr_hash(addr) ^ net_hash_mix(net);
1033 static bool ipv6_chk_same_addr(struct net *net, const struct in6_addr *addr,
1039 if (ipv6_addr_equal(&ifp->addr, addr)) {
1050 unsigned int hash = inet6_addr_hash(net, &ifa->addr);
1056 if (ipv6_chk_same_addr(net, &ifa->addr, dev, hash)) {
1138 ifa->addr = *cfg->pfx;
1176 /* Add to inet6_dev unicast addr list. */
1243 !ipv6_prefix_equal(&ifa->addr, &ifp->addr,
1273 f6i = addrconf_get_prefix_route(del_peer ? &ifp->peer_addr : &ifp->addr,
1357 struct in6_addr addr;
1383 memcpy(addr.s6_addr, ifp->addr.s6_addr, 8);
1384 ipv6_gen_rnd_iid(&addr);
1442 cfg.pfx = &addr;
1499 const struct in6_addr *addr;
1573 ret = ipv6_addr_equal(&score->ifa->addr, dst->addr);
1632 &score->ifa->addr, score->addr_type,
1650 ret = !(ipv6_addr_orchid(&score->ifa->addr) ^
1651 ipv6_addr_orchid(dst->addr));
1655 ret = ipv6_addr_diff(&score->ifa->addr, dst->addr);
1704 score->addr_type = __ipv6_addr_type(&score->ifa->addr);
1787 dst.addr = daddr;
1864 *saddr = hiscore->ifa->addr;
1871 static int __ipv6_get_lladdr(struct inet6_dev *idev, struct in6_addr *addr,
1882 *addr = ifp->addr;
1890 int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *addr,
1900 err = __ipv6_get_lladdr(idev, addr, banned_flags);
1919 int ipv6_chk_addr(struct net *net, const struct in6_addr *addr,
1922 return ipv6_chk_addr_and_flags(net, addr, dev, !dev,
1937 __ipv6_chk_addr_and_flags(struct net *net, const struct in6_addr *addr,
1941 unsigned int hash = inet6_addr_hash(net, addr);
1964 if (ipv6_addr_equal(&ifp->addr, addr) &&
1977 int ipv6_chk_addr_and_flags(struct net *net, const struct in6_addr *addr,
1981 return __ipv6_chk_addr_and_flags(net, addr, dev, skip_dev_check,
1990 bool ipv6_chk_custom_prefix(const struct in6_addr *addr,
2001 ret = ipv6_prefix_equal(addr, &ifa->addr, prefix_len);
2012 int ipv6_chk_prefix(const struct in6_addr *addr, struct net_device *dev)
2023 onlink = ipv6_prefix_equal(addr, &ifa->addr,
2037 * @addr: the source address
2042 struct net_device *ipv6_dev_find(struct net *net, const struct in6_addr *addr,
2045 return __ipv6_chk_addr_and_flags(net, addr, dev, !dev, 1,
2050 struct inet6_ifaddr *ipv6_get_ifaddr(struct net *net, const struct in6_addr *addr,
2053 unsigned int hash = inet6_addr_hash(net, addr);
2058 if (ipv6_addr_equal(&ifp->addr, addr)) {
2132 ifp->idev->dev->name, &ifp->addr, eth_hdr(skb)->h_source);
2155 new_addr = ifp->addr;
2194 /* Join to solicited addr multicast group.
2196 void addrconf_join_solict(struct net_device *dev, const struct in6_addr *addr)
2203 addrconf_addr_solict_mult(addr, &maddr);
2208 void addrconf_leave_solict(struct inet6_dev *idev, const struct in6_addr *addr)
2215 addrconf_addr_solict_mult(addr, &maddr);
2222 struct in6_addr addr;
2226 ipv6_addr_prefix(&addr, &ifp->addr, ifp->prefix_len);
2227 if (ipv6_addr_any(&addr))
2229 __ipv6_dev_ac_inc(ifp->idev, &addr);
2235 struct in6_addr addr;
2239 ipv6_addr_prefix(&addr, &ifp->addr, ifp->prefix_len);
2240 if (ipv6_addr_any(&addr))
2242 __ipv6_dev_ac_dec(ifp->idev, &addr);
2298 static int __ipv6_isatap_ifid(u8 *eui, __be32 addr)
2300 if (addr == 0)
2302 eui[0] = (ipv4_is_zeronet(addr) || ipv4_is_private_10(addr) ||
2303 ipv4_is_loopback(addr) || ipv4_is_linklocal_169(addr) ||
2304 ipv4_is_private_172(addr) || ipv4_is_test_192(addr) ||
2305 ipv4_is_anycast_6to4(addr) || ipv4_is_private_192(addr) ||
2306 ipv4_is_test_198(addr) || ipv4_is_multicast(addr) ||
2307 ipv4_is_lbcast(addr)) ? 0x00 : 0x02;
2311 memcpy(eui + 4, &addr, 4);
2374 memcpy(eui, ifp->addr.s6_addr+8, 8);
2387 static void ipv6_gen_rnd_iid(struct in6_addr *addr)
2390 get_random_bytes(&addr->s6_addr[8], 8);
2400 if (!(addr->s6_addr32[2] | addr->s6_addr32[3]))
2407 if (ntohl(addr->s6_addr32[2]) == 0x02005eff &&
2408 (ntohl(addr->s6_addr32[3]) & 0Xff000000) == 0xfe000000)
2412 if (ntohl(addr->s6_addr32[2]) == 0xfdffffff &&
2413 ntohl(addr->s6_addr32[3]) >= 0Xffffff80)
2618 const struct in6_addr *addr, int addr_type,
2622 struct inet6_ifaddr *ifp = ipv6_get_ifaddr(net, addr, dev, 1);
2628 .pfx = addr,
2820 struct in6_addr addr;
2824 memcpy(&addr, &pinfo->prefix, 8);
2828 memcpy(addr.s6_addr + 8,
2833 !ipv6_generate_stable_address(&addr, 0,
2837 } else if (ipv6_generate_eui64(addr.s6_addr + 8, dev) &&
2838 ipv6_inherit_eui64(addr.s6_addr + 8, in6_dev)) {
2851 &addr, addr_type,
2858 /* Ignore error case here because previous prefix add addr was
2861 ndisc_ops_prefix_rcv_add_addr(net, dev, pinfo, in6_dev, &addr,
2924 const struct in6_addr *addr, int ifindex)
2932 ret = ipv6_sock_mc_join(sk, ifindex, addr);
2934 ret = ipv6_sock_mc_drop(sk, ifindex, addr);
3015 addrconf_prefix_route(&ifp->addr, ifp->prefix_len,
3073 ipv6_addr_equal(pfx, &ifp->addr)) {
3140 static void add_addr(struct inet6_dev *idev, const struct in6_addr *addr,
3145 .pfx = addr,
3168 struct in6_addr addr;
3176 memset(&addr, 0, sizeof(struct in6_addr));
3180 memcpy(&addr.s6_addr32[3], idev->dev->dev_addr + offset, 4);
3190 addr.s6_addr32[0] = htonl(0xfe800000);
3195 if (addr.s6_addr32[3]) {
3196 add_addr(idev, &addr, plen, scope, IFAPROT_UNSPEC);
3197 addrconf_prefix_route(&addr, plen, 0, idev->dev, 0, pflags,
3209 addr.s6_addr32[3] = ifa->ifa_local;
3219 add_addr(idev, &addr, plen, flag,
3221 addrconf_prefix_route(&addr, plen, 0, idev->dev,
3247 const struct in6_addr *addr, u32 flags)
3250 .pfx = addr,
3269 addrconf_prefix_route(&ifp->addr, ifp->prefix_len, 0, idev->dev,
3368 struct in6_addr addr;
3378 ipv6_addr_set(&addr, htonl(0xFE800000), 0, 0, 0);
3385 if (!ipv6_generate_stable_address(&addr, 0, idev))
3386 addrconf_add_linklocal(idev, &addr,
3389 addrconf_prefix_route(&addr, 64, 0, idev->dev,
3397 if (ipv6_generate_eui64(addr.s6_addr + 8, idev->dev) == 0)
3398 addrconf_add_linklocal(idev, &addr, 0);
3400 addrconf_prefix_route(&addr, 64, 0, idev->dev,
3537 f6i = addrconf_f6i_alloc(net, idev, &ifp->addr, false,
3552 addrconf_prefix_route(&ifp->addr, ifp->prefix_len,
3583 idev->dev->name, &ifp->addr);
3788 static bool addr_is_local(const struct in6_addr *addr)
3790 return ipv6_addr_type(addr) &
3855 addr_is_local(&ifa->addr)) {
3907 !addr_is_local(&ifa->addr);
3936 addrconf_leave_solict(ifa->idev, &ifa->addr);
4048 addrconf_join_solict(dev, &ifp->addr);
4154 struct in6_addr addr;
4156 addr.s6_addr32[0] = htonl(0xfe800000);
4157 addr.s6_addr32[1] = 0;
4159 if (!ipv6_generate_eui64(addr.s6_addr + 8, idev->dev) &&
4160 ipv6_addr_equal(&ifp->addr, &addr)) {
4226 /* send a neighbour solicitation for our addr */
4227 addrconf_addr_solict_mult(&ifp->addr, &mcaddr);
4228 ndisc_send_ns(ifp->idev->dev, &ifp->addr, &mcaddr, &in6addr_any,
4292 ndisc_send_na(dev, &in6addr_linklocal_allnodes, &ifp->addr,
4433 &ifp->addr,
4480 int ipv6_chk_home_addr(struct net *net, const struct in6_addr *addr)
4482 unsigned int hash = inet6_addr_hash(net, addr);
4488 if (ipv6_addr_equal(&ifp->addr, addr) &&
4512 const struct in6_addr *addr;
4521 addr = &segs[i];
4522 hash = inet6_addr_hash(net, addr);
4527 if (ipv6_addr_equal(&ifp->addr, addr)) {
4589 /* This is a non-regenerated temporary addr. */
4692 static struct in6_addr *extract_addr(struct nlattr *addr, struct nlattr *local,
4699 if (addr)
4700 pfx = nla_data(addr);
4758 f6i = addrconf_get_prefix_route(modify_peer ? &ifp->peer_addr : &ifp->addr,
4770 addrconf_prefix_route(modify_peer ? &ifp->peer_addr : &ifp->addr,
4864 addrconf_prefix_route(&ifp->addr, ifp->prefix_len,
5111 if (nla_put_in6_addr(skb, IFA_LOCAL, &ifa->addr) < 0 ||
5115 if (nla_put_in6_addr(skb, IFA_ADDRESS, &ifa->addr) < 0)
5223 /* unicast address incl. temp addr */
5488 struct in6_addr *addr = NULL, *peer;
5507 addr = extract_addr(tb[IFA_ADDRESS], tb[IFA_LOCAL], &peer);
5508 if (!addr) {
5516 ifa = ipv6_get_ifaddr(tgt_net, addr, dev, 1);
6220 &ifp->addr, ifp->idev->dev->name);
6233 addrconf_leave_solict(ifp->idev, &ifp->addr);
6490 struct in6_addr addr;
6520 if (in6_pton(str, -1, addr.in6_u.u6_addr8, -1, NULL) != 1) {
6526 secret->secret = addr;