3247184d86
I spoke with the prefix team sometime back and was told that they do not have an interest in using OpenRC on prefix systems.
110 lines
1.8 KiB
Plaintext
110 lines
1.8 KiB
Plaintext
#!@PREFIX@/sbin/runscript
|
|
# Copyright (c) 2009 Roy Marples <roy@marples.name>
|
|
# Released under the 2-clause BSD license.
|
|
|
|
# This script was inspired by the equivalent rc.d staticroute from NetBSD.
|
|
|
|
description="Configures static routes."
|
|
__nl="
|
|
"
|
|
|
|
depend()
|
|
{
|
|
provide net
|
|
use network
|
|
keyword -jail -vserver
|
|
}
|
|
|
|
pre_flight_checks()
|
|
{
|
|
route=route
|
|
[ -s /etc/route.conf ] && return 0
|
|
|
|
if [ -n "$staticiproute" ]; then
|
|
route="ip route"
|
|
staticroute="$staticiproute"
|
|
fi
|
|
}
|
|
|
|
dump_args()
|
|
{
|
|
# Route configuration file, as used by the NetBSD RC system
|
|
if [ -s /etc/route.conf ]; then
|
|
cat /etc/route.conf
|
|
return $?
|
|
fi
|
|
|
|
case "$staticroute" in
|
|
*"$__nl"*)
|
|
echo "$staticroute"
|
|
;;
|
|
*)
|
|
(
|
|
set -o noglob
|
|
IFS=';'; set -- $staticroute
|
|
IFS="$__nl"; echo "$*"
|
|
)
|
|
;;
|
|
esac
|
|
}
|
|
|
|
do_routes()
|
|
{
|
|
local xtra= family=
|
|
[ "$RC_UNAME" != Linux ] && xtra=-q
|
|
|
|
ebegin "$1 static routes"
|
|
eindent
|
|
pre_flight_checks
|
|
dump_args | while read args; do
|
|
[ -z "$args" ] && continue
|
|
case "$args" in
|
|
"#"*)
|
|
;;
|
|
"+"*)
|
|
[ $2 = "add" ] && eval ${args#*+}
|
|
;;
|
|
"-"*)
|
|
[ $2 = "del" -o $2 = "delete" ] && eval ${args#*-}
|
|
;;
|
|
*)
|
|
veinfo "$args"
|
|
case "$route" in
|
|
"ip route")
|
|
ip route $2 $args
|
|
;;
|
|
*)
|
|
# Linux route does cannot work it out ...
|
|
if [ "$RC_UNAME" = Linux ]; then
|
|
case "$args" in
|
|
*:*) family="-A inet6";;
|
|
*) family=;;
|
|
esac
|
|
fi
|
|
route $family $xtra $2 -$args
|
|
;;
|
|
esac
|
|
veend $?
|
|
esac
|
|
done
|
|
eoutdent
|
|
eend 0
|
|
}
|
|
|
|
start()
|
|
{
|
|
ewarn
|
|
ewarn "The $RC_SVCNAME script is deprecated and will be"
|
|
ewarn "removed in the future."
|
|
ewarn "Please use the net.* scripts to manage your network interfaces."
|
|
ewarn
|
|
do_routes "Adding" "add"
|
|
}
|
|
|
|
stop()
|
|
{
|
|
local cmd="delete"
|
|
[ "$RC_UNAME" = Linux ] && cmd="del"
|
|
do_routes "Deleting" "$cmd"
|
|
}
|