]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-udp.c
CHANGES: Add a change backported to 4.99
[tcpdump] / print-udp.c
index fc0710d69d94493d12e99c52260ed54ec621e3ca..aa132678c6371d5676e2394aa7234d9ffbf1c77a 100644 (file)
@@ -369,7 +369,7 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length,
        if (ndo->ndo_packettype != PT_RPC)
                udpipaddr_print(ndo, ip, sport, dport);
 
-       ND_LCHECKMSG_ZU(length, sizeof(struct udphdr), "undersized-udp");
+       ND_ICHECKMSG_ZU("undersized-udp", length, <, sizeof(struct udphdr));
        ulen = GET_BE_U_2(up->uh_ulen);
        udp_sum = GET_BE_U_2(up->uh_sum);
        /*
@@ -379,7 +379,8 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length,
         */
        if (ulen == 0 && length > 65535)
                ulen = length;
-       ND_LCHECKMSG_ZU(ulen, sizeof(struct udphdr), "undersized-udplength");
+       ND_ICHECKMSG_ZU("undersized-udplength", ulen, <,
+                       sizeof(struct udphdr));
        ulen -= sizeof(struct udphdr);
        length -= sizeof(struct udphdr);
        if (ulen < length)
@@ -463,6 +464,9 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length,
                        /* over_tcp: FALSE, is_mdns: FALSE */
                        domain_print(ndo, cp, length, FALSE, FALSE);
                        break;
+               case PT_QUIC:
+                       quic_print(ndo, cp, length);
+                       break;
                }
                return;
        }
@@ -624,8 +628,11 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length,
                else if (dport == BFD_CONTROL_PORT ||
                         dport == BFD_MULTIHOP_PORT ||
                         dport == BFD_LAG_PORT ||
+                        dport == SBFD_PORT ||
                         dport == BFD_ECHO_PORT )
                        bfd_print(ndo, cp, length, dport);
+               else if (sport == SBFD_PORT)
+                       bfd_print(ndo, cp, length, sport);
                else if (IS_SRC_OR_DST_PORT(LMP_PORT))
                        lmp_print(ndo, cp, length);
                else if (IS_SRC_OR_DST_PORT(VQP_PORT))
@@ -666,6 +673,9 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length,
                        ptp_print(ndo, cp, length);
                } else if (IS_SRC_OR_DST_PORT(SOMEIP_PORT))
                        someip_print(ndo, cp, length);
+               else if (IS_SRC_OR_DST_PORT(HTTPS_PORT) &&
+                        quic_detect(ndo, cp, length))
+                       quic_print(ndo, cp, length);
                else {
                        if (ulen > length && !fragmented)
                                ND_PRINT("UDP, bad length %u > %u",