X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/3076dc3166d1d854a965443451ff3915d054d8f1..e4adb4b6e18aae3017797c8f214fd7dd0dd51efc:/print-dhcp6.c diff --git a/print-dhcp6.c b/print-dhcp6.c index b6da2ffc..6b0dc213 100644 --- a/print-dhcp6.c +++ b/print-dhcp6.c @@ -408,6 +408,9 @@ dhcp6opt_print(netdissect_options *ndo, ND_PRINT(" %u)", GET_BE_U_2(tp)); break; case DH6OPT_RELAY_MSG: + { + const u_char *snapend_save; + ND_PRINT(" ("); tp = (const u_char *)(dh6o + 1); /* @@ -418,11 +421,13 @@ dhcp6opt_print(netdissect_options *ndo, * dhcp6_print(), for the nested DHCPv6 packet, the * remaining length < remaining caplen. */ - nd_push_snapend(ndo, tp + optlen); + snapend_save = ndo->ndo_snapend; + ndo->ndo_snapend = ND_MIN(tp + optlen, ndo->ndo_snapend); dhcp6_print(ndo, tp, optlen); - nd_pop_packet_info(ndo); + ndo->ndo_snapend = snapend_save; ND_PRINT(")"); break; + } case DH6OPT_AUTH: if (optlen < 11) { ND_PRINT(" ?)");