Commit 42d59435 authored by David S. Miller's avatar David S. Miller

Merge branch 'ipv6-only-sock'

Kuniyuki Iwashima says:

====================
ipv6: Use ipv6_only_sock helper function.

The first patch removes __ipv6_only_sock(), and the second replaces
ipv6only tests with ipv6_only_sock().
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 0844d36f 81ee0eb6
...@@ -5226,7 +5226,7 @@ static void bond_sk_to_flow(struct sock *sk, struct flow_keys *flow) ...@@ -5226,7 +5226,7 @@ static void bond_sk_to_flow(struct sock *sk, struct flow_keys *flow)
switch (sk->sk_family) { switch (sk->sk_family) {
#if IS_ENABLED(CONFIG_IPV6) #if IS_ENABLED(CONFIG_IPV6)
case AF_INET6: case AF_INET6:
if (sk->sk_ipv6only || if (ipv6_only_sock(sk) ||
ipv6_addr_type(&sk->sk_v6_daddr) != IPV6_ADDR_MAPPED) { ipv6_addr_type(&sk->sk_v6_daddr) != IPV6_ADDR_MAPPED) {
flow->control.addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS; flow->control.addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS;
flow->addrs.v6addrs.src = inet6_sk(sk)->saddr; flow->addrs.v6addrs.src = inet6_sk(sk)->saddr;
......
...@@ -483,7 +483,7 @@ static int chcr_ktls_dev_add(struct net_device *netdev, struct sock *sk, ...@@ -483,7 +483,7 @@ static int chcr_ktls_dev_add(struct net_device *netdev, struct sock *sk,
tx_info->ip_family = AF_INET; tx_info->ip_family = AF_INET;
#if IS_ENABLED(CONFIG_IPV6) #if IS_ENABLED(CONFIG_IPV6)
} else { } else {
if (!sk->sk_ipv6only && if (!ipv6_only_sock(sk) &&
ipv6_addr_type(&sk->sk_v6_daddr) == IPV6_ADDR_MAPPED) { ipv6_addr_type(&sk->sk_v6_daddr) == IPV6_ADDR_MAPPED) {
memcpy(daaddr, &sk->sk_daddr, 4); memcpy(daaddr, &sk->sk_daddr, 4);
tx_info->ip_family = AF_INET; tx_info->ip_family = AF_INET;
......
...@@ -102,7 +102,7 @@ struct mlx5_flow_handle *mlx5e_accel_fs_add_sk(struct mlx5e_priv *priv, ...@@ -102,7 +102,7 @@ struct mlx5_flow_handle *mlx5e_accel_fs_add_sk(struct mlx5e_priv *priv,
break; break;
#if IS_ENABLED(CONFIG_IPV6) #if IS_ENABLED(CONFIG_IPV6)
case AF_INET6: case AF_INET6:
if (!sk->sk_ipv6only && if (!ipv6_only_sock(sk) &&
ipv6_addr_type(&sk->sk_v6_daddr) == IPV6_ADDR_MAPPED) { ipv6_addr_type(&sk->sk_v6_daddr) == IPV6_ADDR_MAPPED) {
accel_fs_tcp_set_ipv4_flow(spec, sk); accel_fs_tcp_set_ipv4_flow(spec, sk);
ft = &fs_tcp->tables[ACCEL_FS_IPV4_TCP]; ft = &fs_tcp->tables[ACCEL_FS_IPV4_TCP];
......
...@@ -289,7 +289,7 @@ nfp_net_tls_add(struct net_device *netdev, struct sock *sk, ...@@ -289,7 +289,7 @@ nfp_net_tls_add(struct net_device *netdev, struct sock *sk,
switch (sk->sk_family) { switch (sk->sk_family) {
#if IS_ENABLED(CONFIG_IPV6) #if IS_ENABLED(CONFIG_IPV6)
case AF_INET6: case AF_INET6:
if (sk->sk_ipv6only || if (ipv6_only_sock(sk) ||
ipv6_addr_type(&sk->sk_v6_daddr) != IPV6_ADDR_MAPPED) { ipv6_addr_type(&sk->sk_v6_daddr) != IPV6_ADDR_MAPPED) {
req_sz = sizeof(struct nfp_crypto_req_add_v6); req_sz = sizeof(struct nfp_crypto_req_add_v6);
ipv6 = true; ipv6 = true;
......
...@@ -340,8 +340,7 @@ static inline struct raw6_sock *raw6_sk(const struct sock *sk) ...@@ -340,8 +340,7 @@ static inline struct raw6_sock *raw6_sk(const struct sock *sk)
return (struct raw6_sock *)sk; return (struct raw6_sock *)sk;
} }
#define __ipv6_only_sock(sk) (sk->sk_ipv6only) #define ipv6_only_sock(sk) (sk->sk_ipv6only)
#define ipv6_only_sock(sk) (__ipv6_only_sock(sk))
#define ipv6_sk_rxinfo(sk) ((sk)->sk_family == PF_INET6 && \ #define ipv6_sk_rxinfo(sk) ((sk)->sk_family == PF_INET6 && \
inet6_sk(sk)->rxopt.bits.rxinfo) inet6_sk(sk)->rxopt.bits.rxinfo)
...@@ -358,7 +357,6 @@ static inline int inet_v6_ipv6only(const struct sock *sk) ...@@ -358,7 +357,6 @@ static inline int inet_v6_ipv6only(const struct sock *sk)
return ipv6_only_sock(sk); return ipv6_only_sock(sk);
} }
#else #else
#define __ipv6_only_sock(sk) 0
#define ipv6_only_sock(sk) 0 #define ipv6_only_sock(sk) 0
#define ipv6_sk_rxinfo(sk) 0 #define ipv6_sk_rxinfo(sk) 0
......
...@@ -7099,7 +7099,7 @@ BPF_CALL_5(bpf_tcp_gen_syncookie, struct sock *, sk, void *, iph, u32, iph_len, ...@@ -7099,7 +7099,7 @@ BPF_CALL_5(bpf_tcp_gen_syncookie, struct sock *, sk, void *, iph, u32, iph_len,
*/ */
switch (((struct iphdr *)iph)->version) { switch (((struct iphdr *)iph)->version) {
case 4: case 4:
if (sk->sk_family == AF_INET6 && sk->sk_ipv6only) if (sk->sk_family == AF_INET6 && ipv6_only_sock(sk))
return -EINVAL; return -EINVAL;
mss = tcp_v4_get_syncookie(sk, iph, th, &cookie); mss = tcp_v4_get_syncookie(sk, iph, th, &cookie);
......
...@@ -892,7 +892,7 @@ static int dccp_v6_connect(struct sock *sk, struct sockaddr *uaddr, ...@@ -892,7 +892,7 @@ static int dccp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
SOCK_DEBUG(sk, "connect: ipv4 mapped\n"); SOCK_DEBUG(sk, "connect: ipv4 mapped\n");
if (__ipv6_only_sock(sk)) if (ipv6_only_sock(sk))
return -ENETUNREACH; return -ENETUNREACH;
sin.sin_family = AF_INET; sin.sin_family = AF_INET;
......
...@@ -318,7 +318,7 @@ static int __inet6_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len, ...@@ -318,7 +318,7 @@ static int __inet6_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len,
/* Binding to v4-mapped address on a v6-only socket /* Binding to v4-mapped address on a v6-only socket
* makes no sense * makes no sense
*/ */
if (sk->sk_ipv6only) { if (ipv6_only_sock(sk)) {
err = -EINVAL; err = -EINVAL;
goto out; goto out;
} }
......
...@@ -145,7 +145,7 @@ int __ip6_datagram_connect(struct sock *sk, struct sockaddr *uaddr, ...@@ -145,7 +145,7 @@ int __ip6_datagram_connect(struct sock *sk, struct sockaddr *uaddr,
int err; int err;
if (usin->sin6_family == AF_INET) { if (usin->sin6_family == AF_INET) {
if (__ipv6_only_sock(sk)) if (ipv6_only_sock(sk))
return -EAFNOSUPPORT; return -EAFNOSUPPORT;
err = __ip4_datagram_connect(sk, uaddr, addr_len); err = __ip4_datagram_connect(sk, uaddr, addr_len);
goto ipv4_connected; goto ipv4_connected;
...@@ -178,7 +178,7 @@ int __ip6_datagram_connect(struct sock *sk, struct sockaddr *uaddr, ...@@ -178,7 +178,7 @@ int __ip6_datagram_connect(struct sock *sk, struct sockaddr *uaddr,
if (addr_type & IPV6_ADDR_MAPPED) { if (addr_type & IPV6_ADDR_MAPPED) {
struct sockaddr_in sin; struct sockaddr_in sin;
if (__ipv6_only_sock(sk)) { if (ipv6_only_sock(sk)) {
err = -ENETUNREACH; err = -ENETUNREACH;
goto out; goto out;
} }
......
...@@ -230,7 +230,7 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr, ...@@ -230,7 +230,7 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
u32 exthdrlen = icsk->icsk_ext_hdr_len; u32 exthdrlen = icsk->icsk_ext_hdr_len;
struct sockaddr_in sin; struct sockaddr_in sin;
if (__ipv6_only_sock(sk)) if (ipv6_only_sock(sk))
return -ENETUNREACH; return -ENETUNREACH;
sin.sin_family = AF_INET; sin.sin_family = AF_INET;
......
...@@ -1123,7 +1123,7 @@ static int udpv6_pre_connect(struct sock *sk, struct sockaddr *uaddr, ...@@ -1123,7 +1123,7 @@ static int udpv6_pre_connect(struct sock *sk, struct sockaddr *uaddr,
* bytes that are out of the bound specified by user in addr_len. * bytes that are out of the bound specified by user in addr_len.
*/ */
if (uaddr->sa_family == AF_INET) { if (uaddr->sa_family == AF_INET) {
if (__ipv6_only_sock(sk)) if (ipv6_only_sock(sk))
return -EAFNOSUPPORT; return -EAFNOSUPPORT;
return udp_pre_connect(sk, uaddr, addr_len); return udp_pre_connect(sk, uaddr, addr_len);
} }
...@@ -1359,7 +1359,7 @@ int udpv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) ...@@ -1359,7 +1359,7 @@ int udpv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
msg->msg_name = &sin; msg->msg_name = &sin;
msg->msg_namelen = sizeof(sin); msg->msg_namelen = sizeof(sin);
do_udp_sendmsg: do_udp_sendmsg:
if (__ipv6_only_sock(sk)) if (ipv6_only_sock(sk))
return -ENETUNREACH; return -ENETUNREACH;
return udp_sendmsg(sk, msg, len); return udp_sendmsg(sk, msg, len);
} }
......
...@@ -926,7 +926,7 @@ static int sctp_inet6_af_supported(sa_family_t family, struct sctp_sock *sp) ...@@ -926,7 +926,7 @@ static int sctp_inet6_af_supported(sa_family_t family, struct sctp_sock *sp)
return 1; return 1;
/* v4-mapped-v6 addresses */ /* v4-mapped-v6 addresses */
case AF_INET: case AF_INET:
if (!__ipv6_only_sock(sctp_opt2sk(sp))) if (!ipv6_only_sock(sctp_opt2sk(sp)))
return 1; return 1;
fallthrough; fallthrough;
default: default:
...@@ -952,7 +952,7 @@ static int sctp_inet6_cmp_addr(const union sctp_addr *addr1, ...@@ -952,7 +952,7 @@ static int sctp_inet6_cmp_addr(const union sctp_addr *addr1,
return 0; return 0;
/* If the socket is IPv6 only, v4 addrs will not match */ /* If the socket is IPv6 only, v4 addrs will not match */
if (__ipv6_only_sock(sk) && af1 != af2) if (ipv6_only_sock(sk) && af1 != af2)
return 0; return 0;
/* Today, wildcard AF_INET/AF_INET6. */ /* Today, wildcard AF_INET/AF_INET6. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment