score++;
}
if (!ipv6_addr_any(&np->rcv_saddr)) {
- if (ipv6_addr_cmp(&np->rcv_saddr, daddr))
+ if (!ipv6_addr_equal(&np->rcv_saddr, daddr))
continue;
score++;
}
if (!ipv6_addr_any(&np->daddr)) {
- if (ipv6_addr_cmp(&np->daddr, saddr))
+ if (!ipv6_addr_equal(&np->daddr, saddr))
continue;
score++;
}
continue;
}
if (!ipv6_addr_any(&np->daddr) &&
- ipv6_addr_cmp(&np->daddr, rmt_addr))
+ !ipv6_addr_equal(&np->daddr, rmt_addr))
continue;
if (s->sk_bound_dev_if && s->sk_bound_dev_if != dif)
continue;
if (!ipv6_addr_any(&np->rcv_saddr)) {
- if (!ipv6_addr_cmp(&np->rcv_saddr, loc_addr))
+ if (ipv6_addr_equal(&np->rcv_saddr, loc_addr))
return s;
continue;
}
if (likely(up->pending)) {
if (unlikely(up->pending != AF_INET6)) {
release_sock(sk);
- return -EINVAL;
+ return -EAFNOSUPPORT;
}
dst = NULL;
goto do_append_data;
* sk->sk_dst_cache.
*/
if (sk->sk_state == TCP_ESTABLISHED &&
- !ipv6_addr_cmp(daddr, &np->daddr))
+ ipv6_addr_equal(daddr, &np->daddr))
daddr = &np->daddr;
if (addr_len >= sizeof(struct sockaddr_in6) &&
if (dst)
ip6_dst_store(sk, dst,
- !ipv6_addr_cmp(&fl->fl6_dst, &np->daddr) ?
+ ipv6_addr_equal(&fl->fl6_dst, &np->daddr) ?
&np->daddr : NULL);
if (err > 0)
err = np->recverr ? net_xmit_errno(err) : 0;
struct proto udpv6_prot = {
.name = "UDP",
+ .owner = THIS_MODULE,
.close = udpv6_close,
.connect = ip6_datagram_connect,
.disconnect = udp_disconnect,