ntp: return with status from functions sending packets

This commit is contained in:
Miroslav Lichvar 2014-08-20 14:30:42 +02:00
parent 090ec985f3
commit e3c77f9b4b
3 changed files with 22 additions and 18 deletions

View file

@ -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 */ transmit_packet(NTP_Mode my_mode, /* The mode this machine wants to be */
int my_poll, /* The log2 of the local poll interval */ int my_poll, /* The log2 of the local poll interval */
int version, /* The NTP version to be set in the packet */ 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; NTP_Packet message;
int leap; int leap, ret;
struct timeval local_transmit; struct timeval local_transmit;
/* Parameters read from reference module */ /* 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)); (unsigned char *)&message.auth_data, sizeof (message.auth_data));
if (auth_len > 0) { if (auth_len > 0) {
message.auth_keyid = htonl(key_id); 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); sizeof (message.auth_keyid) + auth_len);
} else { } else {
DEBUG_LOG(LOGF_NtpCore, DEBUG_LOG(LOGF_NtpCore,
"Could not generate auth data with key %lu to send packet", "Could not generate auth data with key %lu to send packet",
key_id); key_id);
return; return 0;
} }
} else { } else {
UTI_TimevalToInt64(&local_transmit, &message.transmit_ts, ts_fuzz); 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) { 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; *local_ntp_tx = message.transmit_ts;
} }
return ret;
} }
/* ================================================== */ /* ================================================== */

View file

@ -560,7 +560,7 @@ read_from_socket(void *anything)
/* ================================================== */ /* ================================================== */
/* Send a packet to given address */ /* 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) send_packet(void *packet, int packetlen, NTP_Remote_Address *remote_addr, NTP_Local_Address *local_addr)
{ {
union sockaddr_in46 remote; 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) { if (local_addr->sock_fd == INVALID_SOCK_FD) {
DEBUG_LOG(LOGF_NtpIO, "No socket to send to %s:%d", DEBUG_LOG(LOGF_NtpIO, "No socket to send to %s:%d",
UTI_IPToString(&remote_addr->ip_addr), remote_addr->port); UTI_IPToString(&remote_addr->ip_addr), remote_addr->port);
return; return 0;
} }
switch (remote_addr->ip_addr.family) { switch (remote_addr->ip_addr.family) {
@ -603,7 +603,7 @@ send_packet(void *packet, int packetlen, NTP_Remote_Address *remote_addr, NTP_Lo
break; break;
#endif #endif
default: default:
return; return 0;
} }
if (addrlen) { 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(&remote_addr->ip_addr), remote_addr->port,
UTI_IPToString(&local_addr->ip_addr), local_addr->sock_fd, UTI_IPToString(&local_addr->ip_addr), local_addr->sock_fd,
strerror(errno)); strerror(errno));
} else { 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);
} }
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 */ /* 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) 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 */ /* 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) 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);
} }

View file

@ -51,9 +51,9 @@ extern void NIO_CloseClientSocket(int sock_fd);
extern int NIO_IsServerSocket(int sock_fd); extern int NIO_IsServerSocket(int sock_fd);
/* Function to transmit a packet */ /* 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 */ /* 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 */ #endif /* GOT_NTP_IO_H */