X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/51e180c4fb05a88ad6687a23cc983955cd9ea431..42b25d9bb5cb7cce12a4a511f21ed6b3ec8638cd:/print-bootp.c diff --git a/print-bootp.c b/print-bootp.c index a2f1929a..f84b77ca 100644 --- a/print-bootp.c +++ b/print-bootp.c @@ -195,7 +195,7 @@ struct bootp { #define TAG_CLASSLESS_STA_RT_MS ((uint8_t) 249) /* RFC 5859 - TFTP Server Address Option for DHCPv4 */ #define TAG_TFTP_SERVER_ADDRESS ((uint8_t) 150) -/* ftp://ftp.isi.edu/.../assignments/bootp-dhcp-extensions */ +/* https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml */ #define TAG_SLP_NAMING_AUTH ((uint8_t) 80) #define TAG_CLIENT_FQDN ((uint8_t) 81) #define TAG_AGENT_CIRCUIT ((uint8_t) 82) @@ -203,8 +203,8 @@ struct bootp { #define TAG_TZ_STRING ((uint8_t) 88) #define TAG_FQDN_OPTION ((uint8_t) 89) #define TAG_AUTH ((uint8_t) 90) -#define TAG_VINES_SERVERS ((uint8_t) 91) -#define TAG_SERVER_RANK ((uint8_t) 92) +#define TAG_CLIENT_LAST_TRANSACTION_TIME ((uint8_t) 91) +#define TAG_ASSOCIATED_IP ((uint8_t) 92) #define TAG_CLIENT_ARCH ((uint8_t) 93) #define TAG_CLIENT_NDI ((uint8_t) 94) #define TAG_CLIENT_GUID ((uint8_t) 97) @@ -226,6 +226,12 @@ struct bootp { #define DHCPNAK 6 #define DHCPRELEASE 7 #define DHCPINFORM 8 +/* Defined in RFC4388 */ +#define DHCPLEASEQUERY 10 +#define DHCPLEASEUNASSIGNED 11 +#define DHCPLEASEUNKNOWN 12 +#define DHCPLEASEACTIVE 13 + /* * "vendor" data permitted for CMU bootp clients. @@ -289,7 +295,7 @@ bootp_print(netdissect_options *ndo, bp_htype = GET_U_1(bp->bp_htype); bp_hlen = GET_U_1(bp->bp_hlen); - if (bp_htype == 1 && bp_hlen == 6 && bp_op == BOOTPREQUEST) { + if (bp_htype == 1 && bp_hlen == MAC_ADDR_LEN && bp_op == BOOTPREQUEST) { ND_PRINT(" from %s", GET_ETHERADDR_STRING(bp->bp_chaddr)); } @@ -305,7 +311,7 @@ bootp_print(netdissect_options *ndo, ND_PRINT(", htype %u", bp_htype); /* The usual length for 10Mb Ethernet address is 6 bytes */ - if (bp_htype != 1 || bp_hlen != 6) + if (bp_htype != 1 || bp_hlen != MAC_ADDR_LEN) ND_PRINT(", hlen %u", bp_hlen); /* Only print interesting fields */ @@ -322,27 +328,23 @@ bootp_print(netdissect_options *ndo, ND_PRINT(" (0x%04x)", GET_BE_U_2(bp->bp_flags)); /* Client's ip address */ - ND_TCHECK_4(bp->bp_ciaddr); if (GET_IPV4_TO_NETWORK_ORDER(bp->bp_ciaddr)) ND_PRINT("\n\t Client-IP %s", GET_IPADDR_STRING(bp->bp_ciaddr)); /* 'your' ip address (bootp client) */ - ND_TCHECK_4(bp->bp_yiaddr); if (GET_IPV4_TO_NETWORK_ORDER(bp->bp_yiaddr)) ND_PRINT("\n\t Your-IP %s", GET_IPADDR_STRING(bp->bp_yiaddr)); /* Server's ip address */ - ND_TCHECK_4(bp->bp_siaddr); if (GET_IPV4_TO_NETWORK_ORDER(bp->bp_siaddr)) ND_PRINT("\n\t Server-IP %s", GET_IPADDR_STRING(bp->bp_siaddr)); /* Gateway's ip address */ - ND_TCHECK_4(bp->bp_giaddr); if (GET_IPV4_TO_NETWORK_ORDER(bp->bp_giaddr)) ND_PRINT("\n\t Gateway-IP %s", GET_IPADDR_STRING(bp->bp_giaddr)); /* Client's Ethernet address */ - if (bp_htype == 1 && bp_hlen == 6) { + if (bp_htype == 1 && bp_hlen == MAC_ADDR_LEN) { ND_PRINT("\n\t Client-Ethernet-Address %s", GET_ETHERADDR_STRING(bp->bp_chaddr)); } @@ -507,8 +509,8 @@ static const struct tok tag2str[] = { { TAG_TZ_STRING, "aTZSTR" }, { TAG_FQDN_OPTION, "bFQDNS" }, /* XXX 'b' */ { TAG_AUTH, "bAUTH" }, /* XXX 'b' */ - { TAG_VINES_SERVERS, "iVINES" }, - { TAG_SERVER_RANK, "sRANK" }, + { TAG_CLIENT_LAST_TRANSACTION_TIME, "LLast-Transaction-Time" }, + { TAG_ASSOCIATED_IP, "iAssociated-IP" }, { TAG_CLIENT_ARCH, "sARCH" }, { TAG_CLIENT_NDI, "bNDI" }, /* XXX 'b' */ { TAG_CLIENT_GUID, "bGUID" }, /* XXX 'b' */ @@ -551,14 +553,18 @@ static const struct tok arp2str[] = { }; static const struct tok dhcp_msg_values[] = { - { DHCPDISCOVER, "Discover" }, - { DHCPOFFER, "Offer" }, - { DHCPREQUEST, "Request" }, - { DHCPDECLINE, "Decline" }, - { DHCPACK, "ACK" }, - { DHCPNAK, "NACK" }, - { DHCPRELEASE, "Release" }, - { DHCPINFORM, "Inform" }, + { DHCPDISCOVER, "Discover" }, + { DHCPOFFER, "Offer" }, + { DHCPREQUEST, "Request" }, + { DHCPDECLINE, "Decline" }, + { DHCPACK, "ACK" }, + { DHCPNAK, "NACK" }, + { DHCPRELEASE, "Release" }, + { DHCPINFORM, "Inform" }, + { DHCPLEASEQUERY, "LeaseQuery" }, + { DHCPLEASEUNASSIGNED, "LeaseUnassigned" }, + { DHCPLEASEUNKNOWN, "LeaseUnknown" }, + { DHCPLEASEACTIVE, "LeaseActive" }, { 0, NULL } };