]>
The Tcpdump Group git mirrors - tcpdump/blob - print-stp.c
f2615fd7ec30584c4cf673e486d67d8b6316b01d
2 * Copyright (c) 2000 Lennert Buytenhek
4 * This software may be distributed either under the terms of the
5 * BSD-style license that accompanies tcpdump or the GNU General
8 * Format and print IEEE 802.1d spanning tree protocol packets.
9 * Contributed by Lennert Buytenhek <buytenh@gnu.org>
13 static const char rcsid
[] =
14 "@(#) $Header: /tcpdump/master/tcpdump/print-stp.c,v 1.1 2000-06-10 20:57:57 assar Exp $";
17 #include <sys/param.h>
19 #include <sys/socket.h>
21 #include <netinet/in.h>
22 #include <netinet/in_systm.h>
23 #include <netinet/ip.h>
24 #include <netinet/ip_var.h>
25 #include <netinet/udp.h>
26 #include <netinet/udp_var.h>
27 #include <netinet/tcp.h>
28 #include <netinet/tcpip.h>
36 #include "interface.h"
37 #include "addrtoname.h"
41 stp_print_bridge_id(const u_char
*p
)
43 printf("%.2x%.2x.%.2x:%.2x:%.2x:%.2x:%.2x:%.2x",
44 p
[0], p
[1], p
[2], p
[3], p
[4], p
[5], p
[6], p
[7]);
48 stp_print_config_bpdu(const u_char
*p
, u_int length
)
52 printf("TOP_CHANGE ");
54 printf("TOP_CHANGE_ACK ");
56 stp_print_bridge_id(p
+20);
57 printf(".%.2x%.2x ", p
[28], p
[29]);
60 stp_print_bridge_id(p
+8);
62 printf(" pathcost %i ", (p
[16] << 24) | (p
[17] << 16) | (p
[18] << 8) | p
[19]);
64 printf("age %i ", p
[30]);
65 printf("max %i ", p
[32]);
66 printf("hello %i ", p
[34]);
67 printf("fdelay %i ", p
[36]);
71 stp_print_tcn_bpdu(const u_char
*p
, u_int length
)
77 * Print 802.1d packets.
80 stp_print(const u_char
*p
, u_int length
)
86 if (p
[2] != 0x03 || p
[3] || p
[4] || p
[5]) {
87 printf("unknown version");
96 stp_print_config_bpdu(p
, length
);
100 stp_print_tcn_bpdu(p
, length
);
104 printf("unknown type %i\n", p
[6]);
110 printf("[|stp %d]", length
);