diff --git a/netdissect.h b/netdissect.h index da97f2d2f4..49222a9e91 100644 --- a/netdissect.h +++ b/netdissect.h @@ -637,6 +637,7 @@ extern void nfsreply_print(netdissect_options *, const u_char *, u_int, const u_ extern void nfsreply_noaddr_print(netdissect_options *, const u_char *, u_int, const u_char *); extern void nfsreq_noaddr_print(netdissect_options *, const u_char *, u_int, const u_char *); extern const u_char *fqdn_print(netdissect_options *, const u_char *, const u_char *); +extern const u_char *fqdn_print2(netdissect_options *, const u_char *, const u_char *, const u_char *); extern void domain_print(netdissect_options *, const u_char *, u_int, int, int); extern void nsh_print(netdissect_options *, const u_char *, u_int); extern void ntp_print(netdissect_options *, const u_char *, u_int); diff --git a/print-bootp.c b/print-bootp.c index 1ee979f5d2..1ef283ed5e 100644 --- a/print-bootp.c +++ b/print-bootp.c @@ -215,6 +215,8 @@ struct bootp { #define TAG_NETINFO_PARENT ((uint8_t) 112) #define TAG_NETINFO_PARENT_TAG ((uint8_t) 113) #define TAG_URL ((uint8_t) 114) +/* RFC 3397 */ +#define TAG_DOMAIN_SEARCH ((uint8_t) 119) #define TAG_MUDURL ((uint8_t) 161) /* DHCP Message types (values for TAG_DHCP_MESSAGE option) */ @@ -514,6 +516,7 @@ static const struct tok tag2str[] = { { TAG_NETINFO_PARENT, "iNI" }, { TAG_NETINFO_PARENT_TAG, "aNITAG" }, { TAG_URL, "aURL" }, + { TAG_DOMAIN_SEARCH, "$Domain-Search" }, { TAG_MUDURL, "aMUD-URL" }, { 0, NULL } }; @@ -989,6 +992,20 @@ rfc1048_print(netdissect_options *ndo, break; } + case TAG_DOMAIN_SEARCH: + { + const u_char *np = bp; + const u_char *ep = bp + len; + while ( np && np < ep ) { + np = fqdn_print2(ndo, np, bp, ep); + if ( np && np < ep ) { + ND_PRINT( " " ); + } + } + bp += len; + len = 0; + break; + } default: ND_PRINT("[unknown special tag %u, size %u]", tag, len); diff --git a/print-dhcp6.c b/print-dhcp6.c index 8b19d54620..3c9f436ad2 100644 --- a/print-dhcp6.c +++ b/print-dhcp6.c @@ -569,7 +569,7 @@ dhcp6opt_print(netdissect_options *ndo, tp = (const u_char *)(dh6o + 1); while (tp < cp + sizeof(*dh6o) + optlen) { ND_PRINT(" "); - if ((tp = fqdn_print(ndo, tp, cp + sizeof(*dh6o) + optlen)) == NULL) + if ((tp = fqdn_print2(ndo, tp, NULL, cp + sizeof(*dh6o) + optlen)) == NULL) goto trunc; } ND_PRINT(")"); diff --git a/print-domain.c b/print-domain.c index ad08073f12..8a80fb1d7a 100644 --- a/print-domain.c +++ b/print-domain.c @@ -155,10 +155,11 @@ labellen(netdissect_options *ndo, return(i); } -/* print a */ +/* print a with an explicit end-pointer */ const u_char * -fqdn_print(netdissect_options *ndo, - const u_char *cp, const u_char *bp) +fqdn_print2(netdissect_options *ndo, + const u_char *cp, const u_char *bp, + const u_char *ep) { u_int i, l; const u_char *rp = NULL; @@ -170,7 +171,15 @@ fqdn_print(netdissect_options *ndo, return(NULL); if (!ND_TTEST_1(cp)) return(NULL); - max_offset = (u_int)(cp - bp); + if (bp) { + max_offset = (u_int)(cp - bp); + } else { + /* + * compression not supported in + * this context (e.g., DHCP6) + */ + max_offset = 0; + } i = GET_U_1(cp); cp++; if ((i & INDIR_MASK) != INDIR_MASK) { @@ -179,7 +188,7 @@ fqdn_print(netdissect_options *ndo, } if (i != 0) - while (i && cp < ndo->ndo_snapend) { + while (i && cp < ep) { if ((i & INDIR_MASK) == INDIR_MASK) { if (!compress) { rp = cp + 1; @@ -225,7 +234,7 @@ fqdn_print(netdissect_options *ndo, return(NULL); } } else { - if (nd_printn(ndo, cp, l, ndo->ndo_snapend)) + if (nd_printn(ndo, cp, l, ep)) return(NULL); } @@ -245,6 +254,14 @@ fqdn_print(netdissect_options *ndo, return (rp); } +/* print a */ +const u_char * +fqdn_print(netdissect_options *ndo, + const u_char *cp, const u_char *bp) +{ + return fqdn_print2(ndo, cp, bp, ndo->ndo_snapend); +} + /* print a */ static const u_char * ns_cprint(netdissect_options *ndo, diff --git a/print-hncp.c b/print-hncp.c index 69ed9d6dd0..926d0d1f46 100644 --- a/print-hncp.c +++ b/print-hncp.c @@ -305,7 +305,7 @@ dhcpv4_print(netdissect_options *ndo, const u_char *tp = value; while (tp < value + optlen) { ND_PRINT(" "); - if ((tp = fqdn_print(ndo, tp, value + optlen)) == NULL) + if ((tp = fqdn_print2(ndo, tp, value, value + optlen)) == NULL) return -1; } } diff --git a/tests/TESTLIST b/tests/TESTLIST index 18dba83cf1..a2870a7712 100644 --- a/tests/TESTLIST +++ b/tests/TESTLIST @@ -203,6 +203,7 @@ dhcpv6-ntp-server dhcpv6-ntp-server.pcap dhcpv6-ntp-server.out -v dhcpv6-sip-server-d dhcpv6-sip-server-d.pcap dhcpv6-sip-server-d.out -v dhcpv6-domain-list dhcpv6-domain-list.pcap dhcpv6-domain-list.out -v dhcpv6-mud dhcpv6-mud.pcap dhcpv6-mud.out -vv +dhcp-option119 dhcp-option119.pcap dhcp-option119.out -vv # ZeroMQ/PGM tests # ZMTP/1.0 over TCP diff --git a/tests/dcb_ets.out b/tests/dcb_ets.out index ba73da05eb..f7cf90e6cf 100644 --- a/tests/dcb_ets.out +++ b/tests/dcb_ets.out @@ -8,7 +8,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 3 04:02:58.010903 LLDP, length 135 @@ -75,7 +75,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 5 04:03:14.455118 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328) @@ -87,7 +87,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 6 04:03:25.996519 IP6 (hlim 1, next-header Options (0) payload length: 76) :: > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 3 group record(s) [gaddr ff02::1:ff46:e884 to_ex { }] [gaddr ff02::2 to_ex { }] [gaddr ff02::202 to_ex { }] @@ -100,7 +100,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 8 04:03:26.350998 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) :: > ff02::1:ff46:e884: [icmp6 sum ok] ICMP6, neighbor solicitation, length 24, who has fe80::a00:27ff:fe46:e884 @@ -176,7 +176,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 17 04:03:35.582218 IP6 (hlim 1, next-header Options (0) payload length: 36) fe80::a00:27ff:fe42:ba59 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 1 group record(s) [gaddr ff02::1:ff00:0 to_ex { }] @@ -189,7 +189,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 19 04:03:58.207517 LLDP, length 135 @@ -256,7 +256,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 21 04:04:15.044685 IP6 (hlim 1, next-header Options (0) payload length: 76) :: > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 3 group record(s) [gaddr ff02::1:ff46:e884 to_ex { }] [gaddr ff02::2 to_ex { }] [gaddr ff02::202 to_ex { }] @@ -269,7 +269,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 23 04:04:15.831624 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) :: > ff02::1:ff46:e884: [icmp6 sum ok] ICMP6, neighbor solicitation, length 24, who has fe80::a00:27ff:fe46:e884 @@ -286,7 +286,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 27 04:04:18.745823 IP6 (hlim 1, next-header Options (0) payload length: 36) fe80::a00:27ff:fe46:e884 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 1 group record(s) [gaddr ff02::1:ff00:0 to_ex { }] @@ -409,7 +409,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 31 04:04:28.323921 LLDP, length 135 @@ -531,7 +531,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 34 04:04:51.930199 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328) @@ -543,7 +543,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 35 04:04:53.780244 LLDP, length 135 @@ -777,7 +777,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 42 04:05:04.283851 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 16) fe80::a00:27ff:fe46:e884 > ff02::2: [icmp6 sum ok] ICMP6, router solicitation, length 16 @@ -794,7 +794,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 46 04:05:20.296407 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328) @@ -806,7 +806,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 47 04:05:23.875146 LLDP, length 135 @@ -1038,7 +1038,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 52 04:05:54.004592 LLDP, length 135 diff --git a/tests/dcb_pfc.out b/tests/dcb_pfc.out index eefa0fc20e..a418851c95 100644 --- a/tests/dcb_pfc.out +++ b/tests/dcb_pfc.out @@ -7,7 +7,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 2 05:02:46.292912 LLDP, length 87 diff --git a/tests/dcb_qcn.out b/tests/dcb_qcn.out index e62713ac5e..86f95ab046 100644 --- a/tests/dcb_qcn.out +++ b/tests/dcb_qcn.out @@ -7,7 +7,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 2 06:05:25.354704 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328) @@ -19,7 +19,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 3 06:05:30.544746 LLDP, length 86 @@ -93,7 +93,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 6 06:05:37.009281 LLDP, length 94 @@ -185,7 +185,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 9 06:05:56.022134 IP6 (hlim 1, next-header Options (0) payload length: 76) :: > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 3 group record(s) [gaddr ff02::1:ff46:e884 to_ex { }] [gaddr ff02::2 to_ex { }] [gaddr ff02::202 to_ex { }] @@ -198,7 +198,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 11 06:05:56.498519 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) :: > ff02::1:ff46:e884: [icmp6 sum ok] ICMP6, neighbor solicitation, length 24, who has fe80::a00:27ff:fe46:e884 @@ -277,7 +277,7 @@ Parameter-Request (55), length 17: Subnet-Mask (1), BR (28), Time-Zone (2), Classless-Static-Route (121) Domain-Name (15), Domain-Name-Server (6), Hostname (12), YD (40) - YS (41), NTP (42), MTU (26), Unknown (119) + YS (41), NTP (42), MTU (26), Domain-Search (119) Default-Gateway (3), Classless-Static-Route (121), Classless-Static-Route-Microsoft (249), Unknown (252) NTP (42) 17 06:06:04.106458 IP6 (hlim 1, next-header Options (0) payload length: 36) fe80::a00:27ff:fe46:e884 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 1 group record(s) [gaddr ff02::1:ff00:0 to_ex { }] diff --git a/tests/dhcp-mud.out b/tests/dhcp-mud.out index 90e12df624..9a9bb9452c 100644 --- a/tests/dhcp-mud.out +++ b/tests/dhcp-mud.out @@ -16,7 +16,7 @@ Subnet-Mask (1), Classless-Static-Route (121), Static-Route (33), Default-Gateway (3) Domain-Name-Server (6), Hostname (12), Domain-Name (15), BR (28) NTP (42), Lease-Time (51), Server-ID (54), RN (58) - RB (59), POSIX-TZ (100), TZ-Name (101), Unknown (119) + RB (59), POSIX-TZ (100), TZ-Name (101), Domain-Search (119) 2 12:28:41.318491 IP (tos 0x0, ttl 64, id 10305, offset 0, flags [DF], proto UDP (17), length 338) 62.12.173.114.67 > 62.12.173.121.67: [udp sum ok] BOOTP/DHCP, Reply, length 310, hops 1, xid 0x68c4847, Flags [none] (0x0000) Client-IP 62.12.173.123 diff --git a/tests/dhcp-option119.out b/tests/dhcp-option119.out new file mode 100644 index 0000000000..90a9d075ac --- /dev/null +++ b/tests/dhcp-option119.out @@ -0,0 +1,97 @@ + 1 17:22:55.318097 IP (tos 0x0, ttl 255, id 44102, offset 0, flags [none], proto UDP (17), length 328) + 0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from 40:6c:8f:4b:33:09, length 300, xid 0xaabab218, Flags [none] (0x0000) + Client-Ethernet-Address 40:6c:8f:4b:33:09 + Vendor-rfc1048 Extensions + Magic Cookie 0x63825363 + DHCP-Message (53), length 1: Discover + Parameter-Request (55), length 9: + Subnet-Mask (1), Default-Gateway (3), Domain-Name-Server (6), Domain-Name (15) + Domain-Search (119), LDAP (95), Unknown (252), Netbios-Name-Server (44) + Netbios-Node (46) + MSZ (57), length 2: 1500 + Client-ID (61), length 7: ether 40:6c:8f:4b:33:09 + Lease-Time (51), length 4: 7776000 + Hostname (12), length 11: "shankar-mbp" + 2 17:22:56.626536 IP (tos 0x0, ttl 255, id 44103, offset 0, flags [none], proto UDP (17), length 328) + 0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from 40:6c:8f:4b:33:09, length 300, xid 0xaabab218, secs 1, Flags [none] (0x0000) + Client-Ethernet-Address 40:6c:8f:4b:33:09 + Vendor-rfc1048 Extensions + Magic Cookie 0x63825363 + DHCP-Message (53), length 1: Discover + Parameter-Request (55), length 9: + Subnet-Mask (1), Default-Gateway (3), Domain-Name-Server (6), Domain-Name (15) + Domain-Search (119), LDAP (95), Unknown (252), Netbios-Name-Server (44) + Netbios-Node (46) + MSZ (57), length 2: 1500 + Client-ID (61), length 7: ether 40:6c:8f:4b:33:09 + Lease-Time (51), length 4: 7776000 + Hostname (12), length 11: "shankar-mbp" + 3 17:22:57.821108 IP (tos 0xc0, ttl 64, id 5409, offset 0, flags [none], proto UDP (17), length 348) + 10.0.0.1.67 > 10.0.0.245.68: [udp sum ok] BOOTP/DHCP, Reply, length 320, xid 0xaabab218, Flags [none] (0x0000) + Your-IP 10.0.0.245 + Server-IP 10.0.0.1 + Client-Ethernet-Address 40:6c:8f:4b:33:09 + Vendor-rfc1048 Extensions + Magic Cookie 0x63825363 + DHCP-Message (53), length 1: Offer + Server-ID (54), length 4: 10.0.0.1 + Lease-Time (51), length 4: 3600 + RN (58), length 4: 1800 + RB (59), length 4: 3150 + Subnet-Mask (1), length 4: 255.255.255.0 + BR (28), length 4: 10.0.0.255 + Default-Gateway (3), length 4: 10.0.0.1 + Domain-Name-Server (6), length 4: 10.0.0.1 + Domain-Name (15), length 3: "lan" + Domain-Search (119), length 21: velocloud.net. eng.velocloud.net. + 4 17:22:57.821318 IP (tos 0xc0, ttl 64, id 5410, offset 0, flags [none], proto UDP (17), length 348) + 10.0.0.1.67 > 10.0.0.245.68: [udp sum ok] BOOTP/DHCP, Reply, length 320, xid 0xaabab218, secs 1, Flags [none] (0x0000) + Your-IP 10.0.0.245 + Server-IP 10.0.0.1 + Client-Ethernet-Address 40:6c:8f:4b:33:09 + Vendor-rfc1048 Extensions + Magic Cookie 0x63825363 + DHCP-Message (53), length 1: Offer + Server-ID (54), length 4: 10.0.0.1 + Lease-Time (51), length 4: 3600 + RN (58), length 4: 1800 + RB (59), length 4: 3150 + Subnet-Mask (1), length 4: 255.255.255.0 + BR (28), length 4: 10.0.0.255 + Default-Gateway (3), length 4: 10.0.0.1 + Domain-Name-Server (6), length 4: 10.0.0.1 + Domain-Name (15), length 3: "lan" + Domain-Search (119), length 21: velocloud.net. eng.velocloud.net. + 5 17:22:58.845935 IP (tos 0x0, ttl 255, id 44104, offset 0, flags [none], proto UDP (17), length 328) + 0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from 40:6c:8f:4b:33:09, length 300, xid 0xaabab218, secs 3, Flags [none] (0x0000) + Client-Ethernet-Address 40:6c:8f:4b:33:09 + Vendor-rfc1048 Extensions + Magic Cookie 0x63825363 + DHCP-Message (53), length 1: Request + Parameter-Request (55), length 9: + Subnet-Mask (1), Default-Gateway (3), Domain-Name-Server (6), Domain-Name (15) + Domain-Search (119), LDAP (95), Unknown (252), Netbios-Name-Server (44) + Netbios-Node (46) + MSZ (57), length 2: 1500 + Client-ID (61), length 7: ether 40:6c:8f:4b:33:09 + Requested-IP (50), length 4: 10.0.0.245 + Server-ID (54), length 4: 10.0.0.1 + Hostname (12), length 11: "shankar-mbp" + 6 17:22:58.846495 IP (tos 0xc0, ttl 64, id 5411, offset 0, flags [none], proto UDP (17), length 348) + 10.0.0.1.67 > 10.0.0.245.68: [bad udp cksum 0x1cf3 -> 0xaf60!] BOOTP/DHCP, Reply, length 320, xid 0xaabab218, secs 3, Flags [none] (0x0000) + Your-IP 10.0.0.245 + Server-IP 10.0.0.1 + Client-Ethernet-Address 40:6c:8f:4b:33:09 + Vendor-rfc1048 Extensions + Magic Cookie 0x63825363 + DHCP-Message (53), length 1: ACK + Server-ID (54), length 4: 10.0.0.1 + Lease-Time (51), length 4: 3600 + RN (58), length 4: 1800 + RB (59), length 4: 3150 + Subnet-Mask (1), length 4: 255.255.255.0 + BR (28), length 4: 10.0.0.255 + Domain-Search (119), length 21: velocloud.net. eng.velocloud.net. + Default-Gateway (3), length 4: 10.0.0.1 + Domain-Name-Server (6), length 4: 10.0.0.1 + Domain-Name (15), length 3: "lan" diff --git a/tests/dhcp-option119.pcap b/tests/dhcp-option119.pcap new file mode 100644 index 0000000000..fd7e82fba9 Binary files /dev/null and b/tests/dhcp-option119.pcap differ