xref: /freebsd-14.2/libexec/rc/rc.d/rtadvd (revision d0b2dbfa)
1*0696600cSBjoern A. Zeeb#!/bin/sh
2*0696600cSBjoern A. Zeeb#
3*0696600cSBjoern A. Zeeb#
4*0696600cSBjoern A. Zeeb
5*0696600cSBjoern A. Zeeb# PROVIDE: rtadvd
6*0696600cSBjoern A. Zeeb# REQUIRE: DAEMON
7*0696600cSBjoern A. Zeeb# BEFORE:  LOGIN
8*0696600cSBjoern A. Zeeb# KEYWORD: nojailvnet shutdown
9*0696600cSBjoern A. Zeeb
10*0696600cSBjoern A. Zeeb. /etc/rc.subr
11*0696600cSBjoern A. Zeeb. /etc/network.subr
12*0696600cSBjoern A. Zeeb
13*0696600cSBjoern A. Zeebname="rtadvd"
14*0696600cSBjoern A. Zeebdesc="Router advertisement daemon"
15*0696600cSBjoern A. Zeebrcvar="rtadvd_enable"
16*0696600cSBjoern A. Zeebcommand="/usr/sbin/${name}"
17*0696600cSBjoern A. Zeebextra_commands="reload"
18*0696600cSBjoern A. Zeebreload_cmd="rtadvd_reload"
19*0696600cSBjoern A. Zeebstart_precmd="rtadvd_precmd"
20*0696600cSBjoern A. Zeeb
21*0696600cSBjoern A. Zeebrtadvd_precmd()
22*0696600cSBjoern A. Zeeb{
23*0696600cSBjoern A. Zeeb	# This should be enabled with a great care.
24*0696600cSBjoern A. Zeeb	# You may want to fine-tune /etc/rtadvd.conf.
25*0696600cSBjoern A. Zeeb	#
26*0696600cSBjoern A. Zeeb	# And if you wish your rtadvd to receive and process
27*0696600cSBjoern A. Zeeb	# router renumbering messages, specify your Router Renumbering
28*0696600cSBjoern A. Zeeb	# security policy by -R option.
29*0696600cSBjoern A. Zeeb	#
30*0696600cSBjoern A. Zeeb	# See `man 3 ipsec_set_policy` for IPsec policy specification
31*0696600cSBjoern A. Zeeb	# details.
32*0696600cSBjoern A. Zeeb	# (CAUTION: This enables your routers prefix renumbering
33*0696600cSBjoern A. Zeeb	# from another machine, so if you enable this, do it with
34*0696600cSBjoern A. Zeeb	# enough care.)
35*0696600cSBjoern A. Zeeb	#
36*0696600cSBjoern A. Zeeb	# If specific interfaces haven't been specified,
37*0696600cSBjoern A. Zeeb	# get a list of interfaces and enable it on them
38*0696600cSBjoern A. Zeeb	#
39*0696600cSBjoern A. Zeeb	case ${rtadvd_interfaces} in
40*0696600cSBjoern A. Zeeb	[Aa][Uu][Tt][Oo]|'')
41*0696600cSBjoern A. Zeeb		command_args=
42*0696600cSBjoern A. Zeeb		for i in `list_net_interfaces`; do
43*0696600cSBjoern A. Zeeb			case $i in
44*0696600cSBjoern A. Zeeb			lo0)	continue ;;
45*0696600cSBjoern A. Zeeb			esac
46*0696600cSBjoern A. Zeeb			if ipv6if $i; then
47*0696600cSBjoern A. Zeeb				command_args="${command_args} ${i}"
48*0696600cSBjoern A. Zeeb			fi
49*0696600cSBjoern A. Zeeb		done
50*0696600cSBjoern A. Zeeb		;;
51*0696600cSBjoern A. Zeeb	[Nn][Oo][Nn][Ee])
52*0696600cSBjoern A. Zeeb		;;
53*0696600cSBjoern A. Zeeb	*)
54*0696600cSBjoern A. Zeeb		command_args="${rtadvd_interfaces}"
55*0696600cSBjoern A. Zeeb		;;
56*0696600cSBjoern A. Zeeb	esac
57*0696600cSBjoern A. Zeeb
58*0696600cSBjoern A. Zeeb	# Enable Router Renumbering, unicast case
59*0696600cSBjoern A. Zeeb	# (use correct src/dst addr)
60*0696600cSBjoern A. Zeeb	# rtadvd -R "in ipsec ah/transport/fec0:0:0:1::1-fec0:0:0:10::1/require" ${ipv6_network_interfaces}
61*0696600cSBjoern A. Zeeb	# Enable Router Renumbering, multicast case
62*0696600cSBjoern A. Zeeb	# (use correct src addr)
63*0696600cSBjoern A. Zeeb	# rtadvd -R "in ipsec ah/transport/ff05::2-fec0:0:0:10::1/require" ${ipv6_network_interfaces}
64*0696600cSBjoern A. Zeeb	return 0
65*0696600cSBjoern A. Zeeb}
66*0696600cSBjoern A. Zeeb
67*0696600cSBjoern A. Zeebrtadvd_reload() {
68*0696600cSBjoern A. Zeeb	/usr/sbin/rtadvctl reload
69*0696600cSBjoern A. Zeeb}
70*0696600cSBjoern A. Zeeb
71*0696600cSBjoern A. Zeebload_rc_config $name
72*0696600cSBjoern A. Zeebrun_rc_command "$1"
73