I think you could do even better. Why not set socket state to TIPC_ESTABLISHED, and along with a couple of other tweeks you will have a full-fledged connection, with flow control and peer crash detection?
///jon > -----Original Message----- > From: Parthasarathy Bhuvaragan > Sent: Thursday, 26 January, 2017 02:47 > To: tipc-discussion@lists.sourceforge.net; Jon Maloy <jon.ma...@ericsson.com>; > Ying Xue <ying....@windriver.com> > Cc: erik.hu...@gmail.com > Subject: [PATCH net-next v2 2/2] tipc: allow rdm/dgram socketpairs > > From: Erik Hugne <erik.hu...@gmail.com> > > 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 <erik.hu...@gmail.com> > Signed-off-by: Parthasarathy Bhuvaragan > <parthasarathy.bhuvara...@ericsson.com> > > --- > v2: node is set to own_addr() instead of 0. > --- > net/tipc/socket.c | 16 ++++++++++++++-- > 1 file changed, 14 insertions(+), 2 deletions(-) > > diff --git a/net/tipc/socket.c b/net/tipc/socket.c > index eafc9569e679..199e82307491 100644 > --- a/net/tipc/socket.c > +++ b/net/tipc/socket.c > @@ -2503,6 +2503,18 @@ 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); > + 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, 0); > tipc_sk_finish_conn(tsk2, tsk1->portid, 0); > @@ -2517,7 +2529,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, > @@ -2559,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 _______________________________________________ tipc-discussion mailing list tipc-discussion@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tipc-discussion