Author: hrs
Date: Sat Dec  3 22:16:36 2011
New Revision: 228247
URL: http://svn.freebsd.org/changeset/base/228247

Log:
  MFC r226649, 226651, 226652, 226653:
  - Fix an issue that 127/8 is not configured when $ifconfig_DEFAULT is not 
empty.
  - Add description that IPv6 configuration will be ignored if $ifconfig_IF_ipv6
    is empty.
  - Move a configuration example "inet6 accept_rtadv" to just after the manual
    GUA configuration.
  - Add an example of $ipv6_prefix_IF.
  - Add support for removing addresses added by ipv6_prefix_hostid_addr_up()
    upon rc.d/netif stop.
  
  Approved by:  re (bz)

Modified:
  releng/9.0/etc/network.subr
  releng/9.0/share/man/man5/rc.conf.5
Directory Properties:
  releng/9.0/etc/   (props changed)
  releng/9.0/share/man/man5/   (props changed)

Modified: releng/9.0/etc/network.subr
==============================================================================
--- releng/9.0/etc/network.subr Sat Dec  3 22:15:42 2011        (r228246)
+++ releng/9.0/etc/network.subr Sat Dec  3 22:16:36 2011        (r228247)
@@ -532,7 +532,7 @@ ipv4_up()
 
        # Add 127.0.0.1/8 to lo0 unless otherwise specified.
        if [ "${_if}" = "lo0" ]; then
-               ifconfig_args=`ifconfig_getargs ${_if}`
+               ifconfig_args=`get_if_var ${_if} ifconfig_IF`
                if [ -z "${ifconfig_args}" ]; then
                        ifconfig ${_if} inet 127.0.0.1/8 alias
                fi
@@ -556,7 +556,7 @@ ipv6_up()
        fi
 
        ifalias_up ${_if} inet6 && _ret=0
-       ipv6_prefix_hostid_addr_up ${_if} && _ret=0
+       ipv6_prefix_hostid_addr_common ${_if} alias && _ret=0
        ipv6_accept_rtadv_up ${_if} && _ret=0
 
        # wait for DAD
@@ -612,6 +612,7 @@ ipv6_down()
        fi
 
        ipv6_accept_rtadv_down ${_if} && _ret=0
+       ipv6_prefix_hostid_addr_common ${_if} -alias && _ret=0
        ifalias_down ${_if} inet6 && _ret=0
 
        inetList="`ifconfig ${_if} | grep 'inet6 ' | tr "\n" "$_ifs"`"
@@ -859,12 +860,14 @@ ifalias_ipv6_down()
        return $_ret
 }
 
-# ipv6_prefix_hostid_addr_up if
-#      add IPv6 prefix + hostid addr to the interface $if
-ipv6_prefix_hostid_addr_up()
+# ipv6_prefix_hostid_addr_common if action
+#      Add or remove IPv6 prefix + hostid addr on the interface $if
+#
+ipv6_prefix_hostid_addr_common()
 {
-       local _if prefix laddr hostid j address
+       local _if _action prefix laddr hostid j address
        _if=$1
+       _action=$2
        prefix=`get_if_var ${_if} ipv6_prefix_IF`
 
        if [ -n "${prefix}" ]; then
@@ -874,13 +877,13 @@ ipv6_prefix_hostid_addr_up()
 
                for j in ${prefix}; do
                        address=$j\:${hostid}
-                       ifconfig ${_if} inet6 ${address} prefixlen 64 alias
+                       ifconfig ${_if} inet6 ${address} prefixlen 64 ${_action}
 
                        # if I am a router, add subnet router
                        # anycast address (RFC 2373).
                        if checkyesno ipv6_gateway_enable; then
                                ifconfig ${_if} inet6 $j:: prefixlen 64 \
-                                       alias anycast
+                                       ${_action} anycast
                        fi
                done
        fi

Modified: releng/9.0/share/man/man5/rc.conf.5
==============================================================================
--- releng/9.0/share/man/man5/rc.conf.5 Sat Dec  3 22:15:42 2011        
(r228246)
+++ releng/9.0/share/man/man5/rc.conf.5 Sat Dec  3 22:16:36 2011        
(r228247)
@@ -1423,6 +1423,11 @@ IPv6 functionality on an interface shoul
 .Va ifconfig_ Ns Ao Ar interface Ac Ns _ipv6 ,
 instead of setting ifconfig parameters in
 .Va ifconfig_ Ns Aq Ar interface .
+If this variable is empty, all of IPv6 configurations on the
+specified interface by other variables such as
+.Va ipv6_prefix_ Ns Ao Ar interface Ac
+will be ignored.
+.Pp
 Aliases should be set by
 .Va ifconfig_ Ns Ao Ar interface Ac Ns Va _alias Ns Aq Ar n
 with
@@ -1433,6 +1438,17 @@ ifconfig_ed0_ipv6="inet6 2001:db8:1::1 p
 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 SLAAC
+.Pq StateLess Address AutoConfiguration
+described in
+.Rs
+.%T "RFC 4862"
+.Re
+.Pp
 Note that a link-local address will be automatically configured in
 addition to the configured global-scope addresses because the IPv6
 specifications require it on each link.
@@ -1457,19 +1473,32 @@ For example:
 .Bd -literal
 ifconfig_ed0_ipv6="inet6 fe80::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 .
 .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.
+Note that this variable will be ignored when
+.Va ifconfig_ Ns Ao Ar interface Ac Ns _ipv6
+is empty.
+.Pp
+For example, the following configuration
+.Bd -literal
+ipv6_prefix_ed0="2001:db8:1:0 2001:db8:2:0"
+.Ed
+.Pp
+is equivalent to the following:
+.Bd -literal
+ifconfig_ed0_alias0="inet6 2001:db8:1:: eui64 prefixlen 64"
+ifconfig_ed0_alias1="inet6 2001:db8:1:: prefixlen 64 anycast"
+ifconfig_ed0_alias2="inet6 2001:db8:2:: eui64 prefixlen 64"
+ifconfig_ed0_alias3="inet6 2001:db8:2:: prefixlen 64 anycast"
+.Ed
+.Pp
+These Subnet-Router anycast addresses will be added only when
+.Va ipv6_gateway_enable
+is YES.
 .It Va ipv6_default_interface
 .Pq Vt str
 If not set to
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to