1241211Sdelphij/* 2241211Sdelphij * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 3241211Sdelphij * The Regents of the University of California. All rights reserved. 4241211Sdelphij * 5241211Sdelphij * Redistribution and use in source and binary forms, with or without 6241211Sdelphij * modification, are permitted provided that: (1) source code distributions 7241211Sdelphij * retain the above copyright notice and this paragraph in its entirety, (2) 8241211Sdelphij * distributions including binary code include the above copyright notice and 9241211Sdelphij * this paragraph in its entirety in the documentation or other materials 10241211Sdelphij * provided with the distribution, and (3) all advertising materials mentioning 11241211Sdelphij * features or use of this software display the following acknowledgement: 12241211Sdelphij * ``This product includes software developed by the University of California, 13241211Sdelphij * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of 14241211Sdelphij * the University nor the names of its contributors may be used to endorse 15241211Sdelphij * or promote products derived from this software without specific prior 16241211Sdelphij * written permission. 17241211Sdelphij * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED 18241211Sdelphij * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 19241211Sdelphij * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 20241211Sdelphij */ 21241211Sdelphij 22241211Sdelphij#ifndef lint 23241211Sdelphijstatic const char rcsid[] _U_ = 24241211Sdelphij "@(#) $Header: /tcpdump/master/tcpdump/print-arp.c,v 1.66 2006-03-03 22:53:21 hannes Exp $ (LBL)"; 25241211Sdelphij#endif 26241211Sdelphij 27241211Sdelphij#ifdef HAVE_CONFIG_H 28241211Sdelphij#include "config.h" 29241211Sdelphij#endif 30241211Sdelphij 31241211Sdelphij#include <tcpdump-stdinc.h> 32241211Sdelphij 33241211Sdelphij#include <stdio.h> 34241211Sdelphij#include <string.h> 35241211Sdelphij 36241211Sdelphij#include "netdissect.h" 37241211Sdelphij#include "addrtoname.h" 38241211Sdelphij#include "ether.h" 39241211Sdelphij#include "ethertype.h" 40241211Sdelphij#include "extract.h" /* must come after interface.h */ 41241211Sdelphij 42241211Sdelphij/* 43241211Sdelphij * Transparent Inter-Process Communication (TIPC) protocol. 44241211Sdelphij * 45241211Sdelphij * http://tipc.sourceforge.net/doc/draft-spec-tipc-07.html 46241211Sdelphij * http://tipc.sourceforge.net/doc/tipc_message_formats.html 47241211Sdelphij */ 48241211Sdelphij 49241211Sdelphij#define TIPC_USER_LOW_IMPORTANCE 0 50241211Sdelphij#define TIPC_USER_MEDIUM_IMPORTANCE 1 51241211Sdelphij#define TIPC_USER_HIGH_IMPORTANCE 2 52241211Sdelphij#define TIPC_USER_CRITICAL_IMPORTANCE 3 53241211Sdelphij#define TIPC_USER_BCAST_PROTOCOL 5 54241211Sdelphij#define TIPC_USER_MSG_BUNDLER 6 55241211Sdelphij#define TIPC_USER_LINK_PROTOCOL 7 56241211Sdelphij#define TIPC_USER_CONN_MANAGER 8 57241211Sdelphij#define TIPC_USER_CHANGEOVER_PROTOCOL 10 58241211Sdelphij#define TIPC_USER_NAME_DISTRIBUTOR 11 59241211Sdelphij#define TIPC_USER_MSG_FRAGMENTER 12 60241211Sdelphij#define TIPC_USER_LINK_CONFIG 13 61241211Sdelphij 62241211Sdelphij#define TIPC_CONN_MSG 0 63241211Sdelphij#define TIPC_DIRECT_MSG 1 64241211Sdelphij#define TIPC_NAMED_MSG 2 65241211Sdelphij#define TIPC_MCAST_MSG 3 66241211Sdelphij 67241211Sdelphij#define TIPC_ZONE(addr) (((addr) >> 24) & 0xFF) 68241211Sdelphij#define TIPC_CLUSTER(addr) (((addr) >> 12) & 0xFFF) 69241211Sdelphij#define TIPC_NODE(addr) (((addr) >> 0) & 0xFFF) 70241211Sdelphij 71241211Sdelphijstruct tipc_pkthdr { 72241211Sdelphij u_int32_t w0; 73241211Sdelphij u_int32_t w1; 74241211Sdelphij}; 75241211Sdelphij 76241211Sdelphij#define TIPC_VER(w0) (((w0) >> 29) & 0x07) 77241211Sdelphij#define TIPC_USER(w0) (((w0) >> 25) & 0x0F) 78241211Sdelphij#define TIPC_HSIZE(w0) (((w0) >> 21) & 0x0F) 79241211Sdelphij#define TIPC_MSIZE(w0) (((w0) >> 0) & 0xFFFF) 80241211Sdelphij#define TIPC_MTYPE(w1) (((w1) >> 29) & 0x07) 81241211Sdelphij#define TIPC_BROADCAST_ACK(w1) (((w1) >> 0) & 0xFFFF) 82241211Sdelphij#define TIPC_LINK_ACK(w2) (((w2) >> 16) & 0xFFFF) 83241211Sdelphij#define TIPC_LINK_SEQ(w2) (((w2) >> 0) & 0xFFFF) 84241211Sdelphij 85241211Sdelphijstatic const struct tok tipcuser_values[] = { 86241211Sdelphij { TIPC_USER_LOW_IMPORTANCE, "Low Importance Data payload" }, 87241211Sdelphij { TIPC_USER_MEDIUM_IMPORTANCE, "Medium Importance Data payload" }, 88241211Sdelphij { TIPC_USER_HIGH_IMPORTANCE, "High Importance Data payload" }, 89241211Sdelphij { TIPC_USER_CRITICAL_IMPORTANCE, "Critical Importance Data payload" }, 90241211Sdelphij { TIPC_USER_BCAST_PROTOCOL, "Broadcast Link Protocol internal" }, 91241211Sdelphij { TIPC_USER_MSG_BUNDLER, "Message Bundler Protocol internal" }, 92241211Sdelphij { TIPC_USER_LINK_PROTOCOL, "Link State Protocol internal" }, 93241211Sdelphij { TIPC_USER_CONN_MANAGER, "Connection Manager internal" }, 94241211Sdelphij { TIPC_USER_CHANGEOVER_PROTOCOL, "Link Changeover Protocol internal" }, 95241211Sdelphij { TIPC_USER_NAME_DISTRIBUTOR, "Name Table Update Protocol internal" }, 96241211Sdelphij { TIPC_USER_MSG_FRAGMENTER, "Message Fragmentation Protocol internal" }, 97241211Sdelphij { TIPC_USER_LINK_CONFIG, "Neighbor Detection Protocol internal" }, 98241211Sdelphij { 0, NULL } 99241211Sdelphij}; 100241211Sdelphij 101241211Sdelphijstatic const struct tok tipcmtype_values[] = { 102241211Sdelphij { TIPC_CONN_MSG, "CONN_MSG" }, 103241211Sdelphij { TIPC_DIRECT_MSG, "MCAST_MSG" }, 104241211Sdelphij { TIPC_NAMED_MSG, "NAMED_MSG" }, 105241211Sdelphij { TIPC_MCAST_MSG, "DIRECT_MSG" }, 106241211Sdelphij { 0, NULL } 107241211Sdelphij}; 108241211Sdelphij 109241211Sdelphijstatic const struct tok tipc_linkconf_mtype_values[] = { 110241211Sdelphij { 0, "Link request" }, 111241211Sdelphij { 1, "Link response" }, 112241211Sdelphij { 0, NULL } 113241211Sdelphij}; 114241211Sdelphij 115241211Sdelphijstruct payload_tipc_pkthdr { 116241211Sdelphij u_int32_t w0; 117241211Sdelphij u_int32_t w1; 118241211Sdelphij u_int32_t w2; 119241211Sdelphij u_int32_t prev_node; 120241211Sdelphij u_int32_t orig_port; 121241211Sdelphij u_int32_t dest_port; 122241211Sdelphij u_int32_t orig_node; 123241211Sdelphij u_int32_t dest_node; 124241211Sdelphij u_int32_t name_type; 125241211Sdelphij u_int32_t w9; 126241211Sdelphij u_int32_t wA; 127241211Sdelphij}; 128241211Sdelphij 129241211Sdelphijstruct internal_tipc_pkthdr { 130241211Sdelphij u_int32_t w0; 131241211Sdelphij u_int32_t w1; 132241211Sdelphij u_int32_t w2; 133241211Sdelphij u_int32_t prev_node; 134241211Sdelphij u_int32_t w4; 135241211Sdelphij u_int32_t w5; 136241211Sdelphij u_int32_t orig_node; 137241211Sdelphij u_int32_t dest_node; 138241211Sdelphij u_int32_t trans_seq; 139241211Sdelphij u_int32_t w9; 140241211Sdelphij}; 141241211Sdelphij 142241211Sdelphij#define TIPC_SEQ_GAP(w1) (((w1) >> 16) & 0x1FFF) 143241211Sdelphij#define TIPC_BC_GAP_AFTER(w2) (((w2) >> 16) & 0xFFFF) 144241211Sdelphij#define TIPC_BC_GAP_TO(w2) (((w2) >> 0) & 0xFFFF) 145241211Sdelphij#define TIPC_LAST_SENT_FRAG(w4) (((w4) >> 16) & 0xFFFF) 146241211Sdelphij#define TIPC_NEXT_SENT_FRAG(w4) (((w4) >> 0) & 0xFFFF) 147241211Sdelphij#define TIPC_SESS_NO(w5) (((w5) >> 16) & 0xFFFF) 148241211Sdelphij#define TIPC_MSG_CNT(w9) (((w9) >> 16) & 0xFFFF) 149241211Sdelphij#define TIPC_LINK_TOL(w9) (((w9) >> 0) & 0xFFFF) 150241211Sdelphij 151241211Sdelphijstruct link_conf_tipc_pkthdr { 152241211Sdelphij u_int32_t w0; 153241211Sdelphij u_int32_t w1; 154241211Sdelphij u_int32_t dest_domain; 155241211Sdelphij u_int32_t prev_node; 156241211Sdelphij u_int32_t ntwrk_id; 157241211Sdelphij u_int32_t w5; 158241211Sdelphij u_int8_t media_address[16]; 159241211Sdelphij}; 160241211Sdelphij 161241211Sdelphij#define TIPC_NODE_SIG(w1) (((w1) >> 0) & 0xFFFF) 162241211Sdelphij#define TIPC_MEDIA_ID(w5) (((w5) >> 0) & 0xFF) 163241211Sdelphij 164241211Sdelphijstatic void 165241211Sdelphijprint_payload(netdissect_options *ndo, const struct payload_tipc_pkthdr *ap) 166241211Sdelphij{ 167241211Sdelphij u_int32_t w0, w1, w2; 168241211Sdelphij u_int user; 169241211Sdelphij u_int hsize; 170241211Sdelphij u_int msize; 171241211Sdelphij u_int mtype; 172241211Sdelphij u_int broadcast_ack; 173241211Sdelphij u_int link_ack; 174241211Sdelphij u_int link_seq; 175241211Sdelphij u_int prev_node; 176241211Sdelphij u_int orig_port; 177241211Sdelphij u_int dest_port; 178241211Sdelphij u_int orig_node; 179241211Sdelphij u_int dest_node; 180241211Sdelphij 181241211Sdelphij ND_TCHECK(ap->dest_port); 182241211Sdelphij w0 = EXTRACT_32BITS(&ap->w0); 183241211Sdelphij user = TIPC_USER(w0); 184241211Sdelphij hsize = TIPC_HSIZE(w0); 185241211Sdelphij msize = TIPC_MSIZE(w0); 186241211Sdelphij w1 = EXTRACT_32BITS(&ap->w1); 187241211Sdelphij mtype = TIPC_MTYPE(w1); 188241211Sdelphij prev_node = EXTRACT_32BITS(&ap->prev_node); 189241211Sdelphij orig_port = EXTRACT_32BITS(&ap->orig_port); 190241211Sdelphij dest_port = EXTRACT_32BITS(&ap->dest_port); 191241211Sdelphij if (hsize <= 6) { 192241211Sdelphij ND_PRINT((ndo, "TIPC v%u.0 %u.%u.%u:%u > %u, headerlength %u bytes, MessageSize %u bytes, %s, messageType %s", 193241211Sdelphij TIPC_VER(w0), 194241211Sdelphij TIPC_ZONE(prev_node), TIPC_CLUSTER(prev_node), TIPC_NODE(prev_node), 195241211Sdelphij orig_port, dest_port, 196241211Sdelphij hsize*4, msize, 197241211Sdelphij tok2str(tipcuser_values, "unknown", user), 198241211Sdelphij tok2str(tipcmtype_values, "Unknown", mtype))); 199241211Sdelphij } else { 200241211Sdelphij ND_TCHECK(ap->dest_node); 201241211Sdelphij orig_node = EXTRACT_32BITS(&ap->orig_node); 202241211Sdelphij dest_node = EXTRACT_32BITS(&ap->dest_node); 203241211Sdelphij ND_PRINT((ndo, "TIPC v%u.0 %u.%u.%u:%u > %u.%u.%u:%u, headerlength %u bytes, MessageSize %u bytes, %s, messageType %s", 204241211Sdelphij TIPC_VER(w0), 205241211Sdelphij TIPC_ZONE(orig_node), TIPC_CLUSTER(orig_node), TIPC_NODE(orig_node), 206241211Sdelphij orig_port, 207241211Sdelphij TIPC_ZONE(dest_node), TIPC_CLUSTER(dest_node), TIPC_NODE(dest_node), 208241211Sdelphij dest_port, 209241211Sdelphij hsize*4, msize, 210241211Sdelphij tok2str(tipcuser_values, "unknown", user), 211241211Sdelphij tok2str(tipcmtype_values, "Unknown", mtype))); 212241211Sdelphij 213241211Sdelphij if (ndo->ndo_vflag) { 214241211Sdelphij broadcast_ack = TIPC_BROADCAST_ACK(w1); 215241211Sdelphij w2 = EXTRACT_32BITS(&ap->w2); 216241211Sdelphij link_ack = TIPC_LINK_ACK(w2); 217241211Sdelphij link_seq = TIPC_LINK_SEQ(w2); 218241211Sdelphij ND_PRINT((ndo, "\n\tPrevious Node %u.%u.%u, Broadcast Ack %u, Link Ack %u, Link Sequence %u", 219241211Sdelphij TIPC_ZONE(prev_node), TIPC_CLUSTER(prev_node), TIPC_NODE(prev_node), 220241211Sdelphij broadcast_ack, link_ack, link_seq)); 221241211Sdelphij } 222241211Sdelphij } 223241211Sdelphij return; 224241211Sdelphij 225241211Sdelphijtrunc: 226241211Sdelphij ND_PRINT((ndo, "[|TIPC]")); 227241211Sdelphij} 228241211Sdelphij 229241211Sdelphijstatic void 230241211Sdelphijprint_internal(netdissect_options *ndo, const struct internal_tipc_pkthdr *ap) 231241211Sdelphij{ 232241211Sdelphij u_int32_t w0, w1, w2, w4, w5, w9; 233241211Sdelphij u_int user; 234241211Sdelphij u_int hsize; 235241211Sdelphij u_int msize; 236241211Sdelphij u_int mtype; 237241211Sdelphij u_int seq_gap; 238241211Sdelphij u_int broadcast_ack; 239241211Sdelphij u_int bc_gap_after; 240241211Sdelphij u_int bc_gap_to; 241241211Sdelphij u_int prev_node; 242241211Sdelphij u_int last_sent_frag; 243241211Sdelphij u_int next_sent_frag; 244241211Sdelphij u_int sess_no; 245241211Sdelphij u_int orig_node; 246241211Sdelphij u_int dest_node; 247241211Sdelphij u_int trans_seq; 248241211Sdelphij u_int msg_cnt; 249241211Sdelphij u_int link_tol; 250241211Sdelphij 251241211Sdelphij ND_TCHECK(ap->dest_node); 252241211Sdelphij w0 = EXTRACT_32BITS(&ap->w0); 253241211Sdelphij user = TIPC_USER(w0); 254241211Sdelphij hsize = TIPC_HSIZE(w0); 255241211Sdelphij msize = TIPC_MSIZE(w0); 256241211Sdelphij w1 = EXTRACT_32BITS(&ap->w1); 257241211Sdelphij mtype = TIPC_MTYPE(w1); 258241211Sdelphij orig_node = EXTRACT_32BITS(&ap->orig_node); 259241211Sdelphij dest_node = EXTRACT_32BITS(&ap->dest_node); 260241211Sdelphij ND_PRINT((ndo, "TIPC v%u.0 %u.%u.%u > %u.%u.%u, headerlength %u bytes, MessageSize %u bytes, %s, messageType %s (0x%08x)", 261241211Sdelphij TIPC_VER(w0), 262241211Sdelphij TIPC_ZONE(orig_node), TIPC_CLUSTER(orig_node), TIPC_NODE(orig_node), 263241211Sdelphij TIPC_ZONE(dest_node), TIPC_CLUSTER(dest_node), TIPC_NODE(dest_node), 264241211Sdelphij hsize*4, msize, 265241211Sdelphij tok2str(tipcuser_values, "unknown", user), 266241211Sdelphij tok2str(tipcmtype_values, "Unknown", mtype), w1)); 267241211Sdelphij 268241211Sdelphij if (ndo->ndo_vflag) { 269241211Sdelphij ND_TCHECK(*ap); 270241211Sdelphij seq_gap = TIPC_SEQ_GAP(w1); 271241211Sdelphij broadcast_ack = TIPC_BROADCAST_ACK(w1); 272241211Sdelphij w2 = EXTRACT_32BITS(&ap->w2); 273241211Sdelphij bc_gap_after = TIPC_BC_GAP_AFTER(w2); 274241211Sdelphij bc_gap_to = TIPC_BC_GAP_TO(w2); 275241211Sdelphij prev_node = EXTRACT_32BITS(&ap->prev_node); 276241211Sdelphij w4 = EXTRACT_32BITS(&ap->w4); 277241211Sdelphij last_sent_frag = TIPC_LAST_SENT_FRAG(w4); 278241211Sdelphij next_sent_frag = TIPC_NEXT_SENT_FRAG(w4); 279241211Sdelphij w5 = EXTRACT_32BITS(&ap->w5); 280241211Sdelphij sess_no = TIPC_SESS_NO(w5); 281241211Sdelphij trans_seq = EXTRACT_32BITS(&ap->trans_seq); 282241211Sdelphij w9 = EXTRACT_32BITS(&ap->w9); 283241211Sdelphij msg_cnt = TIPC_MSG_CNT(w9); 284241211Sdelphij link_tol = TIPC_LINK_TOL(w9); 285241211Sdelphij ND_PRINT((ndo, "\n\tPrevious Node %u.%u.%u, Session No. %u, Broadcast Ack %u, Sequence Gap %u, Broadcast Gap After %u, Broadcast Gap To %u, Last Sent Packet No. %u, Next sent Packet No. %u, Transport Sequence %u, msg_count %u, Link Tolerance %u", 286241211Sdelphij TIPC_ZONE(prev_node), TIPC_CLUSTER(prev_node), TIPC_NODE(prev_node), 287241211Sdelphij sess_no, broadcast_ack, seq_gap, bc_gap_after, bc_gap_to, 288241211Sdelphij last_sent_frag, next_sent_frag, trans_seq, msg_cnt, 289241211Sdelphij link_tol)); 290241211Sdelphij } 291241211Sdelphij return; 292241211Sdelphij 293241211Sdelphijtrunc: 294241211Sdelphij ND_PRINT((ndo, "[|TIPC]")); 295241211Sdelphij} 296241211Sdelphij 297241211Sdelphijstatic void 298241211Sdelphijprint_link_conf(netdissect_options *ndo, const struct link_conf_tipc_pkthdr *ap) 299241211Sdelphij{ 300241211Sdelphij u_int32_t w0, w1, w5; 301241211Sdelphij u_int user; 302241211Sdelphij u_int hsize; 303241211Sdelphij u_int msize; 304241211Sdelphij u_int mtype; 305241211Sdelphij u_int node_sig; 306241211Sdelphij u_int prev_node; 307241211Sdelphij u_int dest_domain; 308241211Sdelphij u_int ntwrk_id; 309241211Sdelphij u_int media_id; 310241211Sdelphij 311241211Sdelphij ND_TCHECK(ap->prev_node); 312241211Sdelphij w0 = EXTRACT_32BITS(&ap->w0); 313241211Sdelphij user = TIPC_USER(w0); 314241211Sdelphij hsize = TIPC_HSIZE(w0); 315241211Sdelphij msize = TIPC_MSIZE(w0); 316241211Sdelphij w1 = EXTRACT_32BITS(&ap->w1); 317241211Sdelphij mtype = TIPC_MTYPE(w1); 318241211Sdelphij prev_node = EXTRACT_32BITS(&ap->prev_node); 319241211Sdelphij dest_domain = EXTRACT_32BITS(&ap->dest_domain); 320241211Sdelphij prev_node = EXTRACT_32BITS(&ap->prev_node); 321241211Sdelphij 322241211Sdelphij ND_PRINT((ndo, "TIPC v%u.0 %u.%u.%u > %u.%u.%u, headerlength %u bytes, MessageSize %u bytes, %s, messageType %s", 323241211Sdelphij TIPC_VER(w0), 324241211Sdelphij TIPC_ZONE(prev_node), TIPC_CLUSTER(prev_node), TIPC_NODE(prev_node), 325241211Sdelphij TIPC_ZONE(dest_domain), TIPC_CLUSTER(dest_domain), TIPC_NODE(dest_domain), 326241211Sdelphij hsize*4, msize, 327241211Sdelphij tok2str(tipcuser_values, "unknown", user), 328241211Sdelphij tok2str(tipc_linkconf_mtype_values, "Unknown", mtype))); 329241211Sdelphij if (ndo->ndo_vflag) { 330241211Sdelphij ND_TCHECK(ap->w5); 331241211Sdelphij node_sig = TIPC_NODE_SIG(w1); 332241211Sdelphij ntwrk_id = EXTRACT_32BITS(&ap->ntwrk_id); 333241211Sdelphij w5 = EXTRACT_32BITS(&ap->w5); 334241211Sdelphij media_id = TIPC_MEDIA_ID(w5); 335241211Sdelphij ND_PRINT((ndo, "\n\tNodeSignature %u, network_id %u, media_id %u", 336241211Sdelphij node_sig, ntwrk_id, media_id)); 337241211Sdelphij } 338241211Sdelphij return; 339241211Sdelphij 340241211Sdelphijtrunc: 341241211Sdelphij ND_PRINT((ndo, "[|TIPC]")); 342241211Sdelphij} 343241211Sdelphij 344241211Sdelphijvoid 345241211Sdelphijtipc_print(netdissect_options *ndo, const u_char *bp, u_int length _U_, 346241211Sdelphij u_int caplen _U_) 347241211Sdelphij{ 348241211Sdelphij const struct tipc_pkthdr *ap; 349241211Sdelphij u_int32_t w0; 350241211Sdelphij u_int user; 351241211Sdelphij 352241211Sdelphij ap = (struct tipc_pkthdr *)bp; 353241211Sdelphij ND_TCHECK(ap->w0); 354241211Sdelphij w0 = EXTRACT_32BITS(&ap->w0); 355241211Sdelphij user = TIPC_USER(w0); 356241211Sdelphij 357241211Sdelphij switch (user) 358241211Sdelphij { 359241211Sdelphij case TIPC_USER_LOW_IMPORTANCE: 360241211Sdelphij case TIPC_USER_MEDIUM_IMPORTANCE: 361241211Sdelphij case TIPC_USER_HIGH_IMPORTANCE: 362241211Sdelphij case TIPC_USER_CRITICAL_IMPORTANCE: 363241211Sdelphij case TIPC_USER_NAME_DISTRIBUTOR: 364241211Sdelphij case TIPC_USER_CONN_MANAGER: 365241211Sdelphij print_payload(ndo, (struct payload_tipc_pkthdr *)bp); 366241211Sdelphij break; 367241211Sdelphij 368241211Sdelphij case TIPC_USER_LINK_CONFIG: 369241211Sdelphij print_link_conf(ndo, (struct link_conf_tipc_pkthdr *)bp); 370241211Sdelphij break; 371241211Sdelphij 372241211Sdelphij case TIPC_USER_BCAST_PROTOCOL: 373241211Sdelphij case TIPC_USER_MSG_BUNDLER: 374241211Sdelphij case TIPC_USER_LINK_PROTOCOL: 375241211Sdelphij case TIPC_USER_CHANGEOVER_PROTOCOL: 376241211Sdelphij case TIPC_USER_MSG_FRAGMENTER: 377241211Sdelphij print_internal(ndo, (struct internal_tipc_pkthdr *)bp); 378241211Sdelphij break; 379241211Sdelphij 380241211Sdelphij } 381241211Sdelphij return; 382241211Sdelphij 383241211Sdelphijtrunc: 384241211Sdelphij ND_PRINT((ndo, "[|TIPC]")); 385241211Sdelphij} 386241211Sdelphij 387241211Sdelphij/* 388241211Sdelphij * Local Variables: 389241211Sdelphij * c-style: bsd 390241211Sdelphij * End: 391241211Sdelphij */ 392241211Sdelphij 393