summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--UPDATING51
-rw-r--r--etc/network.subr70
-rwxr-xr-xetc/rc.d/ip6addrctl2
-rwxr-xr-xetc/rc.d/netif2
-rw-r--r--sbin/ifconfig/ifconfig.812
-rw-r--r--share/man/man5/rc.conf.587
6 files changed, 193 insertions, 31 deletions
diff --git a/UPDATING b/UPDATING
index e7b2fd4..16a9185 100644
--- a/UPDATING
+++ b/UPDATING
@@ -22,10 +22,61 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 9.x IS SLOW:
machines to maximize performance. (To disable malloc debugging, run
ln -s aj /etc/malloc.conf.)
+20090926:
+ The rc.d/network_ipv6, IPv6 configuration script has been integrated
+ into rc.d/netif. The changes are the following:
+
+ 1. To use IPv6, simply define $ifconfig_IF_ipv6 like $ifconfig_IF
+ for IPv4. For aliases, $ifconfig_IF_aliasN should be used.
+ Note that both variables need the "inet6" keyword at the head.
+
+ Do not set $ipv6_network_interfaces manually if you do not
+ understand what you are doing. It is not needed in most cases.
+
+ $ipv6_ifconfig_IF and $ipv6_ifconfig_IF_aliasN still work, but
+ they are obsolete.
+
+ 2. $ipv6_enable is obsolete. Use $ipv6_prefer and
+ "inet6 accept_rtadv" keyword in ifconfig(8) instead.
+
+ If you define $ipv6_enable=YES, it means $ipv6_prefer=YES and
+ all configured interfaces have "inet6 accept_rtadv" in the
+ $ifconfig_IF_ipv6. These are for backward compatibility.
+
+ 3. A new variable $ipv6_prefer has been added. If NO, IPv6
+ functionality of interfaces with no corresponding
+ $ifconfig_IF_ipv6 is disabled by using "inet6 ifdisabled" flag,
+ and the default address selection policy of ip6addrctl(8)
+ is the IPv4-preferred one (see rc.d/ip6addrctl for more details).
+ Note that if you want to configure IPv6 functionality on the
+ disabled interfaces after boot, first you need to clear the flag by
+ using ifconfig(8) like:
+
+ ifconfig em0 inet6 -ifdisabled
+
+ If YES, the default address selection policy is set as
+ IPv6-preferred.
+
+ The default value of $ipv6_prefer is NO.
+
+ 4. If your system need to receive Router Advertisement messages,
+ define "inet6 accept_rtadv" in $ifconfig_IF_ipv6. The rc(8)
+ scripts automatically invoke rtsol(8) when the interface becomes
+ UP. The Router Advertisement messages are used for SLAAC
+ (State-Less Address AutoConfiguration).
+
20090922:
802.11s D3.03 support was committed. This is incompatible with the
previous code, which was based on D3.0.
+20090912:
+ A sysctl variable net.inet6.ip6.accept_rtadv now sets the default value
+ of a per-interface flag ND6_IFF_ACCEPT_RTADV, not a global knob to
+ control whether accepting Router Advertisement messages or not.
+ Also, a per-interface flag ND6_IFF_AUTO_LINKLOCAL has been added and
+ a sysctl variable net.inet6.ip6.auto_linklocal is its default value.
+ The ifconfig(8) utility now supports these flags.
+
20090910:
ZFS snapshots are now mounted with MNT_IGNORE flag. Use -v option for
mount(8) and -a option for df(1) to see them.
diff --git a/etc/network.subr b/etc/network.subr
index f9c10e8..83141ec 100644
--- a/etc/network.subr
+++ b/etc/network.subr
@@ -97,15 +97,26 @@ ifconfig_up()
if afexists inet6; then
if ipv6if $1; then
if checkyesno ipv6_gateway_enable; then
- _ipv6_opts="-accept_rtadv auto_linklocal"
- else
- _ipv6_opts="auto_linklocal"
+ _ipv6_opts="-accept_rtadv"
fi
else
- _ipv6_opts="-auto_linklocal ifdisabled"
+ if checkyesno ipv6_prefer; then
+ _ipv6_opts="-ifdisabled"
+ else
+ _ipv6_opts="ifdisabled"
+ fi
+
+ # backward compatibility: $ipv6_enable
+ case $ipv6_enable in
+ [Yy][Ee][Ss])
+ _ipv6_opts="${_ipv6_opts} accept_rtadv"
+ ;;
+ esac
fi
- ifconfig $1 inet6 ${_ipv6_opts}
+ if [ -n "${_ipv6_opts}" ]; then
+ ifconfig $1 inet6 ${_ipv6_opts}
+ fi
# ifconfig_IF_ipv6
ifconfig_args=`ifconfig_getargs $1 ipv6`
@@ -382,7 +393,7 @@ noafif()
# 1 otherwise.
ipv6if()
{
- local _if i
+ local _if _tmpargs i
_if=$1
if ! afexists inet6; then
@@ -396,6 +407,18 @@ ipv6if()
;;
esac
+ # True if $ifconfig_IF_ipv6 is defined.
+ _tmpargs=`_ifconfig_getargs $_if ipv6`
+ if [ -n "${_tmpargs}" ]; then
+ return 0
+ fi
+
+ # backward compatibility: True if $ipv6_ifconfig_IF is defined.
+ _tmpargs=`get_if_var $_if ipv6_ifconfig_IF`
+ if [ -n "${_tmpargs}" ]; then
+ return 0
+ fi
+
case "${ipv6_network_interfaces}" in
[Aa][Uu][Tt][Oo])
return 0
@@ -431,17 +454,30 @@ ipv6_autoconfif()
if checkyesno ipv6_gateway_enable; then
return 1
fi
+ _tmpargs=`get_if_var $_if ipv6_prefix_IF`
+ if [ -n "${_tmpargs}" ]; then
+ return 1
+ fi
case $_if in
lo0|\
stf[0-9]*|\
faith[0-9]*|\
lp[0-9]*|\
- sl[0-9]*)
+ sl[0-9]*|\
+ pflog[0-9]*|\
+ pfsync[0-9]*)
return 1
;;
esac
+ # backward compatibility: $ipv6_enable
+ case $ipv6_enable in
+ [Yy][Ee][Ss])
+ return 0
+ ;;
+ esac
+
_tmpargs=`_ifconfig_getargs $_if ipv6`
for _arg in $_tmpargs; do
case $_arg in
@@ -451,6 +487,16 @@ ipv6_autoconfif()
esac
done
+ # backward compatibility: $ipv6_ifconfig_IF
+ _tmpargs=`get_if_var $_if ipv6_ifconfig_IF`
+ for _arg in $_tmpargs; do
+ case $_arg in
+ accept_rtadv)
+ return 0
+ ;;
+ esac
+ done
+
return 1
}
@@ -691,7 +737,7 @@ ifalias_ipv6_up()
;;
*)
ifconfig $1 inet6 ${ifconfig_args} alias && _ret=0
- warn "\$ipv6_ifconfig_$1_alias${alias} is obsolete."
+ warn "\$ipv6_ifconfig_$1_alias${alias} is obsolete." \
" Use ifconfig_$1_aliasN instead."
;;
esac
@@ -773,6 +819,7 @@ ifalias_ipv6_down()
done
# backward compatibility: ipv6_ifconfig_IF_aliasN.
+ alias=0
while : ; do
ifconfig_args=`get_if_var $1 ipv6_ifconfig_IF_alias${alias}`
case "${ifconfig_args}" in
@@ -780,13 +827,12 @@ ifalias_ipv6_down()
break
;;
*)
- ifconfig $1 inet6 ${ifconfig_args} -alias
- alias=$((${alias} + 1))
- warn "\$ipv6_ifconfig_$1_alias${alias} is obsolete."
+ ifconfig $1 inet6 ${ifconfig_args} -alias && _ret=0
+ warn "\$ipv6_ifconfig_$1_alias${alias} is obsolete." \
" Use ifconfig_$1_aliasN instead."
- _ret=0
;;
esac
+ alias=$((${alias} + 1))
done
return $_ret
diff --git a/etc/rc.d/ip6addrctl b/etc/rc.d/ip6addrctl
index 518ac25..66f1952 100755
--- a/etc/rc.d/ip6addrctl
+++ b/etc/rc.d/ip6addrctl
@@ -19,6 +19,8 @@ status_cmd="ip6addrctl"
prefer_ipv6_cmd="ip6addrctl_prefer_ipv6"
prefer_ipv4_cmd="ip6addrctl_prefer_ipv4"
+set_rcvar_obsolete ipv6_enable ipv6_prefer
+
ip6addrctl_prefer_ipv6()
{
ip6addrctl flush >/dev/null 2>&1
diff --git a/etc/rc.d/netif b/etc/rc.d/netif
index ac2cc58..3c8e5dc 100755
--- a/etc/rc.d/netif
+++ b/etc/rc.d/netif
@@ -41,7 +41,7 @@ clonedown_cmd="clone_down"
extra_commands="cloneup clonedown"
cmdifn=
-set_rcvar_obsolete ipv6_enable
+set_rcvar_obsolete ipv6_enable ipv6_prefer
network_start()
{
diff --git a/sbin/ifconfig/ifconfig.8 b/sbin/ifconfig/ifconfig.8
index de241e7..220bd9f 100644
--- a/sbin/ifconfig/ifconfig.8
+++ b/sbin/ifconfig/ifconfig.8
@@ -28,7 +28,7 @@
.\" From: @(#)ifconfig.8 8.3 (Berkeley) 1/5/94
.\" $FreeBSD$
.\"
-.Dd September 2, 2009
+.Dd September 23, 2009
.Dt IFCONFIG 8
.Os
.Sh NAME
@@ -598,7 +598,10 @@ If the interface was reset when previously marked down,
the hardware will be re-initialized.
.El
.Pp
-The following parameters are for ICMPv6 Neightbor Discovery Protocol:
+The following parameters are for ICMPv6 Neightbor Discovery Protocol.
+Note that the address family keyword
+.Dq Li inet6
+is needed for them:
.Bl -tag -width indent
.It Cm accept_rtadv
Set a flag to enable accepting ICMPv6 Router Advertisement messages.
@@ -619,7 +622,10 @@ Clear a flag
.Cm defaultif .
.It Cm ifdisabled
Set a flag to disable all of IPv6 network communications on the
-specified interface.
+specified interface. Note that if there are already configured IPv6
+addresses on that interface, all of them are marked as
+.Dq tentative
+and DAD will be performed when this flag is cleared.
.It Cm -ifdisabled
Clear a flag
.Cm ifdisabled .
diff --git a/share/man/man5/rc.conf.5 b/share/man/man5/rc.conf.5
index 4a491f7..bacd362 100644
--- a/share/man/man5/rc.conf.5
+++ b/share/man/man5/rc.conf.5
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd September 17, 2009
+.Dd September 23, 2009
.Dt RC.CONF 5
.Os
.Sh NAME
@@ -1246,28 +1246,85 @@ It is also possible to rename interface by doing:
ifconfig_ed0_name="net0"
ifconfig_net0="inet 192.0.2.1 netmask 0xffffff00"
.Ed
+.It Va ipv6_enable
+.Pq Vt bool
+If the variable is
+.Dq Li YES ,
+.Dq Li inet6 accept_rtadv
+is added to all of
+.Va ifconfig_ Ns Ao Ar interface Ac Ns _ipv6
+and the
+.Va ipv6_prefer
+is defined as
+.Dq Li YES .
+.Pp
+This variable is deprecated. Use
+.Va ipv6_prefer
+and
+.Va ifconfig_ Ns Ao Ar interface Ac Ns _ipv6 .
+.It Va ipv6_prefer
+.Pq Vt bool
+This variable does the following:
+.Pp
+If the variable is
+.Dq Li YES ,
+the default policy of the source address selection set by
+.Xr ip6addrctl 8
+will be IPv6-preferred.
+.Pp
+If the variable is
+.Dq Li NO ,
+the default policy of the source address selection set by
+.Xr ip6addrctl 8
+will be IPv4-preferred, and all of interfaces which does not have the
+corrsponding
+.Va ifconfig_ Ns Ao Ar interface Ac Ns _ipv6
+variable will be marked as
+.Dq Li IFDISABLED .
+This means only IPv6 functionality on that interface is completely
+disabled. For more details of
+.Dq Li IFDISABLED
+flag and keywords
+.Dq Li inet6 ifdisabled ,
+see
+.Xr ifconfig 8 .
+.Pp
.It Va ipv6_network_interfaces
.Pq Vt str
This is the IPv6 equivalent of
.Va network_interfaces .
-Instead of setting the ifconfig variables as
-.Va ifconfig_ Ns Aq Ar interface
-they should be set as
-.Va ifconfig_ Ns Ao Ar interface Ac Ns _ipv6.
-Aliases should be set as
-.Va ifconfig_ Ns Ao Ar interface Ac Ns Va _alias Ns Aq Ar n .
-.Va ipv6_prefix_ Ns Aq Ar interface
-does something.
-Interfaces that have a
-.Fl accept_rtadv
-flag in
+Normally manual configuration of this variable is not needed.
+.Pp
+IPv6 functionality on an interface should be configured by
+.Va ifconfig_ Ns Ao Ar interface Ac Ns _ipv6 ,
+instead of setting ifconfig parameters in
+.Va ifconfig_ Ns Aq Ar interface .
+Aliases should be set by
+.Va ifconfig_ Ns Ao Ar interface Ac Ns Va _alias Ns Aq Ar n
+with
+.Dq Li inet6
+keyword. For example:
+.Bd -literal
+ifconfig_ed0_ipv6="inet6 2001:db8:1::1 prefixlen 64"
+ifconfig_ed0_alias0="inet6 2001:db8:2::1 prefixlen 64"
+.Ed
+.Pp
+Interfaces that have an
+.Dq Li inet6 accept_rtadv
+keyword in
.Va ifconfig_ Ns Ao Ar interface Ac Ns _ipv6
setting will be automatically configured by
-.Xr rtsol 8
-if the
+.Xr rtsol 8 .
+Note that this automatic configuration is disabled if the
.Va ipv6_gateway_enable
is set to
-.Dq Li NO .
+.Dq Li YES .
+.It Va ipv6_prefix_ Ns Aq Ar interface
+.Pq Vt str
+If one or more prefixes are defined in
+.Va ipv6_prefix_ Ns Aq Ar interface
+addresses based on each prefix and the EUI-64 interface index will be
+configured on that interface.
.It Va ipv6_default_interface
.Pq Vt str
If not set to
OpenPOWER on IntegriCloud