[PATCH net-next v1 0/2] tipc: add socketpair support

STALE3421d

4 messages, 2 authors, 2017-03-29 · open the first message on its own page

[PATCH net-next v1 0/2] tipc: add socketpair support

From: Parthasarathy Bhuvaragan <hidden>
Date: 2017-03-29 09:22:30

We add socketpair support for connection oriented sockets in
the first patch and for connection less in the second.

Erik Hugne (2):
  tipc: add support for stream/seqpacket socketpairs
  tipc: allow rdm/dgram socketpairs

 net/tipc/socket.c | 28 +++++++++++++++++++++++++---
 1 file changed, 25 insertions(+), 3 deletions(-)

-- 
2.1.4

[PATCH net-next v1 1/2] tipc: add support for stream/seqpacket socketpairs

From: Parthasarathy Bhuvaragan <hidden>
Date: 2017-03-29 09:22:16

From: Erik Hugne <redacted>

sockets A and B are connected back-to-back, similar to what
AF_UNIX does.

Signed-off-by: Erik Hugne <redacted>
Signed-off-by: Parthasarathy Bhuvaragan <redacted>
---
 net/tipc/socket.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index 7130e73bd42c..1198dddf72e8 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -2511,6 +2511,16 @@ static int tipc_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
 	}
 }
 
+static int tipc_socketpair(struct socket *sock1, struct socket *sock2)
+{
+	struct tipc_sock *tsk2 = tipc_sk(sock2->sk);
+	struct tipc_sock *tsk1 = tipc_sk(sock1->sk);
+
+	tipc_sk_finish_conn(tsk1, tsk2->portid, 0);
+	tipc_sk_finish_conn(tsk2, tsk1->portid, 0);
+	return 0;
+}
+
 /* Protocol switches for the various types of TIPC sockets */
 
 static const struct proto_ops msg_ops = {
@@ -2540,7 +2550,7 @@ static const struct proto_ops packet_ops = {
 	.release	= tipc_release,
 	.bind		= tipc_bind,
 	.connect	= tipc_connect,
-	.socketpair	= sock_no_socketpair,
+	.socketpair	= tipc_socketpair,
 	.accept		= tipc_accept,
 	.getname	= tipc_getname,
 	.poll		= tipc_poll,
@@ -2561,7 +2571,7 @@ static const struct proto_ops stream_ops = {
 	.release	= tipc_release,
 	.bind		= tipc_bind,
 	.connect	= tipc_connect,
-	.socketpair	= sock_no_socketpair,
+	.socketpair	= tipc_socketpair,
 	.accept		= tipc_accept,
 	.getname	= tipc_getname,
 	.poll		= tipc_poll,
-- 
2.1.4


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot

[PATCH net-next v1 2/2] tipc: allow rdm/dgram socketpairs

From: Parthasarathy Bhuvaragan <hidden>
Date: 2017-03-29 09:22:33

From: Erik Hugne <redacted>

for socketpairs using connectionless transport, we cache
the respective node local TIPC portid to use in subsequent
calls to send() in the socket's private data.

Signed-off-by: Erik Hugne <redacted>
Signed-off-by: Parthasarathy Bhuvaragan <redacted>
---
 net/tipc/socket.c | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index 1198dddf72e8..15f6ce7bf868 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -2515,9 +2515,21 @@ static int tipc_socketpair(struct socket *sock1, struct socket *sock2)
 {
 	struct tipc_sock *tsk2 = tipc_sk(sock2->sk);
 	struct tipc_sock *tsk1 = tipc_sk(sock1->sk);
-
-	tipc_sk_finish_conn(tsk1, tsk2->portid, 0);
-	tipc_sk_finish_conn(tsk2, tsk1->portid, 0);
+	u32 onode = tipc_own_addr(sock_net(sock1->sk));
+
+	tsk1->peer.family = AF_TIPC;
+	tsk1->peer.addrtype = TIPC_ADDR_ID;
+	tsk1->peer.scope = TIPC_NODE_SCOPE;
+	tsk1->peer.addr.id.ref = tsk2->portid;
+	tsk1->peer.addr.id.node = onode;
+	tsk2->peer.family = AF_TIPC;
+	tsk2->peer.addrtype = TIPC_ADDR_ID;
+	tsk2->peer.scope = TIPC_NODE_SCOPE;
+	tsk2->peer.addr.id.ref = tsk1->portid;
+	tsk2->peer.addr.id.node = onode;
+
+	tipc_sk_finish_conn(tsk1, tsk2->portid, onode);
+	tipc_sk_finish_conn(tsk2, tsk1->portid, onode);
 	return 0;
 }
 
@@ -2529,7 +2541,7 @@ static const struct proto_ops msg_ops = {
 	.release	= tipc_release,
 	.bind		= tipc_bind,
 	.connect	= tipc_connect,
-	.socketpair	= sock_no_socketpair,
+	.socketpair	= tipc_socketpair,
 	.accept		= sock_no_accept,
 	.getname	= tipc_getname,
 	.poll		= tipc_poll,
-- 
2.1.4

Re: [PATCH net-next v1 0/2] tipc: add socketpair support

From: David Miller <davem@davemloft.net>
Date: 2017-03-29 21:10:26

From: Parthasarathy Bhuvaragan <redacted>
Date: Wed, 29 Mar 2017 11:22:15 +0200
We add socketpair support for connection oriented sockets in
the first patch and for connection less in the second.
Series applied, thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help