diff options
author | brooks <brooks@FreeBSD.org> | 2006-09-21 01:44:52 +0000 |
---|---|---|
committer | brooks <brooks@FreeBSD.org> | 2006-09-21 01:44:52 +0000 |
commit | aa92e52181cdd3681561226d5f939a769107a700 (patch) | |
tree | e6c24f6b0461195db15c79c0c87893254451b78e | |
parent | 429d5f787f289dbf16442e16af06cff40348f721 (diff) | |
download | FreeBSD-src-aa92e52181cdd3681561226d5f939a769107a700.zip FreeBSD-src-aa92e52181cdd3681561226d5f939a769107a700.tar.gz |
Introduce a new method ipv6if which attemptes to figure out if an
interface is an IPv6 interface.
Use this method to decide if we should attempt to configure an interface
with an IPv6 address in pccard_ether. The mechanism pccard_ether uses
to do this is unsuited to the task because it assumes the list of
interfaces it is passed is the full list of IPv6 interfaces and makes
decissions based on that. This is at least a step in the right
direction and is probably about as much as we can MFC safely.
PR: conf/103428
MFC after: 3 days
-rw-r--r-- | etc/network.subr | 24 | ||||
-rwxr-xr-x | etc/pccard_ether | 6 |
2 files changed, 29 insertions, 1 deletions
diff --git a/etc/network.subr b/etc/network.subr index cb00fbd1..de2aaf4 100644 --- a/etc/network.subr +++ b/etc/network.subr @@ -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 1 + 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() diff --git a/etc/pccard_ether b/etc/pccard_ether index d8128da..4bf9b52 100755 --- a/etc/pccard_ether +++ b/etc/pccard_ether @@ -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 } |