📄 print-stp.c
字号:
/* * Copyright (c) 2000 Lennert Buytenhek * * This software may be distributed either under the terms of the * BSD-style license that accompanies tcpdump or the GNU General * Public License * * Format and print IEEE 802.1d spanning tree protocol packets. * Contributed by Lennert Buytenhek <buytenh@gnu.org> */#ifndef lintstatic const char rcsid[] = "@(#) $Header: /tcpdump/master/tcpdump/print-stp.c,v 1.6 2000/09/29 04:58:50 guy Exp $";#endif#ifdef HAVE_CONFIG_H#include "config.h"#endif#ifndef WIN32
#include <sys/param.h>#include <sys/time.h>#include <sys/socket.h>
#include <netinet/in.h>
#else
#include <winsock2.h>
#include "bittypes.h"
#include <time.h>
#endif /* WIN32 */
#include <stdlib.h>#include <stdio.h>#include <string.h>#include "interface.h"#include "addrtoname.h"#include "extract.h"static voidstp_print_bridge_id(const u_char *p){ printf("%.2x%.2x.%.2x:%.2x:%.2x:%.2x:%.2x:%.2x", p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7]);}static voidstp_print_config_bpdu(const u_char *p, u_int length){ printf("config "); if (p[7] & 1) printf("TOP_CHANGE "); if (p[7] & 0x80) printf("TOP_CHANGE_ACK "); stp_print_bridge_id(p+20); printf(".%.2x%.2x ", p[28], p[29]); printf("root "); stp_print_bridge_id(p+8); printf(" pathcost %i ", (p[16] << 24) | (p[17] << 16) | (p[18] << 8) | p[19]); printf("age %i ", p[30]); printf("max %i ", p[32]); printf("hello %i ", p[34]); printf("fdelay %i ", p[36]);}static voidstp_print_tcn_bpdu(const u_char *p, u_int length){ printf("tcn");}/* * Print 802.1d packets. */voidstp_print(const u_char *p, u_int length){ if (length < 7) goto trunc; printf("802.1d "); if (p[2] != 0x03 || p[3] || p[4] || p[5]) { printf("unknown version"); return; } switch (p[6]) { case 0: if (length < 10) goto trunc; stp_print_config_bpdu(p, length); break; case 1: stp_print_tcn_bpdu(p, length); break; default: printf("unknown type %i\n", p[6]); break; } return;trunc: printf("[|stp %d]", length);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -