#include "netdissect-stdinc.h"
#include "netdissect.h"
#include "extract.h"
-#include <string.h>
/*
* PTP header
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
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;
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;
* 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) {
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");
}
return;
-trunc:
- nd_print_trunc(ndo);
- return;
+invalid:
+ nd_print_invalid(ndo);
}
static void