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
This commit is contained in:
Hajimu UMEMOTO 2010-04-26 15:31:58 +00:00
parent 7d11e744c1
commit b13cc627c7
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=207225
3 changed files with 15 additions and 25 deletions

View file

@ -470,8 +470,8 @@ route6d_flags="" # Flags to IPv6 routing daemon.
#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.

View file

@ -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

View file

@ -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