Files

87 lines
1.7 KiB
Bash
Executable File

#!/bin/sh
#
# $FreeBSD$
#
# PROVIDE: route_policy
# REQUIRE: wireguard
# KEYWORD: shutdown
#
. ${RC_ROUTER_HARNESS}/etc/rc.subr
name="route_policy"
desc="Policy Based Routing Installer"
start_cmd='route_policy_start'
stop_cmd='route_policy_stop'
rcvar='route_policy_enable'
load_rc_config 'route_policy'
if [ -z "${route_policy_file}" ]
then
echo "Must have a route policy target file"
exit 1
fi
do_all_routes()
{
while [ -n "$1" ]
do
install_route_policy $1
shift 1
done
}
do_all_routes_v4()
{
while [ -n "$1" ]
do
install_route_policy_v4 $1
shift 1
done
}
route_policy_start()
{
clear_all_policies
echo "# This file is generated." >> ${route_policy_file}
echo "# Do not edit." >> ${route_policy_file}
echo "" >> ${route_policy_file}
# TODO: Record the policies one-per-line via a helper loop subroutine?
echo "# (Generated with \`${route_policies}\`, at `date`.)" >> ${route_policy_file}
echo "# (Generated with \`${route_policies_v4}\`, at `date`.)" >> ${route_policy_file}
echo "" >> ${route_policy_file}
echo "" >> ${route_policy_file}
do_all_routes ${route_policies}
do_all_routes_v4 ${route_policies_v4}
echo "" >> ${route_policy_file}
echo -n "# v" >> ${route_policy_file}
echo "im: ft=pf" >> ${route_policy_file}
#pfctl -a "route-policies" -f ${route_policy_file}
#pfctl -f ${pf_rules}
# UGLY hack/workaround because of a kernel panic bug from
# rtable rules in files included in `pf` anchors in FreeBSD 15
service pf reload
}
route_policy_stop()
{
clear_all_policies
}
################ Epilogue
run_rc_command "$1"
# vim: ft=bash