aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/net.c
diff options
context:
space:
mode:
authorJames Morris <james.l.morris@oracle.com>2014-11-19 05:32:12 -0500
committerJames Morris <james.l.morris@oracle.com>2014-11-19 05:32:12 -0500
commitb10778a00d40b3d9fdaaf5891e802794781ff71c (patch)
tree6ba4cbac86eecedc3f30650e7f764ecf00c83898 /net/tipc/net.c
parent594081ee7145cc30a3977cb4e218f81213b63dc5 (diff)
parentbfe01a5ba2490f299e1d2d5508cbbbadd897bbe9 (diff)
Merge commit 'v3.17' into next
Diffstat (limited to 'net/tipc/net.c')
-rw-r--r--net/tipc/net.c63
1 files changed, 1 insertions, 62 deletions
diff --git a/net/tipc/net.c b/net/tipc/net.c
index f64375e7f99f..7fcc94998fea 100644
--- a/net/tipc/net.c
+++ b/net/tipc/net.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * net/tipc/net.c: TIPC network routing code 2 * net/tipc/net.c: TIPC network routing code
3 * 3 *
4 * Copyright (c) 1995-2006, Ericsson AB 4 * Copyright (c) 1995-2006, 2014, Ericsson AB
5 * Copyright (c) 2005, 2010-2011, Wind River Systems 5 * Copyright (c) 2005, 2010-2011, Wind River Systems
6 * All rights reserved. 6 * All rights reserved.
7 * 7 *
@@ -104,67 +104,6 @@
104 * - A local spin_lock protecting the queue of subscriber events. 104 * - A local spin_lock protecting the queue of subscriber events.
105*/ 105*/
106 106
107static void net_route_named_msg(struct sk_buff *buf)
108{
109 struct tipc_msg *msg = buf_msg(buf);
110 u32 dnode;
111 u32 dport;
112
113 if (!msg_named(msg)) {
114 kfree_skb(buf);
115 return;
116 }
117
118 dnode = addr_domain(msg_lookup_scope(msg));
119 dport = tipc_nametbl_translate(msg_nametype(msg), msg_nameinst(msg), &dnode);
120 if (dport) {
121 msg_set_destnode(msg, dnode);
122 msg_set_destport(msg, dport);
123 tipc_net_route_msg(buf);
124 return;
125 }
126 tipc_reject_msg(buf, TIPC_ERR_NO_NAME);
127}
128
129void tipc_net_route_msg(struct sk_buff *buf)
130{
131 struct tipc_msg *msg;
132 u32 dnode;
133
134 if (!buf)
135 return;
136 msg = buf_msg(buf);
137
138 /* Handle message for this node */
139 dnode = msg_short(msg) ? tipc_own_addr : msg_destnode(msg);
140 if (tipc_in_scope(dnode, tipc_own_addr)) {
141 if (msg_isdata(msg)) {
142 if (msg_mcast(msg))
143 tipc_port_mcast_rcv(buf, NULL);
144 else if (msg_destport(msg))
145 tipc_sk_rcv(buf);
146 else
147 net_route_named_msg(buf);
148 return;
149 }
150 switch (msg_user(msg)) {
151 case NAME_DISTRIBUTOR:
152 tipc_named_rcv(buf);
153 break;
154 case CONN_MANAGER:
155 tipc_port_proto_rcv(buf);
156 break;
157 default:
158 kfree_skb(buf);
159 }
160 return;
161 }
162
163 /* Handle message for another node */
164 skb_trim(buf, msg_size(msg));
165 tipc_link_xmit(buf, dnode, msg_link_selector(msg));
166}
167
168int tipc_net_start(u32 addr) 107int tipc_net_start(u32 addr)
169{ 108{
170 char addr_string[16]; 109 char addr_string[16];