mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-12 12:15:52 +02:00
Update static routing script to actually add the routes.
This commit is contained in:
@@ -6,34 +6,62 @@
|
||||
|
||||
function init_table() {
|
||||
# Check if table does already exist. If not we add it.
|
||||
if (ip rule | grep -qeE static >/dev/null 2>&1); then
|
||||
if (ip rule | grep -q "static" >/dev/null 2>&1); then
|
||||
return
|
||||
fi
|
||||
|
||||
ip rule add table static
|
||||
}
|
||||
|
||||
function create_all_routes() {
|
||||
local file=${1}
|
||||
shift
|
||||
|
||||
# Remote all routes.
|
||||
ip route flush table static >/dev/null 2>&1
|
||||
|
||||
local status
|
||||
local network
|
||||
local gateway
|
||||
local remark
|
||||
|
||||
# Read all routes from the configuration file and add the enabled ones
|
||||
# immediately.
|
||||
while IFS=, read status network gateway remark; do
|
||||
[ "${status}" = "on" ] || continue
|
||||
|
||||
if [ -z "${network}" -o -z "${gateway}" ]; then
|
||||
# Silently skipping invalid routes.
|
||||
continue
|
||||
fi
|
||||
|
||||
ip route add ${network} via ${gateway} table static
|
||||
done < ${file}
|
||||
}
|
||||
|
||||
CONFIGFILE="/var/ipfire/main/routing"
|
||||
|
||||
case "${1}" in
|
||||
start)
|
||||
boot_mesg "Adding static routes..."
|
||||
boot_mesg "Adding static routes..."
|
||||
|
||||
# First, initialize the table
|
||||
init_table
|
||||
init_table
|
||||
|
||||
### ADD ALL ROUTES
|
||||
# Add all routes
|
||||
create_all_routes ${CONFIGFILE}
|
||||
|
||||
evaluate_retval
|
||||
;;
|
||||
;;
|
||||
|
||||
stop)
|
||||
boot_mesg "Removing static routes..."
|
||||
ip route flush table static >/dev/null 2>&1
|
||||
stop)
|
||||
boot_mesg "Removing static routes..."
|
||||
ip route flush table static >/dev/null 2>&1
|
||||
evaluate_retval
|
||||
;;
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Usage: ${0} {start|stop}"
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
echo "Usage: ${0} {start|stop}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user