153f17a9db278d33517d9888dd77848f554522a38JP Abgrall/* 253f17a9db278d33517d9888dd77848f554522a38JP Abgrall * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 353f17a9db278d33517d9888dd77848f554522a38JP Abgrall * The Regents of the University of California. All rights reserved. 453f17a9db278d33517d9888dd77848f554522a38JP Abgrall * 553f17a9db278d33517d9888dd77848f554522a38JP Abgrall * Redistribution and use in source and binary forms, with or without 653f17a9db278d33517d9888dd77848f554522a38JP Abgrall * modification, are permitted provided that: (1) source code distributions 753f17a9db278d33517d9888dd77848f554522a38JP Abgrall * retain the above copyright notice and this paragraph in its entirety, (2) 853f17a9db278d33517d9888dd77848f554522a38JP Abgrall * distributions including binary code include the above copyright notice and 953f17a9db278d33517d9888dd77848f554522a38JP Abgrall * this paragraph in its entirety in the documentation or other materials 1053f17a9db278d33517d9888dd77848f554522a38JP Abgrall * provided with the distribution, and (3) all advertising materials mentioning 1153f17a9db278d33517d9888dd77848f554522a38JP Abgrall * features or use of this software display the following acknowledgement: 1253f17a9db278d33517d9888dd77848f554522a38JP Abgrall * ``This product includes software developed by the University of California, 1353f17a9db278d33517d9888dd77848f554522a38JP Abgrall * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of 1453f17a9db278d33517d9888dd77848f554522a38JP Abgrall * the University nor the names of its contributors may be used to endorse 1553f17a9db278d33517d9888dd77848f554522a38JP Abgrall * or promote products derived from this software without specific prior 1653f17a9db278d33517d9888dd77848f554522a38JP Abgrall * written permission. 1753f17a9db278d33517d9888dd77848f554522a38JP Abgrall * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED 1853f17a9db278d33517d9888dd77848f554522a38JP Abgrall * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 1953f17a9db278d33517d9888dd77848f554522a38JP Abgrall * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 2053f17a9db278d33517d9888dd77848f554522a38JP Abgrall */ 2153f17a9db278d33517d9888dd77848f554522a38JP Abgrall 2253f17a9db278d33517d9888dd77848f554522a38JP Abgrall#ifndef lint 2353f17a9db278d33517d9888dd77848f554522a38JP Abgrallstatic const char rcsid[] _U_ = 2453f17a9db278d33517d9888dd77848f554522a38JP Abgrall "@(#) $Header: /tcpdump/master/tcpdump/print-arp.c,v 1.66 2006-03-03 22:53:21 hannes Exp $ (LBL)"; 2553f17a9db278d33517d9888dd77848f554522a38JP Abgrall#endif 2653f17a9db278d33517d9888dd77848f554522a38JP Abgrall 2753f17a9db278d33517d9888dd77848f554522a38JP Abgrall#ifdef HAVE_CONFIG_H 2853f17a9db278d33517d9888dd77848f554522a38JP Abgrall#include "config.h" 2953f17a9db278d33517d9888dd77848f554522a38JP Abgrall#endif 3053f17a9db278d33517d9888dd77848f554522a38JP Abgrall 3153f17a9db278d33517d9888dd77848f554522a38JP Abgrall#include <tcpdump-stdinc.h> 3253f17a9db278d33517d9888dd77848f554522a38JP Abgrall 3353f17a9db278d33517d9888dd77848f554522a38JP Abgrall#include <stdio.h> 3453f17a9db278d33517d9888dd77848f554522a38JP Abgrall#include <string.h> 3553f17a9db278d33517d9888dd77848f554522a38JP Abgrall 3653f17a9db278d33517d9888dd77848f554522a38JP Abgrall#include "netdissect.h" 3753f17a9db278d33517d9888dd77848f554522a38JP Abgrall#include "addrtoname.h" 3853f17a9db278d33517d9888dd77848f554522a38JP Abgrall#include "ether.h" 3953f17a9db278d33517d9888dd77848f554522a38JP Abgrall#include "ethertype.h" 4053f17a9db278d33517d9888dd77848f554522a38JP Abgrall#include "extract.h" /* must come after interface.h */ 4153f17a9db278d33517d9888dd77848f554522a38JP Abgrall 4253f17a9db278d33517d9888dd77848f554522a38JP Abgrall/* 4353f17a9db278d33517d9888dd77848f554522a38JP Abgrall * Transparent Inter-Process Communication (TIPC) protocol. 4453f17a9db278d33517d9888dd77848f554522a38JP Abgrall * 4553f17a9db278d33517d9888dd77848f554522a38JP Abgrall * http://tipc.sourceforge.net/doc/draft-spec-tipc-07.html 4653f17a9db278d33517d9888dd77848f554522a38JP Abgrall * http://tipc.sourceforge.net/doc/tipc_message_formats.html 4753f17a9db278d33517d9888dd77848f554522a38JP Abgrall */ 4853f17a9db278d33517d9888dd77848f554522a38JP Abgrall 4953f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_USER_LOW_IMPORTANCE 0 5053f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_USER_MEDIUM_IMPORTANCE 1 5153f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_USER_HIGH_IMPORTANCE 2 5253f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_USER_CRITICAL_IMPORTANCE 3 5353f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_USER_BCAST_PROTOCOL 5 5453f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_USER_MSG_BUNDLER 6 5553f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_USER_LINK_PROTOCOL 7 5653f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_USER_CONN_MANAGER 8 5753f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_USER_CHANGEOVER_PROTOCOL 10 5853f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_USER_NAME_DISTRIBUTOR 11 5953f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_USER_MSG_FRAGMENTER 12 6053f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_USER_LINK_CONFIG 13 6153f17a9db278d33517d9888dd77848f554522a38JP Abgrall 6253f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_CONN_MSG 0 6353f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_DIRECT_MSG 1 6453f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_NAMED_MSG 2 6553f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_MCAST_MSG 3 6653f17a9db278d33517d9888dd77848f554522a38JP Abgrall 6753f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_ZONE(addr) (((addr) >> 24) & 0xFF) 6853f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_CLUSTER(addr) (((addr) >> 12) & 0xFFF) 6953f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_NODE(addr) (((addr) >> 0) & 0xFFF) 7053f17a9db278d33517d9888dd77848f554522a38JP Abgrall 7153f17a9db278d33517d9888dd77848f554522a38JP Abgrallstruct tipc_pkthdr { 7253f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w0; 7353f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w1; 7453f17a9db278d33517d9888dd77848f554522a38JP Abgrall}; 7553f17a9db278d33517d9888dd77848f554522a38JP Abgrall 7653f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_VER(w0) (((w0) >> 29) & 0x07) 7753f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_USER(w0) (((w0) >> 25) & 0x0F) 7853f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_HSIZE(w0) (((w0) >> 21) & 0x0F) 7953f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_MSIZE(w0) (((w0) >> 0) & 0xFFFF) 8053f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_MTYPE(w1) (((w1) >> 29) & 0x07) 8153f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_BROADCAST_ACK(w1) (((w1) >> 0) & 0xFFFF) 8253f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_LINK_ACK(w2) (((w2) >> 16) & 0xFFFF) 8353f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_LINK_SEQ(w2) (((w2) >> 0) & 0xFFFF) 8453f17a9db278d33517d9888dd77848f554522a38JP Abgrall 8553f17a9db278d33517d9888dd77848f554522a38JP Abgrallstatic const struct tok tipcuser_values[] = { 8653f17a9db278d33517d9888dd77848f554522a38JP Abgrall { TIPC_USER_LOW_IMPORTANCE, "Low Importance Data payload" }, 8753f17a9db278d33517d9888dd77848f554522a38JP Abgrall { TIPC_USER_MEDIUM_IMPORTANCE, "Medium Importance Data payload" }, 8853f17a9db278d33517d9888dd77848f554522a38JP Abgrall { TIPC_USER_HIGH_IMPORTANCE, "High Importance Data payload" }, 8953f17a9db278d33517d9888dd77848f554522a38JP Abgrall { TIPC_USER_CRITICAL_IMPORTANCE, "Critical Importance Data payload" }, 9053f17a9db278d33517d9888dd77848f554522a38JP Abgrall { TIPC_USER_BCAST_PROTOCOL, "Broadcast Link Protocol internal" }, 9153f17a9db278d33517d9888dd77848f554522a38JP Abgrall { TIPC_USER_MSG_BUNDLER, "Message Bundler Protocol internal" }, 9253f17a9db278d33517d9888dd77848f554522a38JP Abgrall { TIPC_USER_LINK_PROTOCOL, "Link State Protocol internal" }, 9353f17a9db278d33517d9888dd77848f554522a38JP Abgrall { TIPC_USER_CONN_MANAGER, "Connection Manager internal" }, 9453f17a9db278d33517d9888dd77848f554522a38JP Abgrall { TIPC_USER_CHANGEOVER_PROTOCOL, "Link Changeover Protocol internal" }, 9553f17a9db278d33517d9888dd77848f554522a38JP Abgrall { TIPC_USER_NAME_DISTRIBUTOR, "Name Table Update Protocol internal" }, 9653f17a9db278d33517d9888dd77848f554522a38JP Abgrall { TIPC_USER_MSG_FRAGMENTER, "Message Fragmentation Protocol internal" }, 9753f17a9db278d33517d9888dd77848f554522a38JP Abgrall { TIPC_USER_LINK_CONFIG, "Neighbor Detection Protocol internal" }, 9853f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 0, NULL } 9953f17a9db278d33517d9888dd77848f554522a38JP Abgrall}; 10053f17a9db278d33517d9888dd77848f554522a38JP Abgrall 10153f17a9db278d33517d9888dd77848f554522a38JP Abgrallstatic const struct tok tipcmtype_values[] = { 10253f17a9db278d33517d9888dd77848f554522a38JP Abgrall { TIPC_CONN_MSG, "CONN_MSG" }, 10353f17a9db278d33517d9888dd77848f554522a38JP Abgrall { TIPC_DIRECT_MSG, "MCAST_MSG" }, 10453f17a9db278d33517d9888dd77848f554522a38JP Abgrall { TIPC_NAMED_MSG, "NAMED_MSG" }, 10553f17a9db278d33517d9888dd77848f554522a38JP Abgrall { TIPC_MCAST_MSG, "DIRECT_MSG" }, 10653f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 0, NULL } 10753f17a9db278d33517d9888dd77848f554522a38JP Abgrall}; 10853f17a9db278d33517d9888dd77848f554522a38JP Abgrall 10953f17a9db278d33517d9888dd77848f554522a38JP Abgrallstatic const struct tok tipc_linkconf_mtype_values[] = { 11053f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 0, "Link request" }, 11153f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 1, "Link response" }, 11253f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 0, NULL } 11353f17a9db278d33517d9888dd77848f554522a38JP Abgrall}; 11453f17a9db278d33517d9888dd77848f554522a38JP Abgrall 11553f17a9db278d33517d9888dd77848f554522a38JP Abgrallstruct payload_tipc_pkthdr { 11653f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w0; 11753f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w1; 11853f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w2; 11953f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t prev_node; 12053f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t orig_port; 12153f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t dest_port; 12253f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t orig_node; 12353f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t dest_node; 12453f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t name_type; 12553f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w9; 12653f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t wA; 12753f17a9db278d33517d9888dd77848f554522a38JP Abgrall}; 12853f17a9db278d33517d9888dd77848f554522a38JP Abgrall 12953f17a9db278d33517d9888dd77848f554522a38JP Abgrallstruct internal_tipc_pkthdr { 13053f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w0; 13153f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w1; 13253f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w2; 13353f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t prev_node; 13453f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w4; 13553f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w5; 13653f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t orig_node; 13753f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t dest_node; 13853f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t trans_seq; 13953f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w9; 14053f17a9db278d33517d9888dd77848f554522a38JP Abgrall}; 14153f17a9db278d33517d9888dd77848f554522a38JP Abgrall 14253f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_SEQ_GAP(w1) (((w1) >> 16) & 0x1FFF) 14353f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_BC_GAP_AFTER(w2) (((w2) >> 16) & 0xFFFF) 14453f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_BC_GAP_TO(w2) (((w2) >> 0) & 0xFFFF) 14553f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_LAST_SENT_FRAG(w4) (((w4) >> 16) & 0xFFFF) 14653f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_NEXT_SENT_FRAG(w4) (((w4) >> 0) & 0xFFFF) 14753f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_SESS_NO(w5) (((w5) >> 16) & 0xFFFF) 14853f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_MSG_CNT(w9) (((w9) >> 16) & 0xFFFF) 14953f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_LINK_TOL(w9) (((w9) >> 0) & 0xFFFF) 15053f17a9db278d33517d9888dd77848f554522a38JP Abgrall 15153f17a9db278d33517d9888dd77848f554522a38JP Abgrallstruct link_conf_tipc_pkthdr { 15253f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w0; 15353f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w1; 15453f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t dest_domain; 15553f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t prev_node; 15653f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t ntwrk_id; 15753f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w5; 15853f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int8_t media_address[16]; 15953f17a9db278d33517d9888dd77848f554522a38JP Abgrall}; 16053f17a9db278d33517d9888dd77848f554522a38JP Abgrall 16153f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_NODE_SIG(w1) (((w1) >> 0) & 0xFFFF) 16253f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define TIPC_MEDIA_ID(w5) (((w5) >> 0) & 0xFF) 16353f17a9db278d33517d9888dd77848f554522a38JP Abgrall 16453f17a9db278d33517d9888dd77848f554522a38JP Abgrallstatic void 16553f17a9db278d33517d9888dd77848f554522a38JP Abgrallprint_payload(netdissect_options *ndo, const struct payload_tipc_pkthdr *ap) 16653f17a9db278d33517d9888dd77848f554522a38JP Abgrall{ 16753f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w0, w1, w2; 16853f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int user; 16953f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int hsize; 17053f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int msize; 17153f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int mtype; 17253f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int broadcast_ack; 17353f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int link_ack; 17453f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int link_seq; 17553f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int prev_node; 17653f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int orig_port; 17753f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int dest_port; 17853f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int orig_node; 17953f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int dest_node; 18053f17a9db278d33517d9888dd77848f554522a38JP Abgrall 18153f17a9db278d33517d9888dd77848f554522a38JP Abgrall ND_TCHECK(ap->dest_port); 18253f17a9db278d33517d9888dd77848f554522a38JP Abgrall w0 = EXTRACT_32BITS(&ap->w0); 18353f17a9db278d33517d9888dd77848f554522a38JP Abgrall user = TIPC_USER(w0); 18453f17a9db278d33517d9888dd77848f554522a38JP Abgrall hsize = TIPC_HSIZE(w0); 18553f17a9db278d33517d9888dd77848f554522a38JP Abgrall msize = TIPC_MSIZE(w0); 18653f17a9db278d33517d9888dd77848f554522a38JP Abgrall w1 = EXTRACT_32BITS(&ap->w1); 18753f17a9db278d33517d9888dd77848f554522a38JP Abgrall mtype = TIPC_MTYPE(w1); 18853f17a9db278d33517d9888dd77848f554522a38JP Abgrall prev_node = EXTRACT_32BITS(&ap->prev_node); 18953f17a9db278d33517d9888dd77848f554522a38JP Abgrall orig_port = EXTRACT_32BITS(&ap->orig_port); 19053f17a9db278d33517d9888dd77848f554522a38JP Abgrall dest_port = EXTRACT_32BITS(&ap->dest_port); 19153f17a9db278d33517d9888dd77848f554522a38JP Abgrall if (hsize <= 6) { 19253f17a9db278d33517d9888dd77848f554522a38JP Abgrall ND_PRINT((ndo, "TIPC v%u.0 %u.%u.%u:%u > %u, headerlength %u bytes, MessageSize %u bytes, %s, messageType %s", 19353f17a9db278d33517d9888dd77848f554522a38JP Abgrall TIPC_VER(w0), 19453f17a9db278d33517d9888dd77848f554522a38JP Abgrall TIPC_ZONE(prev_node), TIPC_CLUSTER(prev_node), TIPC_NODE(prev_node), 19553f17a9db278d33517d9888dd77848f554522a38JP Abgrall orig_port, dest_port, 19653f17a9db278d33517d9888dd77848f554522a38JP Abgrall hsize*4, msize, 19753f17a9db278d33517d9888dd77848f554522a38JP Abgrall tok2str(tipcuser_values, "unknown", user), 19853f17a9db278d33517d9888dd77848f554522a38JP Abgrall tok2str(tipcmtype_values, "Unknown", mtype))); 19953f17a9db278d33517d9888dd77848f554522a38JP Abgrall } else { 20053f17a9db278d33517d9888dd77848f554522a38JP Abgrall ND_TCHECK(ap->dest_node); 20153f17a9db278d33517d9888dd77848f554522a38JP Abgrall orig_node = EXTRACT_32BITS(&ap->orig_node); 20253f17a9db278d33517d9888dd77848f554522a38JP Abgrall dest_node = EXTRACT_32BITS(&ap->dest_node); 20353f17a9db278d33517d9888dd77848f554522a38JP Abgrall ND_PRINT((ndo, "TIPC v%u.0 %u.%u.%u:%u > %u.%u.%u:%u, headerlength %u bytes, MessageSize %u bytes, %s, messageType %s", 20453f17a9db278d33517d9888dd77848f554522a38JP Abgrall TIPC_VER(w0), 20553f17a9db278d33517d9888dd77848f554522a38JP Abgrall TIPC_ZONE(orig_node), TIPC_CLUSTER(orig_node), TIPC_NODE(orig_node), 20653f17a9db278d33517d9888dd77848f554522a38JP Abgrall orig_port, 20753f17a9db278d33517d9888dd77848f554522a38JP Abgrall TIPC_ZONE(dest_node), TIPC_CLUSTER(dest_node), TIPC_NODE(dest_node), 20853f17a9db278d33517d9888dd77848f554522a38JP Abgrall dest_port, 20953f17a9db278d33517d9888dd77848f554522a38JP Abgrall hsize*4, msize, 21053f17a9db278d33517d9888dd77848f554522a38JP Abgrall tok2str(tipcuser_values, "unknown", user), 21153f17a9db278d33517d9888dd77848f554522a38JP Abgrall tok2str(tipcmtype_values, "Unknown", mtype))); 21253f17a9db278d33517d9888dd77848f554522a38JP Abgrall 21353f17a9db278d33517d9888dd77848f554522a38JP Abgrall if (ndo->ndo_vflag) { 21453f17a9db278d33517d9888dd77848f554522a38JP Abgrall broadcast_ack = TIPC_BROADCAST_ACK(w1); 21553f17a9db278d33517d9888dd77848f554522a38JP Abgrall w2 = EXTRACT_32BITS(&ap->w2); 21653f17a9db278d33517d9888dd77848f554522a38JP Abgrall link_ack = TIPC_LINK_ACK(w2); 21753f17a9db278d33517d9888dd77848f554522a38JP Abgrall link_seq = TIPC_LINK_SEQ(w2); 21853f17a9db278d33517d9888dd77848f554522a38JP Abgrall ND_PRINT((ndo, "\n\tPrevious Node %u.%u.%u, Broadcast Ack %u, Link Ack %u, Link Sequence %u", 21953f17a9db278d33517d9888dd77848f554522a38JP Abgrall TIPC_ZONE(prev_node), TIPC_CLUSTER(prev_node), TIPC_NODE(prev_node), 22053f17a9db278d33517d9888dd77848f554522a38JP Abgrall broadcast_ack, link_ack, link_seq)); 22153f17a9db278d33517d9888dd77848f554522a38JP Abgrall } 22253f17a9db278d33517d9888dd77848f554522a38JP Abgrall } 22353f17a9db278d33517d9888dd77848f554522a38JP Abgrall return; 22453f17a9db278d33517d9888dd77848f554522a38JP Abgrall 22553f17a9db278d33517d9888dd77848f554522a38JP Abgralltrunc: 22653f17a9db278d33517d9888dd77848f554522a38JP Abgrall ND_PRINT((ndo, "[|TIPC]")); 22753f17a9db278d33517d9888dd77848f554522a38JP Abgrall} 22853f17a9db278d33517d9888dd77848f554522a38JP Abgrall 22953f17a9db278d33517d9888dd77848f554522a38JP Abgrallstatic void 23053f17a9db278d33517d9888dd77848f554522a38JP Abgrallprint_internal(netdissect_options *ndo, const struct internal_tipc_pkthdr *ap) 23153f17a9db278d33517d9888dd77848f554522a38JP Abgrall{ 23253f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w0, w1, w2, w4, w5, w9; 23353f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int user; 23453f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int hsize; 23553f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int msize; 23653f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int mtype; 23753f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int seq_gap; 23853f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int broadcast_ack; 23953f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int bc_gap_after; 24053f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int bc_gap_to; 24153f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int prev_node; 24253f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int last_sent_frag; 24353f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int next_sent_frag; 24453f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int sess_no; 24553f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int orig_node; 24653f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int dest_node; 24753f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int trans_seq; 24853f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int msg_cnt; 24953f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int link_tol; 25053f17a9db278d33517d9888dd77848f554522a38JP Abgrall 25153f17a9db278d33517d9888dd77848f554522a38JP Abgrall ND_TCHECK(ap->dest_node); 25253f17a9db278d33517d9888dd77848f554522a38JP Abgrall w0 = EXTRACT_32BITS(&ap->w0); 25353f17a9db278d33517d9888dd77848f554522a38JP Abgrall user = TIPC_USER(w0); 25453f17a9db278d33517d9888dd77848f554522a38JP Abgrall hsize = TIPC_HSIZE(w0); 25553f17a9db278d33517d9888dd77848f554522a38JP Abgrall msize = TIPC_MSIZE(w0); 25653f17a9db278d33517d9888dd77848f554522a38JP Abgrall w1 = EXTRACT_32BITS(&ap->w1); 25753f17a9db278d33517d9888dd77848f554522a38JP Abgrall mtype = TIPC_MTYPE(w1); 25853f17a9db278d33517d9888dd77848f554522a38JP Abgrall orig_node = EXTRACT_32BITS(&ap->orig_node); 25953f17a9db278d33517d9888dd77848f554522a38JP Abgrall dest_node = EXTRACT_32BITS(&ap->dest_node); 26053f17a9db278d33517d9888dd77848f554522a38JP Abgrall ND_PRINT((ndo, "TIPC v%u.0 %u.%u.%u > %u.%u.%u, headerlength %u bytes, MessageSize %u bytes, %s, messageType %s (0x%08x)", 26153f17a9db278d33517d9888dd77848f554522a38JP Abgrall TIPC_VER(w0), 26253f17a9db278d33517d9888dd77848f554522a38JP Abgrall TIPC_ZONE(orig_node), TIPC_CLUSTER(orig_node), TIPC_NODE(orig_node), 26353f17a9db278d33517d9888dd77848f554522a38JP Abgrall TIPC_ZONE(dest_node), TIPC_CLUSTER(dest_node), TIPC_NODE(dest_node), 26453f17a9db278d33517d9888dd77848f554522a38JP Abgrall hsize*4, msize, 26553f17a9db278d33517d9888dd77848f554522a38JP Abgrall tok2str(tipcuser_values, "unknown", user), 26653f17a9db278d33517d9888dd77848f554522a38JP Abgrall tok2str(tipcmtype_values, "Unknown", mtype), w1)); 26753f17a9db278d33517d9888dd77848f554522a38JP Abgrall 26853f17a9db278d33517d9888dd77848f554522a38JP Abgrall if (ndo->ndo_vflag) { 26953f17a9db278d33517d9888dd77848f554522a38JP Abgrall ND_TCHECK(*ap); 27053f17a9db278d33517d9888dd77848f554522a38JP Abgrall seq_gap = TIPC_SEQ_GAP(w1); 27153f17a9db278d33517d9888dd77848f554522a38JP Abgrall broadcast_ack = TIPC_BROADCAST_ACK(w1); 27253f17a9db278d33517d9888dd77848f554522a38JP Abgrall w2 = EXTRACT_32BITS(&ap->w2); 27353f17a9db278d33517d9888dd77848f554522a38JP Abgrall bc_gap_after = TIPC_BC_GAP_AFTER(w2); 27453f17a9db278d33517d9888dd77848f554522a38JP Abgrall bc_gap_to = TIPC_BC_GAP_TO(w2); 27553f17a9db278d33517d9888dd77848f554522a38JP Abgrall prev_node = EXTRACT_32BITS(&ap->prev_node); 27653f17a9db278d33517d9888dd77848f554522a38JP Abgrall w4 = EXTRACT_32BITS(&ap->w4); 27753f17a9db278d33517d9888dd77848f554522a38JP Abgrall last_sent_frag = TIPC_LAST_SENT_FRAG(w4); 27853f17a9db278d33517d9888dd77848f554522a38JP Abgrall next_sent_frag = TIPC_NEXT_SENT_FRAG(w4); 27953f17a9db278d33517d9888dd77848f554522a38JP Abgrall w5 = EXTRACT_32BITS(&ap->w5); 28053f17a9db278d33517d9888dd77848f554522a38JP Abgrall sess_no = TIPC_SESS_NO(w5); 28153f17a9db278d33517d9888dd77848f554522a38JP Abgrall trans_seq = EXTRACT_32BITS(&ap->trans_seq); 28253f17a9db278d33517d9888dd77848f554522a38JP Abgrall w9 = EXTRACT_32BITS(&ap->w9); 28353f17a9db278d33517d9888dd77848f554522a38JP Abgrall msg_cnt = TIPC_MSG_CNT(w9); 28453f17a9db278d33517d9888dd77848f554522a38JP Abgrall link_tol = TIPC_LINK_TOL(w9); 28553f17a9db278d33517d9888dd77848f554522a38JP Abgrall 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", 28653f17a9db278d33517d9888dd77848f554522a38JP Abgrall TIPC_ZONE(prev_node), TIPC_CLUSTER(prev_node), TIPC_NODE(prev_node), 28753f17a9db278d33517d9888dd77848f554522a38JP Abgrall sess_no, broadcast_ack, seq_gap, bc_gap_after, bc_gap_to, 28853f17a9db278d33517d9888dd77848f554522a38JP Abgrall last_sent_frag, next_sent_frag, trans_seq, msg_cnt, 28953f17a9db278d33517d9888dd77848f554522a38JP Abgrall link_tol)); 29053f17a9db278d33517d9888dd77848f554522a38JP Abgrall } 29153f17a9db278d33517d9888dd77848f554522a38JP Abgrall return; 29253f17a9db278d33517d9888dd77848f554522a38JP Abgrall 29353f17a9db278d33517d9888dd77848f554522a38JP Abgralltrunc: 29453f17a9db278d33517d9888dd77848f554522a38JP Abgrall ND_PRINT((ndo, "[|TIPC]")); 29553f17a9db278d33517d9888dd77848f554522a38JP Abgrall} 29653f17a9db278d33517d9888dd77848f554522a38JP Abgrall 29753f17a9db278d33517d9888dd77848f554522a38JP Abgrallstatic void 29853f17a9db278d33517d9888dd77848f554522a38JP Abgrallprint_link_conf(netdissect_options *ndo, const struct link_conf_tipc_pkthdr *ap) 29953f17a9db278d33517d9888dd77848f554522a38JP Abgrall{ 30053f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w0, w1, w5; 30153f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int user; 30253f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int hsize; 30353f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int msize; 30453f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int mtype; 30553f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int node_sig; 30653f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int prev_node; 30753f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int dest_domain; 30853f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int ntwrk_id; 30953f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int media_id; 31053f17a9db278d33517d9888dd77848f554522a38JP Abgrall 31153f17a9db278d33517d9888dd77848f554522a38JP Abgrall ND_TCHECK(ap->prev_node); 31253f17a9db278d33517d9888dd77848f554522a38JP Abgrall w0 = EXTRACT_32BITS(&ap->w0); 31353f17a9db278d33517d9888dd77848f554522a38JP Abgrall user = TIPC_USER(w0); 31453f17a9db278d33517d9888dd77848f554522a38JP Abgrall hsize = TIPC_HSIZE(w0); 31553f17a9db278d33517d9888dd77848f554522a38JP Abgrall msize = TIPC_MSIZE(w0); 31653f17a9db278d33517d9888dd77848f554522a38JP Abgrall w1 = EXTRACT_32BITS(&ap->w1); 31753f17a9db278d33517d9888dd77848f554522a38JP Abgrall mtype = TIPC_MTYPE(w1); 31853f17a9db278d33517d9888dd77848f554522a38JP Abgrall prev_node = EXTRACT_32BITS(&ap->prev_node); 31953f17a9db278d33517d9888dd77848f554522a38JP Abgrall dest_domain = EXTRACT_32BITS(&ap->dest_domain); 32053f17a9db278d33517d9888dd77848f554522a38JP Abgrall prev_node = EXTRACT_32BITS(&ap->prev_node); 32153f17a9db278d33517d9888dd77848f554522a38JP Abgrall 32253f17a9db278d33517d9888dd77848f554522a38JP Abgrall ND_PRINT((ndo, "TIPC v%u.0 %u.%u.%u > %u.%u.%u, headerlength %u bytes, MessageSize %u bytes, %s, messageType %s", 32353f17a9db278d33517d9888dd77848f554522a38JP Abgrall TIPC_VER(w0), 32453f17a9db278d33517d9888dd77848f554522a38JP Abgrall TIPC_ZONE(prev_node), TIPC_CLUSTER(prev_node), TIPC_NODE(prev_node), 32553f17a9db278d33517d9888dd77848f554522a38JP Abgrall TIPC_ZONE(dest_domain), TIPC_CLUSTER(dest_domain), TIPC_NODE(dest_domain), 32653f17a9db278d33517d9888dd77848f554522a38JP Abgrall hsize*4, msize, 32753f17a9db278d33517d9888dd77848f554522a38JP Abgrall tok2str(tipcuser_values, "unknown", user), 32853f17a9db278d33517d9888dd77848f554522a38JP Abgrall tok2str(tipc_linkconf_mtype_values, "Unknown", mtype))); 32953f17a9db278d33517d9888dd77848f554522a38JP Abgrall if (ndo->ndo_vflag) { 33053f17a9db278d33517d9888dd77848f554522a38JP Abgrall ND_TCHECK(ap->w5); 33153f17a9db278d33517d9888dd77848f554522a38JP Abgrall node_sig = TIPC_NODE_SIG(w1); 33253f17a9db278d33517d9888dd77848f554522a38JP Abgrall ntwrk_id = EXTRACT_32BITS(&ap->ntwrk_id); 33353f17a9db278d33517d9888dd77848f554522a38JP Abgrall w5 = EXTRACT_32BITS(&ap->w5); 33453f17a9db278d33517d9888dd77848f554522a38JP Abgrall media_id = TIPC_MEDIA_ID(w5); 33553f17a9db278d33517d9888dd77848f554522a38JP Abgrall ND_PRINT((ndo, "\n\tNodeSignature %u, network_id %u, media_id %u", 33653f17a9db278d33517d9888dd77848f554522a38JP Abgrall node_sig, ntwrk_id, media_id)); 33753f17a9db278d33517d9888dd77848f554522a38JP Abgrall } 33853f17a9db278d33517d9888dd77848f554522a38JP Abgrall return; 33953f17a9db278d33517d9888dd77848f554522a38JP Abgrall 34053f17a9db278d33517d9888dd77848f554522a38JP Abgralltrunc: 34153f17a9db278d33517d9888dd77848f554522a38JP Abgrall ND_PRINT((ndo, "[|TIPC]")); 34253f17a9db278d33517d9888dd77848f554522a38JP Abgrall} 34353f17a9db278d33517d9888dd77848f554522a38JP Abgrall 34453f17a9db278d33517d9888dd77848f554522a38JP Abgrallvoid 34553f17a9db278d33517d9888dd77848f554522a38JP Abgralltipc_print(netdissect_options *ndo, const u_char *bp, u_int length _U_, 34653f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int caplen _U_) 34753f17a9db278d33517d9888dd77848f554522a38JP Abgrall{ 34853f17a9db278d33517d9888dd77848f554522a38JP Abgrall const struct tipc_pkthdr *ap; 34953f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int32_t w0; 35053f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_int user; 35153f17a9db278d33517d9888dd77848f554522a38JP Abgrall 35253f17a9db278d33517d9888dd77848f554522a38JP Abgrall ap = (struct tipc_pkthdr *)bp; 35353f17a9db278d33517d9888dd77848f554522a38JP Abgrall ND_TCHECK(ap->w0); 35453f17a9db278d33517d9888dd77848f554522a38JP Abgrall w0 = EXTRACT_32BITS(&ap->w0); 35553f17a9db278d33517d9888dd77848f554522a38JP Abgrall user = TIPC_USER(w0); 35653f17a9db278d33517d9888dd77848f554522a38JP Abgrall 35753f17a9db278d33517d9888dd77848f554522a38JP Abgrall switch (user) 35853f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 35953f17a9db278d33517d9888dd77848f554522a38JP Abgrall case TIPC_USER_LOW_IMPORTANCE: 36053f17a9db278d33517d9888dd77848f554522a38JP Abgrall case TIPC_USER_MEDIUM_IMPORTANCE: 36153f17a9db278d33517d9888dd77848f554522a38JP Abgrall case TIPC_USER_HIGH_IMPORTANCE: 36253f17a9db278d33517d9888dd77848f554522a38JP Abgrall case TIPC_USER_CRITICAL_IMPORTANCE: 36353f17a9db278d33517d9888dd77848f554522a38JP Abgrall case TIPC_USER_NAME_DISTRIBUTOR: 36453f17a9db278d33517d9888dd77848f554522a38JP Abgrall case TIPC_USER_CONN_MANAGER: 36553f17a9db278d33517d9888dd77848f554522a38JP Abgrall print_payload(ndo, (struct payload_tipc_pkthdr *)bp); 36653f17a9db278d33517d9888dd77848f554522a38JP Abgrall break; 36753f17a9db278d33517d9888dd77848f554522a38JP Abgrall 36853f17a9db278d33517d9888dd77848f554522a38JP Abgrall case TIPC_USER_LINK_CONFIG: 36953f17a9db278d33517d9888dd77848f554522a38JP Abgrall print_link_conf(ndo, (struct link_conf_tipc_pkthdr *)bp); 37053f17a9db278d33517d9888dd77848f554522a38JP Abgrall break; 37153f17a9db278d33517d9888dd77848f554522a38JP Abgrall 37253f17a9db278d33517d9888dd77848f554522a38JP Abgrall case TIPC_USER_BCAST_PROTOCOL: 37353f17a9db278d33517d9888dd77848f554522a38JP Abgrall case TIPC_USER_MSG_BUNDLER: 37453f17a9db278d33517d9888dd77848f554522a38JP Abgrall case TIPC_USER_LINK_PROTOCOL: 37553f17a9db278d33517d9888dd77848f554522a38JP Abgrall case TIPC_USER_CHANGEOVER_PROTOCOL: 37653f17a9db278d33517d9888dd77848f554522a38JP Abgrall case TIPC_USER_MSG_FRAGMENTER: 37753f17a9db278d33517d9888dd77848f554522a38JP Abgrall print_internal(ndo, (struct internal_tipc_pkthdr *)bp); 37853f17a9db278d33517d9888dd77848f554522a38JP Abgrall break; 37953f17a9db278d33517d9888dd77848f554522a38JP Abgrall 38053f17a9db278d33517d9888dd77848f554522a38JP Abgrall } 38153f17a9db278d33517d9888dd77848f554522a38JP Abgrall return; 38253f17a9db278d33517d9888dd77848f554522a38JP Abgrall 38353f17a9db278d33517d9888dd77848f554522a38JP Abgralltrunc: 38453f17a9db278d33517d9888dd77848f554522a38JP Abgrall ND_PRINT((ndo, "[|TIPC]")); 38553f17a9db278d33517d9888dd77848f554522a38JP Abgrall} 38653f17a9db278d33517d9888dd77848f554522a38JP Abgrall 38753f17a9db278d33517d9888dd77848f554522a38JP Abgrall/* 38853f17a9db278d33517d9888dd77848f554522a38JP Abgrall * Local Variables: 38953f17a9db278d33517d9888dd77848f554522a38JP Abgrall * c-style: bsd 39053f17a9db278d33517d9888dd77848f554522a38JP Abgrall * End: 39153f17a9db278d33517d9888dd77848f554522a38JP Abgrall */ 39253f17a9db278d33517d9888dd77848f554522a38JP Abgrall 393