conf/103428: devd(8): devd brings up network interfaces early
and wrong
Brooks Davis
brooks at one-eyed-alien.net
Wed Sep 20 15:20:33 PDT 2006
The following reply was made to PR conf/103428; it has been noted by GNATS.
From: Brooks Davis <brooks at one-eyed-alien.net>
To: Rob Austein <sra at hactrn.net>
Cc: Brooks Davis <brooks at one-eyed-alien.net>, freebsd-gnats-submit at freebsd.org
Subject: Re: conf/103428: devd(8): devd brings up network interfaces early and wrong
Date: Wed, 20 Sep 2006 17:10:07 -0500
On Wed, Sep 20, 2006 at 05:23:31PM -0400, Rob Austein wrote:
> At this point I suspect that the problem is that pccard_ether is
> attempting to bring up IPv6 on interface hardware that's not connected
> to anything, which is confusing /etc/network.subr into listening for
> router advertisements when it should not. I added a debug line to
> network.subr to make network6_interface_setup log the interface it's
> about to whack, enabled rc_debug, and got the console output below.
> It's not touching bge0 or lo0, but it's trying to bring up IPv6 on
> bge1 and plip0, neither of which is connected to anything.
I see the problem, but solution is doesn't look like it's going to be
easy, particularly for something we can MFC. The following coupled with
manually setting ipv6_network_interfaces might be a decent option for
now. Eventually I think we'll want to adjust the way this stuff works a
fair bit, but there's a limit to how much we can change in stable since
we definitely don't want to break existing setups.
-- Brooks
Index: network.subr
===================================================================
RCS file: /home/ncvs/src/etc/network.subr,v
retrieving revision 1.172
diff -u -p -r1.172 network.subr
--- network.subr 17 Aug 2006 03:03:38 -0000 1.172
+++ network.subr 20 Sep 2006 22:06:53 -0000
@@ -237,6 +237,30 @@ wpaif()
return 1
}
+# ipv6if if
+# Returns 0 if the interface should be configured for IPv6 and
+# 1 otherwise.
+ipv6if()
+{
+ if ! checkyesno ipv6_enable; then
+ return 0
+ fi
+ case "${ipv6_network_interfaces}" in
+ [Aa][Uu][Tt][Oo])
+ return 0
+ ;;
+ ''|[Nn][Oo][Nn][Ee])
+ return 1
+ ;;
+ esac
+ for v6if in ${ipv6_network_interfaces}; do
+ if [ "${v6if}" = "${1}" ]; then
+ return 0
+ fi
+ done
+ return 1
+}
+
# ifexists if
# Returns 0 if the interface exists and 1 otherwise.
ifexists()
Index: pccard_ether
===================================================================
RCS file: /home/ncvs/src/etc/pccard_ether,v
retrieving revision 1.52
diff -u -p -r1.52 pccard_ether
--- pccard_ether 20 Sep 2006 19:48:31 -0000 1.52
+++ pccard_ether 20 Sep 2006 22:06:53 -0000
@@ -89,7 +89,11 @@ pccard_ether_start()
fi
# IPv6 setup
- if checkyesno ipv6_enable; then
+ if ipv6if $ifn; then
+ # XXX: network6_interface_setup assumes you're calling
+ # it with ALL the IPv6 interfaces at once and thus isn't
+ # really appropraite for this job, but it's the best we've
+ # got for now.
network6_interface_setup $ifn
fi
}
More information about the freebsd-bugs
mailing list