Re: in6_unlink_ifa: interface address has no prefix
On Wed, Jun 12, 2013 at 12:19:30PM +0100, Stuart Henderson wrote: > 3. the reason for in6_unlink_ifa being called at all is because > in6_ifattach_loopback automatically tries to add in6addr_loopback to a > newly created lo interface, which is the wrong thing to do in the case > of multiple lo(4) interfaces. > > In the v4 case, 127.0.0.1 is set on the interface explicitly by /etc/netstart; > v6 should probably do the same. I don't think so. Many things that are handled by userland in IPv4 are done by the kernel in IPv6. These are autoconfiguration, and link-local addresses, and the ::1 address. Like it or not, this is part of the idea. There are just bugs and unimplemented cases in our stack. Look at these comments in netinet6/in6_ifattach.c . * XXX multiple loopback interface needs more care. for instance, * nodelocal address needs to be configured onto only one of them. * XXX multiple link-local address case * assign loopback address for loopback interface. * XXX multiple loopback interface case. bluhm
Re: in6_unlink_ifa: interface address has no prefix
On 12/06/13(Wed) 12:19, Stuart Henderson wrote: > On 2013/06/12 12:51, Martin Pieuchot wrote: > > On 10/06/13(Mon) 02:05, Alexander Bluhm wrote: > > > On Sun, Jun 09, 2013 at 06:34:27PM +0200, Christopher Zimmermann wrote: > > > > inet 172.26.153.50 0xff00 NONE mtu 1398 > > > > > > > > in6_unlink_ifa: interface address 0x80624a00 has no prefix > > > > in6_unlink_ifa: interface address 0x80624a00 has no prefix > > > > > > The error message is triggered by ifconfig lo1 create up. With > > > address instead of pointer logging and sysctl net.inet6.icmp6.nd6_debug=1 > > > you see the source of the problem. > > > > > > in6_unlink_ifa: interface address ::0001 has no prefix > > > in6_ifattach_loopback: failed to configure the loopback address on lo1 > > > (errno=17) > > > > > > It is a different issue that creating lo1 tries to add a ::1 address. > > > But when this fails, it is correct that it has no prefix. So don't > > > log an error here. > > Diff is OK sthen. > > > I'm not sure to understand here, you're saying that is it correct that > > lo1 has no prefix because it is a loopback interface or because, in > > this case adding an IPv6 address failed? > > > > Martin > > > > Both.. > > 1. it is correct that it has no prefix because it's a loopback address, and Thanks for the explanation, I'm ok with the diff then. > 2. in6_unlink_ifa is called on the loopback address, which then complains > about the adress. > > but also: > > 3. the reason for in6_unlink_ifa being called at all is because > in6_ifattach_loopback automatically tries to add in6addr_loopback to a > newly created lo interface, which is the wrong thing to do in the case > of multiple lo(4) interfaces. > > In the v4 case, 127.0.0.1 is set on the interface explicitly by /etc/netstart; > v6 should probably do the same. > >
Re: in6_unlink_ifa: interface address has no prefix
On 2013/06/12 12:51, Martin Pieuchot wrote: > On 10/06/13(Mon) 02:05, Alexander Bluhm wrote: > > On Sun, Jun 09, 2013 at 06:34:27PM +0200, Christopher Zimmermann wrote: > > > inet 172.26.153.50 0xff00 NONE mtu 1398 > > > > > > in6_unlink_ifa: interface address 0x80624a00 has no prefix > > > in6_unlink_ifa: interface address 0x80624a00 has no prefix > > > > The error message is triggered by ifconfig lo1 create up. With > > address instead of pointer logging and sysctl net.inet6.icmp6.nd6_debug=1 > > you see the source of the problem. > > > > in6_unlink_ifa: interface address ::0001 has no prefix > > in6_ifattach_loopback: failed to configure the loopback address on lo1 > > (errno=17) > > > > It is a different issue that creating lo1 tries to add a ::1 address. > > But when this fails, it is correct that it has no prefix. So don't > > log an error here. Diff is OK sthen. > I'm not sure to understand here, you're saying that is it correct that > lo1 has no prefix because it is a loopback interface or because, in > this case adding an IPv6 address failed? > > Martin > Both.. 1. it is correct that it has no prefix because it's a loopback address, and 2. in6_unlink_ifa is called on the loopback address, which then complains about the adress. but also: 3. the reason for in6_unlink_ifa being called at all is because in6_ifattach_loopback automatically tries to add in6addr_loopback to a newly created lo interface, which is the wrong thing to do in the case of multiple lo(4) interfaces. In the v4 case, 127.0.0.1 is set on the interface explicitly by /etc/netstart; v6 should probably do the same.
Re: in6_unlink_ifa: interface address has no prefix
On 10/06/13(Mon) 02:05, Alexander Bluhm wrote: > On Sun, Jun 09, 2013 at 06:34:27PM +0200, Christopher Zimmermann wrote: > > inet 172.26.153.50 0xff00 NONE mtu 1398 > > > > in6_unlink_ifa: interface address 0x80624a00 has no prefix > > in6_unlink_ifa: interface address 0x80624a00 has no prefix > > The error message is triggered by ifconfig lo1 create up. With > address instead of pointer logging and sysctl net.inet6.icmp6.nd6_debug=1 > you see the source of the problem. > > in6_unlink_ifa: interface address ::0001 has no prefix > in6_ifattach_loopback: failed to configure the loopback address on lo1 > (errno=17) > > It is a different issue that creating lo1 tries to add a ::1 address. > But when this fails, it is correct that it has no prefix. So don't > log an error here. I'm not sure to understand here, you're saying that is it correct that lo1 has no prefix because it is a loopback interface or because, in this case adding an IPv6 address failed? Martin
Re: in6_unlink_ifa: interface address has no prefix
On Sun, Jun 09, 2013 at 06:34:27PM +0200, Christopher Zimmermann wrote: > inet 172.26.153.50 0xff00 NONE mtu 1398 > > in6_unlink_ifa: interface address 0x80624a00 has no prefix > in6_unlink_ifa: interface address 0x80624a00 has no prefix The error message is triggered by ifconfig lo1 create up. With address instead of pointer logging and sysctl net.inet6.icmp6.nd6_debug=1 you see the source of the problem. in6_unlink_ifa: interface address ::0001 has no prefix in6_ifattach_loopback: failed to configure the loopback address on lo1 (errno=17) It is a different issue that creating lo1 tries to add a ::1 address. But when this fails, it is correct that it has no prefix. So don't log an error here. ok? bluhm Index: netinet6/in6.c === RCS file: /data/mirror/openbsd/cvs/src/sys/netinet6/in6.c,v retrieving revision 1.112 diff -u -p -r1.112 in6.c --- netinet6/in6.c 31 May 2013 15:04:23 - 1.112 +++ netinet6/in6.c 9 Jun 2013 23:48:08 - @@ -1238,9 +1238,10 @@ in6_unlink_ifa(struct in6_ifaddr *ia, st /* Release the reference to the base prefix. */ if (ia->ia6_ndpr == NULL) { - if (!IN6_IS_ADDR_LINKLOCAL(IA6_IN6(ia))) + if (!IN6_IS_ADDR_LINKLOCAL(IA6_IN6(ia)) && + !IN6_IS_ADDR_LOOPBACK(IA6_IN6(ia))) log(LOG_NOTICE, "in6_unlink_ifa: interface address " - "%p has no prefix\n", ia); + "%s has no prefix\n", ip6_sprintf(IA6_IN6(ia))); } else { ia->ia6_flags &= ~IN6_IFF_AUTOCONF; if (--ia->ia6_ndpr->ndpr_refcnt == 0)