4d30691ee6
This should be mostly independent of my configs, now.
132 lines
2.4 KiB
Bash
Executable File
132 lines
2.4 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
# PROVIDE: generate_rtadvd_conf
|
|
# REQUIRE: dhcp6c
|
|
# BEFORE: rtadvd
|
|
# KEYWORD: shutdown
|
|
#
|
|
|
|
. ${RC_ROUTER_HARNESS}/etc/rc.subr
|
|
|
|
name='generate_rtadvd_conf'
|
|
|
|
start_cmd='generate_rtadvd_conf_start'
|
|
stop_cmd='generate_rtadvd_conf_stop'
|
|
rcvar='generate_rtadvd_conf_enable'
|
|
|
|
load_rc_config 'generate_rtadvd_conf'
|
|
|
|
[ -z "$generate_rtadvd_conf_enable" ] && generate_rtadvd_conf_enable='NO'
|
|
|
|
_prepare_var()
|
|
{
|
|
var=$1
|
|
opt=$2
|
|
|
|
eval _value=\${${var}}
|
|
eval _${opt}=""
|
|
if [ -n "${_value}" ]
|
|
then
|
|
_text="${opt}=\\\"${_value}\\\""
|
|
eval _${opt}=\"${_text}\"
|
|
fi
|
|
}
|
|
|
|
_prepare_num()
|
|
{
|
|
var=$1
|
|
opt=$2
|
|
|
|
eval _value=\${${var}}
|
|
eval _${opt}\=""
|
|
if [ -n "${_value}" ]
|
|
then
|
|
_text="${opt}\#${_value}"
|
|
eval _${opt}=\"${_text}\"
|
|
fi
|
|
}
|
|
|
|
_prepare_opt()
|
|
{
|
|
var=$1
|
|
opt=$2
|
|
|
|
eval _${opt}\=""
|
|
if [ `option_selected ${var}` = "YES" ]
|
|
then
|
|
_text="${opt}"
|
|
eval _${opt}=\"${_text}\"
|
|
fi
|
|
}
|
|
|
|
|
|
_build_rtadv()
|
|
{
|
|
gen_rtadv_dir=${rc_router_gen_dir}
|
|
rtadvd_conf=${gen_rtadv_dir}/rtadvd.conf
|
|
mkdir -p ${gen_rtadv_dir}
|
|
|
|
_search_list=""
|
|
if [ -n "${rtadvd_dns_search_list}" ]
|
|
then
|
|
_search_list=$( echo ${rtadvd_dns_search_list} | sed -e 's/ */,/g' -e 's/^,//' -e 's/,$//' )
|
|
fi
|
|
|
|
_prepare_var _search_list dnssl
|
|
|
|
_prepare_var rtadvd_pref64_prefix pref64
|
|
|
|
_prepare_num rtadvd_mininterval mininterval
|
|
_prepare_num rtadvd_maxinterval maxinterval
|
|
|
|
_prepare_num rtadvd_pltime pltime
|
|
_prepare_opt rtadvd_pltimedecr pltimedecr
|
|
|
|
_prepare_num rtadvd_vltime vltime
|
|
_prepare_opt rtadvd_vltimedecr vltimedecr
|
|
|
|
_prepare_num rtadvd_rltime rltime
|
|
|
|
cat ${rc_router_dir}/templates/rtadvd.conf \
|
|
| sed \
|
|
-e "s/@PREF64@/${_pref64}/" \
|
|
-e "s/@MININTERVAL@/${_mininterval}/" \
|
|
-e "s/@MAXINTERVAL@/${_maxinterval}/" \
|
|
-e "s/@PLTIME@/${_pltime}/" \
|
|
-e "s/@PLTIME_DECR@/${_pltimedecr}/" \
|
|
-e "s/@VLTIME@/${_vltime}/" \
|
|
-e "s/@VLTIME_DECR@/${_vltimedecr}/" \
|
|
-e "s/@RLTIME@/${_rltime}/" \
|
|
-e "s/@DNS_SEARCHLIST@/${_dnssl}/" \
|
|
-e "s/@DNS_SERVER@/${rtadvd_dns_server}/" \
|
|
> ${rtadvd_conf}
|
|
|
|
|
|
echo "" >> ${rtadvd_conf}
|
|
echo "" >> ${rtadvd_conf}
|
|
|
|
for interface in ${rtadvd_interfaces}
|
|
do
|
|
echo "${interface}:tc=settings" >> ${rtadvd_conf}
|
|
done
|
|
}
|
|
|
|
|
|
generate_rtadvd_conf_start()
|
|
{
|
|
_build_rtadv
|
|
}
|
|
|
|
generate_rtadvd_conf_stop()
|
|
{
|
|
true
|
|
}
|
|
|
|
################ Epilogue
|
|
|
|
run_rc_command "$1"
|
|
|
|
# vim: ft=bash
|