diff --git a/ntp_core.c b/ntp_core.c index 43cd002..f239a02 100644 --- a/ntp_core.c +++ b/ntp_core.c @@ -668,7 +668,7 @@ get_transmit_delay(NCR_Instance inst, int on_tx, double last_tx) /* ================================================== */ -static void +static int transmit_packet(NTP_Mode my_mode, /* The mode this machine wants to be */ int my_poll, /* The log2 of the local poll interval */ int version, /* The NTP version to be set in the packet */ @@ -690,7 +690,7 @@ transmit_packet(NTP_Mode my_mode, /* The mode this machine wants to be */ ) { NTP_Packet message; - int leap; + int leap, ret; struct timeval local_transmit; /* Parameters read from reference module */ @@ -774,17 +774,17 @@ transmit_packet(NTP_Mode my_mode, /* The mode this machine wants to be */ (unsigned char *)&message.auth_data, sizeof (message.auth_data)); if (auth_len > 0) { message.auth_keyid = htonl(key_id); - NIO_SendAuthenticatedPacket(&message, where_to, from, + ret = NIO_SendAuthenticatedPacket(&message, where_to, from, sizeof (message.auth_keyid) + auth_len); } else { DEBUG_LOG(LOGF_NtpCore, "Could not generate auth data with key %lu to send packet", key_id); - return; + return 0; } } else { UTI_TimevalToInt64(&local_transmit, &message.transmit_ts, ts_fuzz); - NIO_SendNormalPacket(&message, where_to, from); + ret = NIO_SendNormalPacket(&message, where_to, from); } if (local_tx) { @@ -795,6 +795,7 @@ transmit_packet(NTP_Mode my_mode, /* The mode this machine wants to be */ *local_ntp_tx = message.transmit_ts; } + return ret; } /* ================================================== */ diff --git a/ntp_io.c b/ntp_io.c index ef97a0e..e0f7aea 100644 --- a/ntp_io.c +++ b/ntp_io.c @@ -560,7 +560,7 @@ read_from_socket(void *anything) /* ================================================== */ /* Send a packet to given address */ -static void +static int send_packet(void *packet, int packetlen, NTP_Remote_Address *remote_addr, NTP_Local_Address *local_addr) { union sockaddr_in46 remote; @@ -575,7 +575,7 @@ send_packet(void *packet, int packetlen, NTP_Remote_Address *remote_addr, NTP_Lo if (local_addr->sock_fd == INVALID_SOCK_FD) { DEBUG_LOG(LOGF_NtpIO, "No socket to send to %s:%d", UTI_IPToString(&remote_addr->ip_addr), remote_addr->port); - return; + return 0; } switch (remote_addr->ip_addr.family) { @@ -603,7 +603,7 @@ send_packet(void *packet, int packetlen, NTP_Remote_Address *remote_addr, NTP_Lo break; #endif default: - return; + return 0; } if (addrlen) { @@ -670,27 +670,30 @@ send_packet(void *packet, int packetlen, NTP_Remote_Address *remote_addr, NTP_Lo UTI_IPToString(&remote_addr->ip_addr), remote_addr->port, UTI_IPToString(&local_addr->ip_addr), local_addr->sock_fd, strerror(errno)); - } else { - DEBUG_LOG(LOGF_NtpIO, "Sent to %s:%d from %s fd %d", - UTI_IPToString(&remote_addr->ip_addr), remote_addr->port, - UTI_IPToString(&local_addr->ip_addr), local_addr->sock_fd); + return 0; } + + DEBUG_LOG(LOGF_NtpIO, "Sent to %s:%d from %s fd %d", + UTI_IPToString(&remote_addr->ip_addr), remote_addr->port, + UTI_IPToString(&local_addr->ip_addr), local_addr->sock_fd); + + return 1; } /* ================================================== */ /* Send an unauthenticated packet to a given address */ -void +int NIO_SendNormalPacket(NTP_Packet *packet, NTP_Remote_Address *remote_addr, NTP_Local_Address *local_addr) { - send_packet((void *) packet, NTP_NORMAL_PACKET_SIZE, remote_addr, local_addr); + return send_packet((void *) packet, NTP_NORMAL_PACKET_SIZE, remote_addr, local_addr); } /* ================================================== */ /* Send an authenticated packet to a given address */ -void +int NIO_SendAuthenticatedPacket(NTP_Packet *packet, NTP_Remote_Address *remote_addr, NTP_Local_Address *local_addr, int auth_len) { - send_packet((void *) packet, NTP_NORMAL_PACKET_SIZE + auth_len, remote_addr, local_addr); + return send_packet((void *) packet, NTP_NORMAL_PACKET_SIZE + auth_len, remote_addr, local_addr); } diff --git a/ntp_io.h b/ntp_io.h index 581a94a..99e0ade 100644 --- a/ntp_io.h +++ b/ntp_io.h @@ -51,9 +51,9 @@ extern void NIO_CloseClientSocket(int sock_fd); 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); +extern int NIO_SendNormalPacket(NTP_Packet *packet, NTP_Remote_Address *remote_addr, NTP_Local_Address *local_addr); /* Function to transmit an authenticated packet */ -extern void NIO_SendAuthenticatedPacket(NTP_Packet *packet, NTP_Remote_Address *remote_addr, NTP_Local_Address *local_addr, int auth_len); +extern int NIO_SendAuthenticatedPacket(NTP_Packet *packet, NTP_Remote_Address *remote_addr, NTP_Local_Address *local_addr, int auth_len); #endif /* GOT_NTP_IO_H */