From owner-freebsd-net@FreeBSD.ORG Sat Mar 16 08:59:15 2013 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 481C8FE3 for ; Sat, 16 Mar 2013 08:59:15 +0000 (UTC) (envelope-from ume@mahoroba.org) Received: from mail.mahoroba.org (ent.mahoroba.org [IPv6:2001:2f0:104:8010::1]) by mx1.freebsd.org (Postfix) with ESMTP id A447980A for ; Sat, 16 Mar 2013 08:59:13 +0000 (UTC) Received: from yuga.mahoroba.org (ume@yuga-m.mahoroba.org [IPv6:2001:2f0:104:8016:7258:12ff:fe22:d94b]) (user=ume mech=DIGEST-MD5 bits=0) by mail.mahoroba.org (8.14.6/8.14.6) with ESMTP/inet6 id r2G8x1pX004503 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Sat, 16 Mar 2013 17:59:07 +0900 (JST) (envelope-from ume@mahoroba.org) Date: Sat, 16 Mar 2013 17:58:59 +0900 Message-ID: From: Hajimu UMEMOTO To: "M. Schulte" Subject: Re: ntpd bind() failure: Can't assign requested address In-Reply-To: References: User-Agent: xcite1.60> Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?ISO-2022-JP-2?B?R29qGyQoRCtXGyhC?=) APEL/10.8 Emacs/24.2 (i386-portbld-freebsd9.1) MULE/6.0 (HANACHIRUSATO) X-Operating-System: FreeBSD 9.1-STABLE X-PGP-Key: http://www.mahoroba.org/~ume/publickey.asc X-PGP-Fingerprint: 1F00 0B9E 2164 70FC 6DC5 BF5F 04E9 F086 BF90 71FE MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: multipart/mixed; boundary="Multipart_Sat_Mar_16_17:58:59_2013-1" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.4.3 (mail.mahoroba.org [IPv6:2001:2f0:104:8010::1]); Sat, 16 Mar 2013 17:59:07 +0900 (JST) X-Virus-Scanned: clamav-milter 0.97.7 at asuka.mahoroba.org X-Virus-Status: Clean X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on asuka.mahoroba.org Cc: freebsd-net@freebsd.org X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 16 Mar 2013 08:59:15 -0000 --Multipart_Sat_Mar_16_17:58:59_2013-1 Content-Type: text/plain; charset=US-ASCII Hi, >>>>> On Fri, 15 Mar 2013 22:54:42 +0100 (CET) >>>>> "M. Schulte" said: m-freebsd> I fear I cannot answer all of these questions. I don't have any IPv6 m-freebsd> addresses configured in rc.conf. Also, I am not using dhcp. Basically m-freebsd> I only have IPv4 networking configured with static addresses -- m-freebsd> neither have I actively _disabled_ IPv6. m-freebsd> This is my ifconfig output: m-freebsd> re0: flags=8843 metric 0 mtu 1500 m-freebsd> options=8009b m-freebsd> ether 00:16:36:74:20:76 m-freebsd> inet XXX.XXX.XXX.XXX netmask 0xfffffff0 broadcast XXX.XXX.XXX.XXX m-freebsd> inet6 fe80::216:36ff:fe74:2076%re0 prefixlen 64 scopeid 0x2 m-freebsd> nd6 options=29 m-freebsd> media: Ethernet autoselect (100baseTX ) m-freebsd> status: active It seems IPv6 is disabled by IFDISABLED nd6 option. Please try the attached patch to ignore it. Sincerely, --Multipart_Sat_Mar_16_17:58:59_2013-1 Content-Type: text/x-patch; type=patch; charset=US-ASCII Content-Disposition: attachment; filename="ntpd-ifdisabled.diff" Content-Transfer-Encoding: 7bit Index: contrib/ntp/ntpd/ntp_io.c diff -u -p contrib/ntp/ntpd/ntp_io.c.orig contrib/ntp/ntpd/ntp_io.c --- contrib/ntp/ntpd/ntp_io.c.orig 2012-10-01 02:28:37.157635135 +0900 +++ contrib/ntp/ntpd/ntp_io.c 2013-03-16 17:30:51.384215167 +0900 @@ -69,6 +69,7 @@ #include #include #include +#include #endif /* !INCLUDE_IPV6_SUPPORT */ extern int listen_to_virtual_ips; @@ -1202,6 +1203,28 @@ is_anycast(struct sockaddr *sa, char *na #endif /* !SIOCGIFAFLAG_IN6 || !IN6_IFF_ANYCAST */ return ISC_FALSE; } + +static isc_boolean_t +is_ifdisabled(char *name) +{ +#if defined(SIOCGIFINFO_IN6) && defined(ND6_IFF_IFDISABLED) + struct in6_ndireq nd; + int fd; + + if ((fd = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) + return ISC_FALSE; + memset(&nd, 0, sizeof(nd)); + strlcpy(nd.ifname, name, sizeof(nd.ifname)); + if (ioctl(fd, SIOCGIFINFO_IN6, &nd) < 0) { + close(fd); + return ISC_FALSE; + } + close(fd); + if ((nd.ndi.flags & ND6_IFF_IFDISABLED) != 0) + return ISC_TRUE; +#endif /* !SIOCGIFAFLAG_IN6 || !IN6_IFF_ANYCAST */ + return ISC_FALSE; +} #endif /* !INCLUDE_IPV6_SUPPORT */ /* @@ -1335,6 +1358,16 @@ update_interfaces( continue; } +#ifdef INCLUDE_IPV6_SUPPORT + if (interface.sin.ss_family == AF_INET6 && + is_ifdisabled(interface.name)) { + DPRINTF(4, + ("skipping interface %s (%s) - IFDISABLED\n", + interface.name, stoa(&interface.sin))); + continue; + } +#endif /* !INCLUDE_IPV6_SUPPORT */ + /* * skip any interfaces UP and bound to a wildcard * address - some dhcp clients produce that in the -- Hajimu UMEMOTO ume@mahoroba.org ume@{,jp.}FreeBSD.org http://www.mahoroba.org/~ume/ --Multipart_Sat_Mar_16_17:58:59_2013-1--