From a37ee7168398ae7396eab28554c281a3936953b2 Mon Sep 17 00:00:00 2001 From: dtucker <> Date: Thu, 19 Jan 2006 11:20:23 +0000 Subject: [PATCH] Do not attempt to listen on interfaces with a wildcard address; ok henning@ --- src/usr.sbin/ntpd/server.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/usr.sbin/ntpd/server.c b/src/usr.sbin/ntpd/server.c index 8a014894..e2529e5d 100644 --- a/src/usr.sbin/ntpd/server.c +++ b/src/usr.sbin/ntpd/server.c @@ -1,4 +1,4 @@ -/* $OpenBSD: server.c,v 1.27 2006/01/19 06:40:16 dtucker Exp $ */ +/* $OpenBSD: server.c,v 1.28 2006/01/19 11:20:23 dtucker Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer @@ -34,6 +34,8 @@ setup_listeners(struct servent *se, struct ntpd_conf *conf, u_int *cnt) struct listen_addr *la; struct ifaddrs *ifa, *ifap; struct sockaddr *sa; + u_int8_t *a6; + size_t sa6len = sizeof(struct in6_addr); u_int new_cnt = 0; int tos = IPTOS_LOWDELAY; @@ -51,6 +53,18 @@ setup_listeners(struct servent *se, struct ntpd_conf *conf, u_int *cnt) if (SA_LEN(sa) == 0) continue; + if (sa->sa_family == AF_INET && + ((struct sockaddr_in *)sa)->sin_addr.s_addr == + INADDR_ANY) + continue; + + if (sa->sa_family == AF_INET6) { + a6 = ((struct sockaddr_in6 *)sa)-> + sin6_addr.s6_addr; + if (memcmp(a6, &in6addr_any, sa6len) == 0) + continue; + } + if ((la = calloc(1, sizeof(struct listen_addr))) == NULL) fatal("setup_listeners calloc");