aboutsummaryrefslogtreecommitdiffstats
path: root/net/rds/tcp_listen.c
diff options
context:
space:
mode:
authorKa-Cheong Poon <ka-cheong.poon@oracle.com>2018-07-30 22:48:42 -0700
committerDavid S. Miller <davem@davemloft.net>2018-08-01 09:32:35 -0700
commite65d4d96334e3ff4fe0064612a93a51c63de08de (patch)
tree3bbc43d81b1e59665ceae7f412c70be52c29d89c /net/rds/tcp_listen.c
parentrds: rds_ib_recv_alloc_cache() should call alloc_percpu_gfp() instead (diff)
downloadlinux-dev-e65d4d96334e3ff4fe0064612a93a51c63de08de.tar.xz
linux-dev-e65d4d96334e3ff4fe0064612a93a51c63de08de.zip
rds: Remove IPv6 dependency
This patch removes the IPv6 dependency from RDS. Signed-off-by: Ka-Cheong Poon <ka-cheong.poon@oracle.com> Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/rds/tcp_listen.c')
-rw-r--r--net/rds/tcp_listen.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/net/rds/tcp_listen.c b/net/rds/tcp_listen.c
index 0cf0147117d8..c12203f646da 100644
--- a/net/rds/tcp_listen.c
+++ b/net/rds/tcp_listen.c
@@ -132,7 +132,10 @@ int rds_tcp_accept_one(struct socket *sock)
int conn_state;
struct rds_conn_path *cp;
struct in6_addr *my_addr, *peer_addr;
- int dev_if;
+#if !IS_ENABLED(CONFIG_IPV6)
+ struct in6_addr saddr, daddr;
+#endif
+ int dev_if = 0;
if (!sock) /* module unload or netns delete in progress */
return -ENETUNREACH;
@@ -165,12 +168,21 @@ int rds_tcp_accept_one(struct socket *sock)
inet = inet_sk(new_sock->sk);
+#if IS_ENABLED(CONFIG_IPV6)
my_addr = &new_sock->sk->sk_v6_rcv_saddr;
peer_addr = &new_sock->sk->sk_v6_daddr;
- rdsdebug("accepted tcp %pI6c:%u -> %pI6c:%u\n",
+#else
+ ipv6_addr_set_v4mapped(inet->inet_saddr, &saddr);
+ ipv6_addr_set_v4mapped(inet->inet_daddr, &daddr);
+ my_addr = &saddr;
+ peer_addr = &daddr;
+#endif
+ rdsdebug("accepted family %d tcp %pI6c:%u -> %pI6c:%u\n",
+ sock->sk->sk_family,
my_addr, ntohs(inet->inet_sport),
peer_addr, ntohs(inet->inet_dport));
+#if IS_ENABLED(CONFIG_IPV6)
/* sk_bound_dev_if is not set if the peer address is not link local
* address. In this case, it happens that mcast_oif is set. So
* just use it.
@@ -184,9 +196,10 @@ int rds_tcp_accept_one(struct socket *sock)
} else {
dev_if = new_sock->sk->sk_bound_dev_if;
}
+#endif
+
conn = rds_conn_create(sock_net(sock->sk),
- &new_sock->sk->sk_v6_rcv_saddr,
- &new_sock->sk->sk_v6_daddr,
+ my_addr, peer_addr,
&rds_tcp_transport, GFP_KERNEL, dev_if);
if (IS_ERR(conn)) {