Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/external/bsd/ntp/dist/ntpd ntpd: In the event of route(4) ov...
details: https://anonhg.NetBSD.org/src/rev/669ceffdc6e2
branches: trunk
changeset: 1017606:669ceffdc6e2
user: roy <roy%NetBSD.org@localhost>
date: Fri Jan 01 17:21:47 2021 +0000
description:
ntpd: In the event of route(4) overflow, update the interfaces
diffstat:
external/bsd/ntp/dist/ntpd/ntp_io.c | 17 ++++++++++++++++-
1 files changed, 16 insertions(+), 1 deletions(-)
diffs (45 lines):
diff -r 6e9a532c3638 -r 669ceffdc6e2 external/bsd/ntp/dist/ntpd/ntp_io.c
--- a/external/bsd/ntp/dist/ntpd/ntp_io.c Fri Jan 01 16:50:47 2021 +0000
+++ b/external/bsd/ntp/dist/ntpd/ntp_io.c Fri Jan 01 17:21:47 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ntp_io.c,v 1.27 2020/05/25 20:47:25 christos Exp $ */
+/* $NetBSD: ntp_io.c,v 1.28 2021/01/01 17:21:47 roy Exp $ */
/*
* ntp_io.c - input/output routines for ntpd. The socket-opening code
@@ -4727,6 +4727,14 @@
if (errno == ENOBUFS) {
msyslog(LOG_ERR,
"routing socket reports: %m");
+ /*
+ * drain the routing socket as we need to update
+ * the interfaces anyway
+ */
+ do {
+ cnt = read(reader->fd, buffer, sizeof(buffer));
+ } while (cnt != -1 || errno == ENOBUFS);
+ timer_interfacetimeout(current_time + UPDATE_GRACE);
} else {
msyslog(LOG_ERR,
"routing socket reports: %m - disabling");
@@ -4837,6 +4845,9 @@
struct sockaddr_nl sa;
#else
int fd = socket(PF_ROUTE, SOCK_RAW, 0);
+#ifdef SO_RERROR
+ int on = 1;
+#endif
#endif
#ifdef RO_MSGFILTER
unsigned char msgfilter[] = {
@@ -4907,6 +4918,10 @@
&msgfilter, sizeof(msgfilter)) == -1)
msyslog(LOG_ERR, "RO_MSGFILTER: %m");
#endif
+#ifdef SO_RERROR
+ if (setsockopt(fd, SOL_SOCKET, SO_RERROR, &on, sizeof(on)) == -1)
+ msyslog(LOG_ERR, "SO_RERROR: %m");
+#endif
make_socket_nonblocking(fd);
#if defined(HAVE_SIGNALED_IO)
init_socket_sig(fd);
Home |
Main Index |
Thread Index |
Old Index