From c3e4e3e47a443927582e77c54b962efb78e3a2cb Mon Sep 17 00:00:00 2001 From: Dan Drown Date: Tue, 7 Mar 2023 16:29:19 +0100 Subject: [PATCH] ntp: increment sequence id in PTP messages --- ntp_io.c | 3 +++ ptp.h | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ntp_io.c b/ntp_io.c index ade3a0e..e5f3418 100644 --- a/ntp_io.c +++ b/ntp_io.c @@ -528,6 +528,8 @@ NIO_UnwrapMessage(SCK_Message *message, int sock_fd) static int wrap_message(SCK_Message *message, int sock_fd) { + static uint16_t sequence_id = 0; + assert(PTP_NTP_PREFIX_LENGTH == 48); if (!is_ptp_socket(sock_fd)) @@ -548,6 +550,7 @@ wrap_message(SCK_Message *message, int sock_fd) ptp_message->header.length = htons(PTP_NTP_PREFIX_LENGTH + message->length); ptp_message->header.domain = PTP_DOMAIN_NTP; ptp_message->header.flags = htons(PTP_FLAG_UNICAST); + ptp_message->header.sequence_id = htons(sequence_id++); ptp_message->tlv_header.type = htons(PTP_TLV_NTP); ptp_message->tlv_header.length = htons(message->length); memcpy((char *)ptp_message + PTP_NTP_PREFIX_LENGTH, message->data, message->length); diff --git a/ptp.h b/ptp.h index 7a93590..8034a2c 100644 --- a/ptp.h +++ b/ptp.h @@ -44,7 +44,12 @@ typedef struct { uint8_t domain; uint8_t min_sdoid; uint16_t flags; - uint8_t rest[26]; + uint8_t correction[8]; + uint8_t msg_specific[4]; + uint8_t port_id[10]; + uint16_t sequence_id; + uint8_t control; + int8_t interval; } PTP_Header; typedef struct {