X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/db7a7633e65ea66dacb40450d375c00d3f305408..b5068d5380c73e02bc35a96f641cad18d9b03f3d:/print-udp.c diff --git a/print-udp.c b/print-udp.c index 77bf330e..b5254f0c 100644 --- a/print-udp.c +++ b/print-udp.c @@ -520,6 +520,18 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length, udpipaddr_print(ndo, ip, sport, dport); lmp_print(ndo, cp, length); break; + case PT_PTP: + udpipaddr_print(ndo, ip, sport, dport); + ptp_print(ndo, cp, length); + break; + case PT_SOMEIP: + udpipaddr_print(ndo, ip, sport, dport); + someip_print(ndo, cp, length); + break; + case PT_DOMAIN: + udpipaddr_print(ndo, ip, sport, dport); + domain_print(ndo, (const u_char *)(up + 1), length, 0); + break; } return; } @@ -556,14 +568,14 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length, } if (ndo->ndo_vflag && !ndo->ndo_Kflag && !fragmented) { - /* Check the checksum, if possible. */ - uint16_t sum, udp_sum; + /* Check the checksum, if possible. */ + uint16_t sum, udp_sum; /* * XXX - do this even if vflag == 1? * TCP does, and we do so for UDP-over-IPv6. */ - if (IP_V(ip) == 4 && (ndo->ndo_vflag > 1)) { + if (IP_V(ip) == 4 && (ndo->ndo_vflag > 1)) { ND_TCHECK_2(up->uh_sum); udp_sum = GET_BE_U_2(up->uh_sum); if (udp_sum == 0) { @@ -571,7 +583,7 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length, } else if (ND_TTEST_LEN(cp, length)) { sum = udp_cksum(ndo, ip, up, length + sizeof(struct udphdr)); - if (sum != 0) { + if (sum != 0) { ND_PRINT("[bad udp cksum 0x%04x -> 0x%04x!] ", udp_sum, in_cksum_shouldbe(udp_sum, sum)); @@ -586,7 +598,7 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length, ND_TCHECK_2(up->uh_sum); udp_sum = GET_BE_U_2(up->uh_sum); - if (sum != 0) { + if (sum != 0) { ND_PRINT("[bad udp cksum 0x%04x -> 0x%04x!] ", udp_sum, in_cksum_shouldbe(udp_sum, sum)); @@ -612,11 +624,11 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length, else if (IS_SRC_OR_DST_PORT(AODV_PORT)) aodv_print(ndo, (const u_char *)(up + 1), length, ip6 != NULL); - else if (IS_SRC_OR_DST_PORT(ISAKMP_PORT)) + else if (IS_SRC_OR_DST_PORT(ISAKMP_PORT)) isakmp_print(ndo, (const u_char *)(up + 1), length, bp2); - else if (IS_SRC_OR_DST_PORT(ISAKMP_PORT_NATT)) + else if (IS_SRC_OR_DST_PORT(ISAKMP_PORT_NATT)) isakmp_rfc3948_print(ndo, (const u_char *)(up + 1), 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)) + else if (IS_SRC_OR_DST_PORT(ISAKMP_PORT_USER1) || IS_SRC_OR_DST_PORT(ISAKMP_PORT_USER2)) isakmp_print(ndo, (const u_char *)(up + 1), length, bp2); else if (IS_SRC_OR_DST_PORT(SNMP_PORT) || IS_SRC_OR_DST_PORT(SNMPTRAP_PORT)) snmp_print(ndo, (const u_char *)(up + 1), length); @@ -679,32 +691,34 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length, (IP_V(ip) == 6) ? 1 : 0); else if (IS_SRC_OR_DST_PORT(MPLS_LSP_PING_PORT)) lspping_print(ndo, (const u_char *)(up + 1), length); + else if (sport == BCM_LI_PORT) + bcm_li_print(ndo, (const u_char *)(up+1), length); else if (dport == BFD_CONTROL_PORT || dport == BFD_MULTIHOP_PORT || dport == BFD_LAG_PORT || dport == BFD_ECHO_PORT ) bfd_print(ndo, (const u_char *)(up+1), length, dport); - else if (IS_SRC_OR_DST_PORT(LMP_PORT)) + else if (IS_SRC_OR_DST_PORT(LMP_PORT)) lmp_print(ndo, (const u_char *)(up + 1), length); else if (IS_SRC_OR_DST_PORT(VQP_PORT)) vqp_print(ndo, (const u_char *)(up + 1), length); - else if (IS_SRC_OR_DST_PORT(SFLOW_PORT)) - sflow_print(ndo, (const u_char *)(up + 1), length); - else if (dport == LWAPP_CONTROL_PORT) + else if (IS_SRC_OR_DST_PORT(SFLOW_PORT)) + sflow_print(ndo, (const u_char *)(up + 1), length); + else if (dport == LWAPP_CONTROL_PORT) lwapp_control_print(ndo, (const u_char *)(up + 1), length, 1); - else if (sport == LWAPP_CONTROL_PORT) - lwapp_control_print(ndo, (const u_char *)(up + 1), length, 0); - else if (IS_SRC_OR_DST_PORT(LWAPP_DATA_PORT)) - lwapp_data_print(ndo, (const u_char *)(up + 1), length); - else if (IS_SRC_OR_DST_PORT(SIP_PORT)) + else if (sport == LWAPP_CONTROL_PORT) + lwapp_control_print(ndo, (const u_char *)(up + 1), length, 0); + else if (IS_SRC_OR_DST_PORT(LWAPP_DATA_PORT)) + lwapp_data_print(ndo, (const u_char *)(up + 1), length); + else if (IS_SRC_OR_DST_PORT(SIP_PORT)) sip_print(ndo, (const u_char *)(up + 1), length); - else if (IS_SRC_OR_DST_PORT(SYSLOG_PORT)) + else if (IS_SRC_OR_DST_PORT(SYSLOG_PORT)) syslog_print(ndo, (const u_char *)(up + 1), length); - else if (IS_SRC_OR_DST_PORT(OTV_PORT)) + else if (IS_SRC_OR_DST_PORT(OTV_PORT)) otv_print(ndo, (const u_char *)(up + 1), length); - else if (IS_SRC_OR_DST_PORT(VXLAN_PORT)) + else if (IS_SRC_OR_DST_PORT(VXLAN_PORT)) vxlan_print(ndo, (const u_char *)(up + 1), length); - else if (IS_SRC_OR_DST_PORT(GENEVE_PORT)) + else if (IS_SRC_OR_DST_PORT(GENEVE_PORT)) geneve_print(ndo, (const u_char *)(up + 1), length); else if (IS_SRC_OR_DST_PORT(LISP_CONTROL_PORT)) lisp_print(ndo, (const u_char *)(up + 1), length); @@ -712,13 +726,20 @@ udp_print(netdissect_options *ndo, const u_char *bp, u_int length, vxlan_gpe_print(ndo, (const u_char *)(up + 1), length); else if (IS_SRC_OR_DST_PORT(ZEP_PORT)) zep_print(ndo, (const u_char *)(up + 1), length); + else if (IS_SRC_OR_DST_PORT(MPLS_PORT)) + mpls_print(ndo, (const u_char *)(up + 1), length); else if (ND_TTEST_1(((const struct LAP *)cp)->type) && GET_U_1(((const struct LAP *)cp)->type) == lapDDP && (atalk_port(sport) || atalk_port(dport))) { if (ndo->ndo_vflag) ND_PRINT("kip "); llap_print(ndo, cp, length); - } else { + } 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, (const u_char *)(up + 1), length); + else { if (ulen > length) ND_PRINT("UDP, bad length %u > %u", ulen, length);