aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/socket.c
diff options
context:
space:
mode:
authorYing Xue <ying.xue@windriver.com>2015-01-09 02:27:09 -0500
committerDavid S. Miller <davem@davemloft.net>2015-01-12 16:24:33 -0500
commit4ac1c8d0ee9faf3a4be185cc4db1381fa0d81280 (patch)
tree361ea817ed30f0dd959ea2d87d658c8d85feebb2 /net/tipc/socket.c
parente05b31f4bf8994d49322e9afb004ad479a129db0 (diff)
tipc: name tipc name table support net namespace
TIPC name table is used to store the mapping relationship between TIPC service name and socket port ID. When tipc supports namespace, it allows users to publish service names only owned by a certain namespace. Therefore, every namespace must have its private name table to prevent service names published to one namespace from being contaminated by other service names in another namespace. Therefore, The name table global variable (ie, nametbl) and its lock must be moved to tipc_net structure, and a parameter of namespace must be added for necessary functions so that they can obtain name table variable defined in tipc_net structure. Signed-off-by: Ying Xue <ying.xue@windriver.com> Tested-by: Tero Aho <Tero.Aho@coriant.com> Reviewed-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc/socket.c')
-rw-r--r--net/tipc/socket.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index accb02cb3527..4670e1e46c89 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -778,11 +778,8 @@ void tipc_sk_mcast_rcv(struct net *net, struct sk_buff *buf)
778 scope = TIPC_NODE_SCOPE; 778 scope = TIPC_NODE_SCOPE;
779 779
780 /* Create destination port list: */ 780 /* Create destination port list: */
781 tipc_nametbl_mc_translate(msg_nametype(msg), 781 tipc_nametbl_mc_translate(net, msg_nametype(msg), msg_namelower(msg),
782 msg_namelower(msg), 782 msg_nameupper(msg), scope, &dports);
783 msg_nameupper(msg),
784 scope,
785 &dports);
786 last = dports.count; 783 last = dports.count;
787 if (!last) { 784 if (!last) {
788 kfree_skb(buf); 785 kfree_skb(buf);
@@ -943,7 +940,7 @@ static int tipc_sendmsg(struct kiocb *iocb, struct socket *sock,
943 msg_set_nametype(mhdr, type); 940 msg_set_nametype(mhdr, type);
944 msg_set_nameinst(mhdr, inst); 941 msg_set_nameinst(mhdr, inst);
945 msg_set_lookup_scope(mhdr, tipc_addr_scope(domain)); 942 msg_set_lookup_scope(mhdr, tipc_addr_scope(domain));
946 dport = tipc_nametbl_translate(type, inst, &dnode); 943 dport = tipc_nametbl_translate(net, type, inst, &dnode);
947 msg_set_destnode(mhdr, dnode); 944 msg_set_destnode(mhdr, dnode);
948 msg_set_destport(mhdr, dport); 945 msg_set_destport(mhdr, dport);
949 if (unlikely(!dport && !dnode)) { 946 if (unlikely(!dport && !dnode)) {
@@ -1765,7 +1762,7 @@ int tipc_sk_rcv(struct net *net, struct sk_buff *skb)
1765 /* Validate destination and message */ 1762 /* Validate destination and message */
1766 tsk = tipc_sk_lookup(net, dport); 1763 tsk = tipc_sk_lookup(net, dport);
1767 if (unlikely(!tsk)) { 1764 if (unlikely(!tsk)) {
1768 rc = tipc_msg_eval(skb, &dnode); 1765 rc = tipc_msg_eval(net, skb, &dnode);
1769 goto exit; 1766 goto exit;
1770 } 1767 }
1771 sk = &tsk->sk; 1768 sk = &tsk->sk;