From a2d1569455aa10a273e41eba5f79ca6210934d68 Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Tue, 26 Oct 2021 15:40:09 +0200 Subject: [PATCH] socket: increase message buffer length Add extra space to the socket message buffer to be able to receive maximum-length NTP-over-PTP SW/HW-timestamped messages from the Linux error queue (which are looped back as layer-2 frames). --- socket.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/socket.c b/socket.c index a6010d8..860fa0f 100644 --- a/socket.c +++ b/socket.c @@ -59,11 +59,16 @@ struct Message { union sockaddr_all name; struct iovec iov; /* Buffer of sufficient length for all expected messages */ - union { - NTP_Packet ntp_msg; - PTP_NtpMessage ptp_msg; - CMD_Request cmd_request; - CMD_Reply cmd_reply; + struct { + /* Extra space for Ethernet, IPv4/IPv6, and UDP headers in + timestamped messages received from the Linux error queue */ + uint8_t l234_headers[64]; + union { + NTP_Packet ntp_msg; + PTP_NtpMessage ptp_msg; + CMD_Request cmd_request; + CMD_Reply cmd_reply; + } msg; } msg_buf; /* Aligned buffer for control messages */ struct cmsghdr cmsg_buf[CMSG_BUF_SIZE / sizeof (struct cmsghdr)];