]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-udp.c
CI: Add warning exemptions for Sun C (suncc-5.15) on Solaris 10
[tcpdump] / print-udp.c
index d5891de654b669c611d3608264550a9faa961c76..982ddb9291f62d6d81f4075d60089c8b251b11c0 100644 (file)
@@ -21,9 +21,7 @@
 
 /* \summary: UDP printer */
 
-#ifdef HAVE_CONFIG_H
 #include <config.h>
-#endif
 
 #include "netdissect-stdinc.h"
 
@@ -81,14 +79,14 @@ struct rtcp_rr {
 #define RTCP_PT_SR     200
 #define RTCP_PT_RR     201
 #define RTCP_PT_SDES   202
-#define        RTCP_SDES_CNAME 1
-#define        RTCP_SDES_NAME  2
-#define        RTCP_SDES_EMAIL 3
-#define        RTCP_SDES_PHONE 4
-#define        RTCP_SDES_LOC   5
-#define        RTCP_SDES_TOOL  6
-#define        RTCP_SDES_NOTE  7
-#define        RTCP_SDES_PRIV  8
+#define    RTCP_SDES_CNAME     1
+#define    RTCP_SDES_NAME      2
+#define    RTCP_SDES_EMAIL     3
+#define    RTCP_SDES_PHONE     4
+#define    RTCP_SDES_LOC       5
+#define    RTCP_SDES_TOOL      6
+#define    RTCP_SDES_NOTE      7
+#define    RTCP_SDES_PRIV      8
 #define RTCP_PT_BYE    203
 #define RTCP_PT_APP    204
 
@@ -369,7 +367,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 +377,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)
@@ -434,8 +433,7 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length,
                        break;
 
                case PT_AODV:
-                       aodv_print(ndo, cp, length,
-                           ip6 != NULL);
+                       aodv_print(ndo, cp, length, IP_V(ip) == 6);
                        break;
 
                case PT_RADIUS:
@@ -464,7 +462,7 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length,
                        domain_print(ndo, cp, length, FALSE, FALSE);
                        break;
                case PT_QUIC:
-                       quic_print(ndo, cp, length);
+                       quic_print(ndo, cp);
                        break;
                }
                return;
@@ -521,8 +519,7 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length,
                                } else
                                        ND_PRINT("[udp sum ok] ");
                        }
