diff --git a/etc/defaults/rc.conf b/etc/defaults/rc.conf index 24a03fd5cc8d..1cd4904f1b94 100644 --- a/etc/defaults/rc.conf +++ b/etc/defaults/rc.conf @@ -450,6 +450,10 @@ ipv6_default_interface="NO" # Default output interface for scoped addrs. # Now this works only for IPv6 link local # multicast addrs. rtsol_flags="" # Flags to IPv6 router solicitation. +rtsold_enable="NO" # Set to YES to enable an IPv6 router + # solicitation daemon. +rtsold_flags="-a" # Flags to an IPv6 router solicitation + # daemon. rtadvd_enable="NO" # Set to YES to enable an IPv6 router # advertisement daemon. If set to YES, # this router becomes a possible candidate diff --git a/etc/network.subr b/etc/network.subr index 497cc5b75206..c36ddbadcb4f 100644 --- a/etc/network.subr +++ b/etc/network.subr @@ -985,7 +985,9 @@ network6_interface_setup() sysctl net.inet6.ip6.accept_rtadv=1 set ${rtsol_interfaces} ifconfig $1 up - rtsol ${rtsol_flags} $1 + if ! checkyesno rtsold_enable; then + rtsol ${rtsol_flags} $1 + fi fi for i in $interfaces; do diff --git a/etc/rc.d/Makefile b/etc/rc.d/Makefile index 110f3d783a29..49010e5e2c99 100755 --- a/etc/rc.d/Makefile +++ b/etc/rc.d/Makefile @@ -30,7 +30,7 @@ FILES= DAEMON FILESYSTEMS LOGIN NETWORKING SERVERS \ powerd power_profile ppp pppoed pwcheck \ quota \ random rarpd resolv rfcomm_pppd_server root \ - route6d routed routing rpcbind rtadvd rwho \ + route6d routed routing rpcbind rtadvd rtsold rwho \ savecore sdpd securelevel sendmail \ serial sppp statd static_arp swap1 \ syscons sysctl syslogd \ diff --git a/etc/rc.d/rtsold b/etc/rc.d/rtsold new file mode 100755 index 000000000000..bbecebb4d3a3 --- /dev/null +++ b/etc/rc.d/rtsold @@ -0,0 +1,26 @@ +#!/bin/sh +# +# $FreeBSD$ +# + +# PROVIDE: rtsold +# REQUIRE: netif +# BEFORE: NETWORKING +# KEYWORD: nojail + +. /etc/rc.subr + +name="rtsold" +rcvar=`set_rcvar` +command="/usr/sbin/${name}" +pidfile="/var/run/${name}.pid" +start_postcmd="rtsold_poststart" + +rtsold_poststart() +{ + # wait for DAD + sleep $(($(${SYSCTL_N} net.inet6.ip6.dad_count) + 1)) +} + +load_rc_config $name +run_rc_command "$1"