87 lines
1.7 KiB
Bash
Executable File
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
|