int valid_auth, auth_len;
unsigned long key_id;
+ /* Ignore the packet if it wasn't received by server socket */
+ if (!NIO_IsServerSocket(local_addr->sock_fd)) {
+ DEBUG_LOG(LOGF_NtpCore, "NTP request packet received by client socket %d",
+ local_addr->sock_fd);
+ return;
+ }
+
/* Check version */
version = (message->lvm >> 3) & 0x7;
if (version < NTP_MIN_COMPAT_VERSION || version > NTP_MAX_COMPAT_VERSION) {
/* ================================================== */
+int
+NIO_IsServerSocket(int sock_fd)
+{
+ return sock_fd != INVALID_SOCK_FD &&
+ (sock_fd == server_sock_fd4
+#ifdef HAVE_IPV6
+ || sock_fd == server_sock_fd6
+#endif
+ );
+}
+
+/* ================================================== */
+
static void
read_from_socket(void *anything)
{
/* Function to close a socket returned by NIO_GetClientSocket() */
extern void NIO_CloseClientSocket(int sock_fd);
+/* Function to check if socket is a server socket */
+extern int NIO_IsServerSocket(int sock_fd);
+
/* Function to transmit a packet */
extern void NIO_SendNormalPacket(NTP_Packet *packet, NTP_Remote_Address *remote_addr, NTP_Local_Address *local_addr);