-               }
-               else if (IP_V(ip) == 6) {
+               } else if (IP_V(ip) == 6) {
                        /* for IPv6, UDP checksum is mandatory */
                        if (ND_TTEST_LEN(cp, length)) {
                                sum = udp6_cksum(ndo, ip6, up, length + sizeof(struct udphdr));
@@ -541,40 +538,63 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length,
                if (IS_SRC_OR_DST_PORT(NAMESERVER_PORT))
                        /* over_tcp: FALSE, is_mdns: FALSE */
                        domain_print(ndo, cp, length, FALSE, FALSE);
-               else if (IS_SRC_OR_DST_PORT(MULTICASTDNS_PORT))
-                       /* over_tcp: FALSE, is_mdns: TRUE */
-                       domain_print(ndo, cp, length, FALSE, TRUE);
-               else if (IS_SRC_OR_DST_PORT(TIMED_PORT))
-                       timed_print(ndo, (const u_char *)cp);
+               else if (IS_SRC_OR_DST_PORT(BOOTPC_PORT) ||
+                        IS_SRC_OR_DST_PORT(BOOTPS_PORT))
+                       bootp_print(ndo, cp, length);
                else if (IS_SRC_OR_DST_PORT(TFTP_PORT))
                        tftp_print(ndo, cp, length);
-               else if (IS_SRC_OR_DST_PORT(BOOTPC_PORT) || IS_SRC_OR_DST_PORT(BOOTPS_PORT))
-                       bootp_print(ndo, cp, length);
+               else if (IS_SRC_OR_DST_PORT(KERBEROS_PORT))
+                       krb_print(ndo, (const u_char *)cp);
+               else if (IS_SRC_OR_DST_PORT(NTP_PORT))
+                       ntp_print(ndo, cp, length);
+#ifdef ENABLE_SMB
+               else if (IS_SRC_OR_DST_PORT(NETBIOS_NS_PORT))
+                       nbt_udp137_print(ndo, cp, length);
+               else if (IS_SRC_OR_DST_PORT(NETBIOS_DGRAM_PORT))
+                       nbt_udp138_print(ndo, cp, length);
+#endif
+               else if (IS_SRC_OR_DST_PORT(SNMP_PORT) ||
+                        IS_SRC_OR_DST_PORT(SNMPTRAP_PORT))
+                       snmp_print(ndo, cp, length);
+               else if (IS_SRC_OR_DST_PORT(PTP_EVENT_PORT) ||
+                        IS_SRC_OR_DST_PORT(PTP_GENERAL_PORT))
+                       ptp_print(ndo, cp, length);
+               else if (IS_SRC_OR_DST_PORT(CISCO_AUTORP_PORT))
+                       cisco_autorp_print(ndo, cp, length);
+               else if (IS_SRC_OR_DST_PORT(ISAKMP_PORT))
+                        isakmp_print(ndo, cp, length, bp2);
+               else if (IS_SRC_OR_DST_PORT(SYSLOG_PORT))
+                       syslog_print(ndo, cp, length);
                else if (IS_SRC_OR_DST_PORT(RIP_PORT))
                        rip_print(ndo, cp, length);
+               else if (IS_SRC_OR_DST_PORT(RIPNG_PORT))
+                       ripng_print(ndo, cp, length);
+               else if (IS_SRC_OR_DST_PORT(TIMED_PORT))
+                       timed_print(ndo, (const u_char *)cp);
+               else if (IS_SRC_OR_DST_PORT(DHCP6_SERV_PORT) ||
+                        IS_SRC_OR_DST_PORT(DHCP6_CLI_PORT))
+                       dhcp6_print(ndo, cp, length);
+               else if (IS_SRC_OR_DST_PORT(LDP_PORT))
+                       ldp_print(ndo, cp, length);
                else if (IS_SRC_OR_DST_PORT(AODV_PORT))
-                       aodv_print(ndo, cp, length,
-                           ip6 != NULL);
-               else if (IS_SRC_OR_DST_PORT(ISAKMP_PORT))
-                        isakmp_print(ndo, cp, length, bp2);
+                       aodv_print(ndo, cp, length, IP_V(ip) == 6);
+               else if (IS_SRC_OR_DST_PORT(OLSR_PORT))
+                       olsr_print(ndo, cp, length, IP_V(ip) == 6);
+               else if (IS_SRC_OR_DST_PORT(LMP_PORT))
+                       lmp_print(ndo, cp, length);
+               else if (IS_SRC_OR_DST_PORT(KERBEROS_SEC_PORT))
+                       krb_print(ndo, (const u_char *)cp);
+               else if (IS_SRC_OR_DST_PORT(LWRES_PORT))
+                       lwres_print(ndo, cp, length);
+               else if (IS_SRC_OR_DST_PORT(MULTICASTDNS_PORT))
+                       /* over_tcp: FALSE, is_mdns: TRUE */
+                       domain_print(ndo, cp, length, FALSE, TRUE);
                else if (IS_SRC_OR_DST_PORT(ISAKMP_PORT_NATT))
                         isakmp_rfc3948_print(ndo, cp, length, bp2, IP_V(ip), fragmented, ttl_hl);
                else if (IS_SRC_OR_DST_PORT(ISAKMP_PORT_USER1) || IS_SRC_OR_DST_PORT(ISAKMP_PORT_USER2))
                        isakmp_print(ndo, cp, length, bp2);
-               else if (IS_SRC_OR_DST_PORT(SNMP_PORT) || IS_SRC_OR_DST_PORT(SNMPTRAP_PORT))
-                       snmp_print(ndo, cp, length);
-               else if (IS_SRC_OR_DST_PORT(NTP_PORT))
-                       ntp_print(ndo, cp, length);
-               else if (IS_SRC_OR_DST_PORT(KERBEROS_PORT) || IS_SRC_OR_DST_PORT(KERBEROS_SEC_PORT))
-                       krb_print(ndo, (const u_char *)cp);
                else if (IS_SRC_OR_DST_PORT(L2TP_PORT))
                        l2tp_print(ndo, cp, length);
-#ifdef ENABLE_SMB
-               else if (IS_SRC_OR_DST_PORT(NETBIOS_NS_PORT))
-                       nbt_udp137_print(ndo, cp, length);
-               else if (IS_SRC_OR_DST_PORT(NETBIOS_DGRAM_PORT))
-                       nbt_udp138_print(ndo, cp, length);
-#endif
                else if (dport == VAT_PORT)
                        vat_print(ndo, cp, length);
                else if (IS_SRC_OR_DST_PORT(ZEPHYR_SRV_PORT) || IS_SRC_OR_DST_PORT(ZEPHYR_CLT_PORT))
@@ -587,10 +607,6 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length,
                         (dport >= RX_PORT_LOW && dport <= RX_PORT_HIGH))
                        rx_print(ndo, cp, length, sport, dport,
                                 (const u_char *) ip);
-               else if (IS_SRC_OR_DST_PORT(RIPNG_PORT))
-                       ripng_print(ndo, cp, length);
-               else if (IS_SRC_OR_DST_PORT(DHCP6_SERV_PORT) || IS_SRC_OR_DST_PORT(DHCP6_CLI_PORT))
-                       dhcp6_print(ndo, cp, length);
                else if (IS_SRC_OR_DST_PORT(AHCP_PORT))
                        ahcp_print(ndo, cp, length);
                else if (IS_SRC_OR_DST_PORT(BABEL_PORT) || IS_SRC_OR_DST_PORT(BABEL_PORT_OLD))
@@ -602,8 +618,6 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length,
                 */
                else if (dport == WB_PORT)
                        wb_print(ndo, cp, length);
-               else if (IS_SRC_OR_DST_PORT(CISCO_AUTORP_PORT))
-                       cisco_autorp_print(ndo, cp, length);
                else if (IS_SRC_OR_DST_PORT(RADIUS_PORT) ||
                         IS_SRC_OR_DST_PORT(RADIUS_NEW_PORT) ||
                         IS_SRC_OR_DST_PORT(RADIUS_ACCOUNTING_PORT) ||
@@ -613,17 +627,8 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length,
                        radius_print(ndo, cp, length);
                else if (dport == HSRP_PORT)
                        hsrp_print(ndo, cp, length);
-               else if (IS_SRC_OR_DST_PORT(LWRES_PORT))
-                       lwres_print(ndo, cp, length);
-               else if (IS_SRC_OR_DST_PORT(LDP_PORT))
-                       ldp_print(ndo, cp, length);
-               else if (IS_SRC_OR_DST_PORT(OLSR_PORT))
-                       olsr_print(ndo, cp, length,
-                                       (IP_V(ip) == 6) ? 1 : 0);
                else if (IS_SRC_OR_DST_PORT(MPLS_LSP_PING_PORT))
                        lspping_print(ndo, cp, length);
-               else if (sport == BCM_LI_PORT)
-                       bcm_li_print(ndo, cp, length);
                else if (dport == BFD_CONTROL_PORT ||
                         dport == BFD_MULTIHOP_PORT ||
                         dport == BFD_LAG_PORT ||
@@ -632,8 +637,6 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length,
                        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))
                        vqp_print(ndo, cp, length);
                else if (IS_SRC_OR_DST_PORT(SFLOW_PORT))
@@ -646,13 +649,11 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length,
                        lwapp_data_print(ndo, cp, length);
                else if (IS_SRC_OR_DST_PORT(SIP_PORT))
                        sip_print(ndo, cp, length);
-               else if (IS_SRC_OR_DST_PORT(SYSLOG_PORT))
-                       syslog_print(ndo, cp, length);
                else if (IS_SRC_OR_DST_PORT(OTV_PORT))
                        otv_print(ndo, cp, length);
                else if (IS_SRC_OR_DST_PORT(VXLAN_PORT))
                        vxlan_print(ndo, cp, length);
-               else if (IS_SRC_OR_DST_PORT(GENEVE_PORT))
+               else if (dport == GENEVE_PORT)
                        geneve_print(ndo, cp, length);
                else if (IS_SRC_OR_DST_PORT(LISP_CONTROL_PORT))
                        lisp_print(ndo, cp, length);
@@ -667,14 +668,13 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length,
                        if (ndo->ndo_vflag)
                                ND_PRINT("kip ");
                        llap_print(ndo, cp, length);
-               } else if (IS_SRC_OR_DST_PORT(PTP_EVENT_PORT) ||
-                       IS_SRC_OR_DST_PORT(PTP_GENERAL_PORT)) {
-                       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);
+                       quic_print(ndo, cp);
+               else if (sport == BCM_LI_PORT)
+                       bcm_li_print(ndo, cp, length);
                else {
                        if (ulen > length && !fragmented)
                                ND_PRINT("UDP, bad length %u > %u",