X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/aa976c54cff4df1603335380ebc8f1c1a3f32f4e..d6bfd142e9c106deaf9c0091f8b5d0d89a0674ff:/print-bootp.c diff --git a/print-bootp.c b/print-bootp.c index c1c2b6be..c9e7a11e 100644 --- a/print-bootp.c +++ b/print-bootp.c @@ -22,7 +22,7 @@ */ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-bootp.c,v 1.86 2007-07-24 17:28:56 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/tcpdump/print-bootp.c,v 1.89 2008-04-22 09:45:08 hannes Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -187,7 +187,7 @@ trunc: * B - on/off (8 bits) * $ - special (explicit code to handle) */ -static struct tok tag2str[] = { +static const struct tok tag2str[] = { /* RFC1048 tags */ { TAG_PAD, " PAD" }, { TAG_SUBNET_MASK, "iSubnet-Mask" }, /* subnet mask (RFC950) */ @@ -280,6 +280,7 @@ static struct tok tag2str[] = { { TAG_IP4_SUBNET_SELECT, "iSUBNET" }, /* RFC 3442 */ { TAG_CLASSLESS_STATIC_RT, "$Classless-Static-Route" }, + { TAG_CLASSLESS_STA_RT_MS, "$Classless-Static-Route-Microsoft" }, /* http://www.iana.org/assignments/bootp-dhcp-extensions/index.htm */ { TAG_USER_CLASS, "aCLASS" }, { TAG_SLP_NAMING_AUTH, "aSLP-NA" }, @@ -307,12 +308,12 @@ static struct tok tag2str[] = { { 0, NULL } }; /* 2-byte extended tags */ -static struct tok xtag2str[] = { +static const struct tok xtag2str[] = { { 0, NULL } }; /* DHCP "options overload" types */ -static struct tok oo2str[] = { +static const struct tok oo2str[] = { { 1, "file" }, { 2, "sname" }, { 3, "file+sname" }, @@ -320,7 +321,7 @@ static struct tok oo2str[] = { }; /* NETBIOS over TCP/IP node type options */ -static struct tok nbo2str[] = { +static const struct tok nbo2str[] = { { 0x1, "b-node" }, { 0x2, "p-node" }, { 0x4, "m-node" }, @@ -329,7 +330,7 @@ static struct tok nbo2str[] = { }; /* ARP Hardware types, for Client-ID option */ -static struct tok arp2str[] = { +static const struct tok arp2str[] = { { 0x1, "ether" }, { 0x6, "ieee802" }, { 0x7, "arcnet" }, @@ -339,7 +340,7 @@ static struct tok arp2str[] = { { 0, NULL } }; -static struct tok dhcp_msg_values[] = { +static const struct tok dhcp_msg_values[] = { { DHCPDISCOVER, "Discover" }, { DHCPOFFER, "Offer" }, { DHCPREQUEST, "Request" }, @@ -351,9 +352,13 @@ static struct tok dhcp_msg_values[] = { { 0, NULL } }; -#define AGENT_SUBOPTION_CIRCUIT_ID 1 -static struct tok agent_suboption_values[] = { +#define AGENT_SUBOPTION_CIRCUIT_ID 1 /* RFC 3046 */ +#define AGENT_SUBOPTION_REMOTE_ID 2 /* RFC 3046 */ +#define AGENT_SUBOPTION_SUBSCRIBER_ID 6 /* RFC 3993 */ +static const struct tok agent_suboption_values[] = { { AGENT_SUBOPTION_CIRCUIT_ID, "Circuit-ID" }, + { AGENT_SUBOPTION_REMOTE_ID, "Remote-ID" }, + { AGENT_SUBOPTION_SUBSCRIBER_ID, "Subscriber-ID" }, { 0, NULL } }; @@ -580,8 +585,6 @@ rfc1048_print(register const u_char *bp) if (len < 1) { printf("ERROR: option %u len %u < 1 bytes", TAG_NETBIOS_NODE, len); - bp += len; - len = 0; break; } tag = *bp++; @@ -594,8 +597,6 @@ rfc1048_print(register const u_char *bp) if (len < 1) { printf("ERROR: option %u len %u < 1 bytes", TAG_OPT_OVERLOAD, len); - bp += len; - len = 0; break; } tag = *bp++; @@ -635,8 +636,6 @@ rfc1048_print(register const u_char *bp) if (len < 1) { printf("ERROR: option %u len %u < 1 bytes", TAG_CLIENT_ID, len); - bp += len; - len = 0; break; } type = *bp++; @@ -685,9 +684,11 @@ rfc1048_print(register const u_char *bp) suboptlen); switch (subopt) { - case AGENT_SUBOPTION_CIRCUIT_ID: - fn_printn(bp, suboptlen, NULL); - break; + case AGENT_SUBOPTION_CIRCUIT_ID: /* fall through */ + case AGENT_SUBOPTION_REMOTE_ID: + case AGENT_SUBOPTION_SUBSCRIBER_ID: + fn_printn(bp, suboptlen, NULL); + break; default: print_unknown_data(bp, "\n\t\t", suboptlen); @@ -699,6 +700,7 @@ rfc1048_print(register const u_char *bp) break; case TAG_CLASSLESS_STATIC_RT: + case TAG_CLASSLESS_STA_RT_MS: { u_int mask_width, significant_octets, i;