X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/c339b579b913ca0134a9a84a19d3ccfe1ecfc41b..c39d40a767a1ae36171e5bcbf6f157ff3e80fb6c:/print-ptp.c diff --git a/print-ptp.c b/print-ptp.c index 6f762dc7..f4ccbe9d 100644 --- a/print-ptp.c +++ b/print-ptp.c @@ -24,7 +24,6 @@ #include "netdissect-stdinc.h" #include "netdissect.h" #include "extract.h" -#include /* * PTP header @@ -259,9 +258,9 @@ static const struct tok ptp_flag_values[] = { ND_PRINT("(%s)", tok2str(ptp_msg_type, "unknown", e)); \ } -const char *p_porigin_ts = "preciseOriginTimeStamp"; -const char *p_origin_ts = "originTimeStamp"; -const char *p_recv_ts = "receiveTimeStamp"; +static const char *p_porigin_ts = "preciseOriginTimeStamp"; +static const char *p_origin_ts = "originTimeStamp"; +static const char *p_recv_ts = "receiveTimeStamp"; #define PTP_VER_1 0x1 #define PTP_VER_2 0x2 @@ -340,7 +339,8 @@ ptp_print_1(netdissect_options *ndo) ND_PRINT(" (not implemented)"); } -static void ptp_print_2(netdissect_options *ndo, const u_char *bp, u_int length) +static void +ptp_print_2(netdissect_options *ndo, const u_char *bp, u_int length) { u_int len = length; uint16_t msg_len, flags, port_id, seq_id; @@ -358,7 +358,7 @@ static void ptp_print_2(netdissect_options *ndo, const u_char *bp, u_int length) len -= 2; bp += 2; msg_len = GET_BE_U_2(bp); ND_PRINT(", length : %u", msg_len); /* domain */ - len -= 2; bp += 2; domain_no = GET_BE_U_2(bp) & PTP_DOMAIN_MASK; ND_PRINT(", domain : %u", domain_no); + len -= 2; bp += 2; domain_no = (GET_BE_U_2(bp) & PTP_DOMAIN_MASK) >> 8; ND_PRINT(", domain : %u", domain_no); /* rsvd 1*/ rsvd1 = GET_BE_U_2(bp) & PTP_RSVD1_MASK; @@ -431,14 +431,12 @@ static void ptp_print_2(netdissect_options *ndo, const u_char *bp, u_int length) * PTP general message */ void -ptp_print(netdissect_options *ndo, const u_char *bp, u_int len) +ptp_print(netdissect_options *ndo, const u_char *bp, u_int length) { u_int vers; ndo->ndo_protocol = "ptp"; - if (len < PTP_HDR_LEN) { - goto trunc; - } + ND_LCHECK_U(length, PTP_HDR_LEN); vers = GET_BE_U_2(bp) & PTP_VERS_MASK; ND_PRINT("PTPv%u",vers); switch(vers) { @@ -446,7 +444,7 @@ ptp_print(netdissect_options *ndo, const u_char *bp, u_int len) ptp_print_1(ndo); break; case PTP_VER_2: - ptp_print_2(ndo, bp, len); + ptp_print_2(ndo, bp, length); break; default: //ND_PRINT("ERROR: unknown-version\n"); @@ -454,9 +452,8 @@ ptp_print(netdissect_options *ndo, const u_char *bp, u_int len) } return; -trunc: - nd_print_trunc(ndo); - return; +invalid: + nd_print_invalid(ndo); } static void