Much of the core bits are initially ported.
This should be mostly independent of my configs, now.
This commit is contained in:
Executable
+35
@@ -0,0 +1,35 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# PROVIDE: generate_internal_dhcpv4
|
||||
# REQUIRE: netif
|
||||
# BEFORE: isc-dhcp
|
||||
# KEYWORD: shutdown
|
||||
#
|
||||
|
||||
. ${RC_ROUTER_HARNESS}/etc/rc.subr
|
||||
|
||||
name='generate_internal_dhcpv4'
|
||||
|
||||
start_cmd='generate_dhcp_start'
|
||||
stop_cmd='generate_dhcp_stop'
|
||||
rcvar='generate_internal_dhcpv4_enable'
|
||||
|
||||
load_rc_config 'generate_internal_dhcpv4'
|
||||
|
||||
generate_dhcp_start()
|
||||
{
|
||||
_emit_dhcpv4
|
||||
}
|
||||
|
||||
generate_dhcp_stop()
|
||||
{
|
||||
true
|
||||
}
|
||||
|
||||
################ Epilogue
|
||||
|
||||
run_rc_command "$1"
|
||||
|
||||
# vim: ft=bash
|
||||
Executable
+36
@@ -0,0 +1,36 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# PROVIDE: generate_isp_dhcp
|
||||
# REQUIRE: netif
|
||||
# BEFORE: dhcp6c
|
||||
# KEYWORD: shutdown
|
||||
#
|
||||
|
||||
. ${RC_ROUTER_HARNESS}/etc/rc.subr
|
||||
|
||||
name='generate_isp_dhcp'
|
||||
|
||||
start_cmd='generate_isp_dhcp_start'
|
||||
stop_cmd='generate_isp_dhcp_stop'
|
||||
rcvar='generate_isp_dhcp_enable'
|
||||
|
||||
load_rc_config 'generate_isp_dhcp'
|
||||
|
||||
generate_isp_dhcp_start()
|
||||
{
|
||||
_emit_dhcpv6
|
||||
cat ${rc_router_gen_dir}/dhcp6c.*.conf > ${rc_router_gen_dir}/dhcp6c.conf
|
||||
}
|
||||
|
||||
generate_isp_dhcp_stop()
|
||||
{
|
||||
true
|
||||
}
|
||||
|
||||
################ Epilogue
|
||||
|
||||
run_rc_command "$1"
|
||||
|
||||
# vim: ft=bash
|
||||
Executable
+131
@@ -0,0 +1,131 @@
|
||||
#!/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
|
||||
Executable
+103
@@ -0,0 +1,103 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# PROVIDE: localnet
|
||||
# REQUIRE: dhcp6c
|
||||
# BEFORE: named
|
||||
# KEYWORD: shutdown
|
||||
#
|
||||
|
||||
# The purpose of this script is to generate various ISP prefix dependent files.
|
||||
#
|
||||
# Specifically, the DNS (BIND) acls file for handling various views, a local ISP
|
||||
# range address for the router itself (on a dedicated loopback device), and
|
||||
# attach any static addresses for this machine to another loopback device.
|
||||
|
||||
. ${RC_ROUTER_HARNESS}/etc/rc.subr
|
||||
|
||||
|
||||
name='localnet'
|
||||
|
||||
extra_commands="rebuild_zoneinfo"
|
||||
start_cmd='localnet_start'
|
||||
stop_cmd='localnet_stop'
|
||||
rebuild_zoneinfo_cmd="localnet_build_zoneinfo"
|
||||
rcvar='localnet_enable'
|
||||
|
||||
load_rc_config 'localnet'
|
||||
|
||||
|
||||
localnet_build_zoneinfo()
|
||||
{
|
||||
compute_addrs
|
||||
localnet_build_zoneinfo_impl
|
||||
}
|
||||
|
||||
|
||||
localnet_build_zoneinfo_impl()
|
||||
{
|
||||
#build_zoneinfo ${isp_prefix} 31 ${router_conf_dir}/namedb/local-machines.defs
|
||||
build_zoneinfo ${isp_prefix} 31 ${rc_router_conf_dir}/namedb/local-machines.defs > ${rc_router_gen_dir}/zone.hosts.nerdland.org
|
||||
}
|
||||
|
||||
localnet_build_acls()
|
||||
{
|
||||
gen_acls_dir=${rc_router_gen_dir}/namedb
|
||||
mkdir -p ${gen_acls_dir}
|
||||
cat ${rc_router_dir}/templates/named.acls.conf \
|
||||
| sed \
|
||||
-e "s/@ISP_PREFIX@/${isp_prefix}/g" \
|
||||
-e "s/@ULA_PREFIX@/${secret_ip6_net}/g" \
|
||||
> ${gen_acls_dir}/acls.conf
|
||||
}
|
||||
|
||||
compute_addrs() {
|
||||
|
||||
loop=0
|
||||
while [ -z "${v6addr}" -a ${loop} -lt 5 ]
|
||||
do
|
||||
[ ${loop} -ne 0 ] && sleep 5
|
||||
# todo: Adjust our ipv6 hint... get from a var?
|
||||
v6addr=$(ifconfig ${localnet_first_nic} | grep "inet6 [23]...:" | head -1 | awk '{print $2}')
|
||||
echo "V6 addr is: ${v6addr}"
|
||||
loop=$(( ${loop} + 1 ))
|
||||
done
|
||||
|
||||
echo "V6 addr is: ${v6addr}"
|
||||
three_quads=$(echo ${v6addr} | awk -F ':' '{print $1":"$2":"$3}')
|
||||
echo "First three quads are: ${three_quads}"
|
||||
last_quad=$(echo ${v6addr} | awk -F ':' '{print $4}')
|
||||
echo "Last quad is: ${last_quad}"
|
||||
last_prefix=$(echo ${last_quad} | rev | awk '{print $1"0000"}' | cut -c 3,4 | rev | sed -e 's/^0//')
|
||||
echo "Last prefix is: ${last_prefix}"
|
||||
|
||||
isp_prefix="${three_quads}:${last_prefix}"
|
||||
base_addr=" inet6 ${isp_prefix}ff::1"
|
||||
}
|
||||
|
||||
|
||||
localnet_start() {
|
||||
cp ${rc_router_conf_dir}/resolv.conf.master ${rc_router_conf_dir}/resolv.conf
|
||||
compute_addrs
|
||||
ifconfig lo1 create ${base_addr} prefer_source
|
||||
|
||||
# DO NOT USE prefer_source for this address...
|
||||
# It will cause confusion for the wireguard tunnels underneath...
|
||||
# It also could cause DNS recursion to fail -- routing as the nested
|
||||
# connections...
|
||||
|
||||
localnet_build_acls
|
||||
localnet_build_zoneinfo_impl
|
||||
}
|
||||
|
||||
localnet_stop() {
|
||||
compute_addrs
|
||||
ifconfig lo0 ${base_addr} delete
|
||||
|
||||
ifconfig lo1 destroy
|
||||
}
|
||||
|
||||
run_rc_command "$1"
|
||||
|
||||
# vim: ft=bash
|
||||
Reference in New Issue
Block a user