diff options
author | James Morris <james.l.morris@oracle.com> | 2014-11-19 05:32:12 -0500 |
---|---|---|
committer | James Morris <james.l.morris@oracle.com> | 2014-11-19 05:32:12 -0500 |
commit | b10778a00d40b3d9fdaaf5891e802794781ff71c (patch) | |
tree | 6ba4cbac86eecedc3f30650e7f764ecf00c83898 /net/tipc/net.c | |
parent | 594081ee7145cc30a3977cb4e218f81213b63dc5 (diff) | |
parent | bfe01a5ba2490f299e1d2d5508cbbbadd897bbe9 (diff) |
Merge commit 'v3.17' into next
Diffstat (limited to 'net/tipc/net.c')
-rw-r--r-- | net/tipc/net.c | 63 |
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 | ||
107 | static 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 | |||
129 | void 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 | |||
168 | int tipc_net_start(u32 addr) | 107 | int tipc_net_start(u32 addr) |
169 | { | 108 | { |
170 | char addr_string[16]; | 109 | char addr_string[16]; |