aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/msg.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/tipc/msg.c')
-rw-r--r--net/tipc/msg.c100
1 files changed, 28 insertions, 72 deletions
diff --git a/net/tipc/msg.c b/net/tipc/msg.c
index ecb532fb0351..6d92d17e7fb5 100644
--- a/net/tipc/msg.c
+++ b/net/tipc/msg.c
@@ -2,7 +2,7 @@
2 * net/tipc/msg.c: TIPC message header routines 2 * net/tipc/msg.c: TIPC message header routines
3 * 3 *
4 * Copyright (c) 2000-2006, Ericsson AB 4 * Copyright (c) 2000-2006, Ericsson AB
5 * Copyright (c) 2005, Wind River Systems 5 * Copyright (c) 2005, 2010-2011, Wind River Systems
6 * All rights reserved. 6 * All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
@@ -35,10 +35,7 @@
35 */ 35 */
36 36
37#include "core.h" 37#include "core.h"
38#include "addr.h"
39#include "dbg.h"
40#include "msg.h" 38#include "msg.h"
41#include "bearer.h"
42 39
43u32 tipc_msg_tot_importance(struct tipc_msg *m) 40u32 tipc_msg_tot_importance(struct tipc_msg *m)
44{ 41{
@@ -94,7 +91,7 @@ int tipc_msg_calc_data_size(struct iovec const *msg_sect, u32 num_sect)
94 91
95int tipc_msg_build(struct tipc_msg *hdr, 92int tipc_msg_build(struct tipc_msg *hdr,
96 struct iovec const *msg_sect, u32 num_sect, 93 struct iovec const *msg_sect, u32 num_sect,
97 int max_size, int usrmem, struct sk_buff** buf) 94 int max_size, int usrmem, struct sk_buff **buf)
98{ 95{
99 int dsz, sz, hsz, pos, res, cnt; 96 int dsz, sz, hsz, pos, res, cnt;
100 97
@@ -140,6 +137,7 @@ int tipc_msg_build(struct tipc_msg *hdr,
140void tipc_msg_dbg(struct print_buf *buf, struct tipc_msg *msg, const char *str) 137void tipc_msg_dbg(struct print_buf *buf, struct tipc_msg *msg, const char *str)
141{ 138{
142 u32 usr = msg_user(msg); 139 u32 usr = msg_user(msg);
140 tipc_printf(buf, KERN_DEBUG);
143 tipc_printf(buf, str); 141 tipc_printf(buf, str);
144 142
145 switch (usr) { 143 switch (usr) {
@@ -163,10 +161,10 @@ void tipc_msg_dbg(struct print_buf *buf, struct tipc_msg *msg, const char *str)
163 tipc_printf(buf, "LAST:"); 161 tipc_printf(buf, "LAST:");
164 break; 162 break;
165 default: 163 default:
166 tipc_printf(buf, "UNKNOWN:%x",msg_type(msg)); 164 tipc_printf(buf, "UNKNOWN:%x", msg_type(msg));
167 165
168 } 166 }
169 tipc_printf(buf, "NO(%u/%u):",msg_long_msgno(msg), 167 tipc_printf(buf, "NO(%u/%u):", msg_long_msgno(msg),
170 msg_fragm_no(msg)); 168 msg_fragm_no(msg));
171 break; 169 break;
172 case TIPC_LOW_IMPORTANCE: 170 case TIPC_LOW_IMPORTANCE:
@@ -192,10 +190,8 @@ void tipc_msg_dbg(struct print_buf *buf, struct tipc_msg *msg, const char *str)
192 tipc_printf(buf, "DIR:"); 190 tipc_printf(buf, "DIR:");
193 break; 191 break;
194 default: 192 default:
195 tipc_printf(buf, "UNKNOWN TYPE %u",msg_type(msg)); 193 tipc_printf(buf, "UNKNOWN TYPE %u", msg_type(msg));
196 } 194 }
197 if (msg_routed(msg) && !msg_non_seq(msg))
198 tipc_printf(buf, "ROUT:");
199 if (msg_reroute_cnt(msg)) 195 if (msg_reroute_cnt(msg))
200 tipc_printf(buf, "REROUTED(%u):", 196 tipc_printf(buf, "REROUTED(%u):",
201 msg_reroute_cnt(msg)); 197 msg_reroute_cnt(msg));
@@ -210,10 +206,8 @@ void tipc_msg_dbg(struct print_buf *buf, struct tipc_msg *msg, const char *str)
210 tipc_printf(buf, "WDRW:"); 206 tipc_printf(buf, "WDRW:");
211 break; 207 break;
212 default: 208 default:
213 tipc_printf(buf, "UNKNOWN:%x",msg_type(msg)); 209 tipc_printf(buf, "UNKNOWN:%x", msg_type(msg));
214 } 210 }
215 if (msg_routed(msg))
216 tipc_printf(buf, "ROUT:");
217 if (msg_reroute_cnt(msg)) 211 if (msg_reroute_cnt(msg))
218 tipc_printf(buf, "REROUTED(%u):", 212 tipc_printf(buf, "REROUTED(%u):",
219 msg_reroute_cnt(msg)); 213 msg_reroute_cnt(msg));
@@ -229,39 +223,36 @@ void tipc_msg_dbg(struct print_buf *buf, struct tipc_msg *msg, const char *str)
229 break; 223 break;
230 case CONN_ACK: 224 case CONN_ACK:
231 tipc_printf(buf, "CONN_ACK:"); 225 tipc_printf(buf, "CONN_ACK:");
232 tipc_printf(buf, "ACK(%u):",msg_msgcnt(msg)); 226 tipc_printf(buf, "ACK(%u):", msg_msgcnt(msg));
233 break; 227 break;
234 default: 228 default:
235 tipc_printf(buf, "UNKNOWN TYPE:%x",msg_type(msg)); 229 tipc_printf(buf, "UNKNOWN TYPE:%x", msg_type(msg));
236 } 230 }
237 if (msg_routed(msg))
238 tipc_printf(buf, "ROUT:");
239 if (msg_reroute_cnt(msg)) 231 if (msg_reroute_cnt(msg))
240 tipc_printf(buf, "REROUTED(%u):",msg_reroute_cnt(msg)); 232 tipc_printf(buf, "REROUTED(%u):", msg_reroute_cnt(msg));
241 break; 233 break;
242 case LINK_PROTOCOL: 234 case LINK_PROTOCOL:
243 tipc_printf(buf, "PROT:TIM(%u):",msg_timestamp(msg));
244 switch (msg_type(msg)) { 235 switch (msg_type(msg)) {
245 case STATE_MSG: 236 case STATE_MSG:
246 tipc_printf(buf, "STATE:"); 237 tipc_printf(buf, "STATE:");
247 tipc_printf(buf, "%s:",msg_probe(msg) ? "PRB" :""); 238 tipc_printf(buf, "%s:", msg_probe(msg) ? "PRB" : "");
248 tipc_printf(buf, "NXS(%u):",msg_next_sent(msg)); 239 tipc_printf(buf, "NXS(%u):", msg_next_sent(msg));
249 tipc_printf(buf, "GAP(%u):",msg_seq_gap(msg)); 240 tipc_printf(buf, "GAP(%u):", msg_seq_gap(msg));
250 tipc_printf(buf, "LSTBC(%u):",msg_last_bcast(msg)); 241 tipc_printf(buf, "LSTBC(%u):", msg_last_bcast(msg));
251 break; 242 break;
252 case RESET_MSG: 243 case RESET_MSG:
253 tipc_printf(buf, "RESET:"); 244 tipc_printf(buf, "RESET:");
254 if (msg_size(msg) != msg_hdr_sz(msg)) 245 if (msg_size(msg) != msg_hdr_sz(msg))
255 tipc_printf(buf, "BEAR:%s:",msg_data(msg)); 246 tipc_printf(buf, "BEAR:%s:", msg_data(msg));
256 break; 247 break;
257 case ACTIVATE_MSG: 248 case ACTIVATE_MSG:
258 tipc_printf(buf, "ACTIVATE:"); 249 tipc_printf(buf, "ACTIVATE:");
259 break; 250 break;
260 default: 251 default:
261 tipc_printf(buf, "UNKNOWN TYPE:%x",msg_type(msg)); 252 tipc_printf(buf, "UNKNOWN TYPE:%x", msg_type(msg));
262 } 253 }
263 tipc_printf(buf, "PLANE(%c):",msg_net_plane(msg)); 254 tipc_printf(buf, "PLANE(%c):", msg_net_plane(msg));
264 tipc_printf(buf, "SESS(%u):",msg_session(msg)); 255 tipc_printf(buf, "SESS(%u):", msg_session(msg));
265 break; 256 break;
266 case CHANGEOVER_PROTOCOL: 257 case CHANGEOVER_PROTOCOL:
267 tipc_printf(buf, "TUNL:"); 258 tipc_printf(buf, "TUNL:");
@@ -271,37 +262,10 @@ void tipc_msg_dbg(struct print_buf *buf, struct tipc_msg *msg, const char *str)
271 break; 262 break;
272 case ORIGINAL_MSG: 263 case ORIGINAL_MSG:
273 tipc_printf(buf, "ORIG:"); 264 tipc_printf(buf, "ORIG:");
274 tipc_printf(buf, "EXP(%u)",msg_msgcnt(msg)); 265 tipc_printf(buf, "EXP(%u)", msg_msgcnt(msg));
275 break; 266 break;
276 default: 267 default:
277 tipc_printf(buf, "UNKNOWN TYPE:%x",msg_type(msg)); 268 tipc_printf(buf, "UNKNOWN TYPE:%x", msg_type(msg));
278 }
279 break;
280 case ROUTE_DISTRIBUTOR:
281 tipc_printf(buf, "ROUTING_MNG:");
282 switch (msg_type(msg)) {
283 case EXT_ROUTING_TABLE:
284 tipc_printf(buf, "EXT_TBL:");
285 tipc_printf(buf, "TO:%x:",msg_remote_node(msg));
286 break;
287 case LOCAL_ROUTING_TABLE:
288 tipc_printf(buf, "LOCAL_TBL:");
289 tipc_printf(buf, "TO:%x:",msg_remote_node(msg));
290 break;
291 case SLAVE_ROUTING_TABLE:
292 tipc_printf(buf, "DP_TBL:");
293 tipc_printf(buf, "TO:%x:",msg_remote_node(msg));
294 break;
295 case ROUTE_ADDITION:
296 tipc_printf(buf, "ADD:");
297 tipc_printf(buf, "TO:%x:",msg_remote_node(msg));
298 break;
299 case ROUTE_REMOVAL:
300 tipc_printf(buf, "REMOVE:");
301 tipc_printf(buf, "TO:%x:",msg_remote_node(msg));
302 break;
303 default:
304 tipc_printf(buf, "UNKNOWN TYPE:%x",msg_type(msg));
305 } 269 }
306 break; 270 break;
307 case LINK_CONFIG: 271 case LINK_CONFIG:
@@ -314,7 +278,7 @@ void tipc_msg_dbg(struct print_buf *buf, struct tipc_msg *msg, const char *str)
314 tipc_printf(buf, "DSC_RESP:"); 278 tipc_printf(buf, "DSC_RESP:");
315 break; 279 break;
316 default: 280 default:
317 tipc_printf(buf, "UNKNOWN TYPE:%x:",msg_type(msg)); 281 tipc_printf(buf, "UNKNOWN TYPE:%x:", msg_type(msg));
318 break; 282 break;
319 } 283 }
320 break; 284 break;
@@ -350,7 +314,8 @@ void tipc_msg_dbg(struct print_buf *buf, struct tipc_msg *msg, const char *str)
350 tipc_printf(buf, "UNKNOWN ERROR(%x):", 314 tipc_printf(buf, "UNKNOWN ERROR(%x):",
351 msg_errcode(msg)); 315 msg_errcode(msg));
352 } 316 }
353 default:{} 317 default:
318 break;
354 } 319 }
355 320
356 tipc_printf(buf, "HZ(%u):", msg_hdr_sz(msg)); 321 tipc_printf(buf, "HZ(%u):", msg_hdr_sz(msg));
@@ -359,9 +324,8 @@ void tipc_msg_dbg(struct print_buf *buf, struct tipc_msg *msg, const char *str)
359 324
360 if (msg_non_seq(msg)) 325 if (msg_non_seq(msg))
361 tipc_printf(buf, "NOSEQ:"); 326 tipc_printf(buf, "NOSEQ:");
362 else { 327 else
363 tipc_printf(buf, "ACK(%u):", msg_ack(msg)); 328 tipc_printf(buf, "ACK(%u):", msg_ack(msg));
364 }
365 tipc_printf(buf, "BACK(%u):", msg_bcast_ack(msg)); 329 tipc_printf(buf, "BACK(%u):", msg_bcast_ack(msg));
366 tipc_printf(buf, "PRND(%x)", msg_prevnode(msg)); 330 tipc_printf(buf, "PRND(%x)", msg_prevnode(msg));
367 331
@@ -383,21 +347,15 @@ void tipc_msg_dbg(struct print_buf *buf, struct tipc_msg *msg, const char *str)
383 tipc_printf(buf, ":OPRT(%u):", msg_origport(msg)); 347 tipc_printf(buf, ":OPRT(%u):", msg_origport(msg));
384 tipc_printf(buf, ":DPRT(%u):", msg_destport(msg)); 348 tipc_printf(buf, ":DPRT(%u):", msg_destport(msg));
385 } 349 }
386 if (msg_routed(msg) && !msg_non_seq(msg))
387 tipc_printf(buf, ":TSEQN(%u)", msg_transp_seqno(msg));
388 } 350 }
389 if (msg_user(msg) == NAME_DISTRIBUTOR) { 351 if (msg_user(msg) == NAME_DISTRIBUTOR) {
390 tipc_printf(buf, ":ONOD(%x):", msg_orignode(msg)); 352 tipc_printf(buf, ":ONOD(%x):", msg_orignode(msg));
391 tipc_printf(buf, ":DNOD(%x):", msg_destnode(msg)); 353 tipc_printf(buf, ":DNOD(%x):", msg_destnode(msg));
392 if (msg_routed(msg)) {
393 tipc_printf(buf, ":CSEQN(%u)", msg_transp_seqno(msg));
394 }
395 } 354 }
396 355
397 if (msg_user(msg) == LINK_CONFIG) { 356 if (msg_user(msg) == LINK_CONFIG) {
398 u32* raw = (u32*)msg; 357 u32 *raw = (u32 *)msg;
399 struct tipc_media_addr* orig = (struct tipc_media_addr*)&raw[5]; 358 struct tipc_media_addr *orig = (struct tipc_media_addr *)&raw[5];
400 tipc_printf(buf, ":REQL(%u):", msg_req_links(msg));
401 tipc_printf(buf, ":DDOM(%x):", msg_dest_domain(msg)); 359 tipc_printf(buf, ":DDOM(%x):", msg_dest_domain(msg));
402 tipc_printf(buf, ":NETID(%u):", msg_bc_netid(msg)); 360 tipc_printf(buf, ":NETID(%u):", msg_bc_netid(msg));
403 tipc_media_addr_printf(buf, orig); 361 tipc_media_addr_printf(buf, orig);
@@ -407,12 +365,10 @@ void tipc_msg_dbg(struct print_buf *buf, struct tipc_msg *msg, const char *str)
407 tipc_printf(buf, "TO(%u):", msg_bcgap_to(msg)); 365 tipc_printf(buf, "TO(%u):", msg_bcgap_to(msg));
408 } 366 }
409 tipc_printf(buf, "\n"); 367 tipc_printf(buf, "\n");
410 if ((usr == CHANGEOVER_PROTOCOL) && (msg_msgcnt(msg))) { 368 if ((usr == CHANGEOVER_PROTOCOL) && (msg_msgcnt(msg)))
411 tipc_msg_dbg(buf, msg_get_wrapped(msg), " /"); 369 tipc_msg_dbg(buf, msg_get_wrapped(msg), " /");
412 } 370 if ((usr == MSG_FRAGMENTER) && (msg_type(msg) == FIRST_FRAGMENT))
413 if ((usr == MSG_FRAGMENTER) && (msg_type(msg) == FIRST_FRAGMENT)) {
414 tipc_msg_dbg(buf, msg_get_wrapped(msg), " /"); 371 tipc_msg_dbg(buf, msg_get_wrapped(msg), " /");
415 }
416} 372}
417 373
418#endif 374#endif