Author: ume
Date: Mon Apr 26 15:31:58 2010
New Revision: 207225
URL: http://svn.freebsd.org/changeset/base/207225

Log:
  Better handling of ipv6_default_interface using
  net.inet6.ip6.use_defaultzone=1.  Now, it works IPv6 link-local
  unicast addresses as well as IPv6 link-local multicast addresses.
  
  MFC after:    1 week

Modified:
  head/etc/defaults/rc.conf
  head/etc/rc.d/routing
  head/share/man/man5/rc.conf.5

Modified: head/etc/defaults/rc.conf
==============================================================================
--- head/etc/defaults/rc.conf   Mon Apr 26 15:01:14 2010        (r207224)
+++ head/etc/defaults/rc.conf   Mon Apr 26 15:31:58 2010        (r207225)
@@ -470,8 +470,8 @@ route6d_flags=""            # Flags to IPv6 routin
 #ipv6_prefix_ed0="fec0:0000:0000:0001 fec0:0000:0000:0002"  # Examples for rtr.
 #ipv6_prefix_ep0="fec0:0000:0000:0003 fec0:0000:0000:0004"  # Examples for rtr.
 ipv6_default_interface="NO"    # Default output interface for scoped addrs.
-                               # Now this works only for IPv6 link local
-                               # multicast addrs.
+                               # This works only with
+                               # ipv6_gateway_enable="NO".
 rtsol_flags=""                 # Flags to IPv6 router solicitation.
 rtsold_enable="NO"             # Set to YES to enable an IPv6 router
                                # solicitation daemon.

Modified: head/etc/rc.d/routing
==============================================================================
--- head/etc/rc.d/routing       Mon Apr 26 15:01:14 2010        (r207224)
+++ head/etc/rc.d/routing       Mon Apr 26 15:31:58 2010        (r207225)
@@ -210,34 +210,24 @@ static_inet6()
                ;;
        esac
 
-       # Disallow unicast packets without outgoing scope identifiers,
-       # or route such packets to a "default" interface, if it is specified.
+       # Disallow link-local unicast packets without outgoing scope
+       # identifiers.  However, if you set "ipv6_default_interface",
+       # for the host case, you will allow to omit the identifiers.
+       # Under this configuration, the packets will go to the default
+       # interface.
        route ${_action} -inet6 fe80:: -prefixlen 10 ::1 -reject
+       route ${_action} -inet6 ff02:: -prefixlen 16 ::1 -reject
 
        case ${ipv6_default_interface} in
        '')
-               route ${_action} -inet6 ff02:: -prefixlen 16 ::1 -reject
                ;;
        *)
-               laddr=`network6_getladdr ${ipv6_default_interface}`
-               route ${_action} -inet6 ff02:: ${laddr} -prefixlen 16 -interface
-
-               # Disable installing the default interface with the
-               # case net.inet6.ip6.forwarding=0 and
-               # the interface with no ND6_IFF_ACCEPT_RTADV
-               # to avoid conflict between the default router list and
-               # the manual configured default route.
+               # Disable installing the default interface when we act
+               # as router to avoid conflict between the default
+               # router list and the manual configured default route.
                if ! checkyesno ipv6_gateway_enable; then
-                       ifconfig ${ipv6_default_interface} nd6 | \
-                       while read proto options
-                       do
-                               case "${proto}:${options}" in
-                               nd6:*ACCEPT_RTADV*)
-                                       ifconfig ${ipv6_default_interface} 
inet6 defaultif
-                                       break
-                               ;;
-                               esac
-                       done
+                       ifconfig ${ipv6_default_interface} inet6 defaultif
+                       sysctl net.inet6.ip6.use_defaultzone=1
                fi
                ;;
        esac

Modified: head/share/man/man5/rc.conf.5
==============================================================================
--- head/share/man/man5/rc.conf.5       Mon Apr 26 15:01:14 2010        
(r207224)
+++ head/share/man/man5/rc.conf.5       Mon Apr 26 15:31:58 2010        
(r207225)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd April 14, 2010
+.Dd April 27, 2010
 .Dt RC.CONF 5
 .Os
 .Sh NAME
@@ -1370,7 +1370,7 @@ configured on that interface.
 If not set to
 .Dq Li NO ,
 this is the default output interface for scoped addresses.
-Now this works only for IPv6 link local multicast addresses.
+This works only with ipv6_gateway_enable="NO".
 .It Va ip6addrctl_enable
 .Pq Vt bool
 If set to
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to