mirror of
https://github.com/the-tcpdump-group/tcpdump.git
synced 2024-11-27 20:14:12 +08:00
c422d3ab0f
unused-parameter problems reported by GCC. Add an _U_ tag to label parameters as unused if the function is called through a pointer (so that you can't change its signature by removing parameters) or if there are unused parameters only because the function isn't complete. Add some additional bounds checks the necessity for which was revealed while cleaning up unused-parameter problems. Make some routines static. "lcp_print()", defined in "print-lcp.c", isn't called anywhere - "print-ppp.c" has the code to dissect LCP. Get rid of "print-lcp.c".
103 lines
1.8 KiB
C
103 lines
1.8 KiB
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 lint
|
|
static const char rcsid[] =
|
|
"@(#) $Header: /tcpdump/master/tcpdump/print-stp.c,v 1.10 2002-09-05 21:25:49 guy Exp $";
|
|
#endif
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include "config.h"
|
|
#endif
|
|
|
|
#include <tcpdump-stdinc.h>
|
|
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#include "interface.h"
|
|
#include "addrtoname.h"
|
|
#include "extract.h"
|
|
|
|
static void
|
|
stp_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 void
|
|
stp_print_config_bpdu(const u_char *p)
|
|
{
|
|
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 void
|
|
stp_print_tcn_bpdu(void)
|
|
{
|
|
printf("tcn");
|
|
}
|
|
|
|
/*
|
|
* Print 802.1d packets.
|
|
*/
|
|
void
|
|
stp_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);
|
|
break;
|
|
|
|
case 1:
|
|
stp_print_tcn_bpdu();
|
|
break;
|
|
|
|
default:
|
|
printf("unknown type %i", p[6]);
|
|
break;
|
|
}
|
|
|
|
return;
|
|
trunc:
|
|
printf("[|stp %d]", length);
|
|
}
|