Add a new staticroute init script so that .... static routes can be configured!

Fixes Gentoo #288421.
This commit is contained in:
Roy Marples 2009-10-16 08:08:22 +01:00
parent a4b03ead79
commit baeb59cd2e
8 changed files with 92 additions and 6 deletions

1
conf.d/.gitignore vendored
View File

@ -1 +1,2 @@
network network
staticroute

View File

@ -1,14 +1,19 @@
DIR= ${CONFDIR} DIR= ${CONFDIR}
CONF= bootmisc fsck hostname local localmount network urandom CONF= bootmisc fsck hostname local localmount network staticroute urandom
TARGETS+= network TARGETS+= network staticroute
CLEANFILES+= network CLEANFILES+= network staticroute
MK= ../mk MK= ../mk
include ${MK}/os.mk include ${MK}/os.mk
include Makefile.${OS} include Makefile.${OS}
include ${MK}/scripts.mk include ${MK}/scripts.mk
SOS?= BSD
network: network.in network.${OS} network: network.in network.${OS}
cp network.in network cp $@.in $@
[ -e network.${OS} ] && cat network.${OS} >> network || true [ -e $@.${OS} ] && cat $@.${OS} >> $@ || true
staticroute: staticroute.${SOS}
cp $@.${SOS} $@

View File

@ -1 +1,2 @@
CONF+= consolefont dmesg hwclock keymaps modules CONF+= consolefont dmesg hwclock keymaps modules
SOS= Linux

2
conf.d/staticroute.BSD Normal file
View File

@ -0,0 +1,2 @@
# Example static route. See route(8) for syntax.
staticroute="net 192.168.0.0 -netmask 255.255.0.0 10.73.1.1"

2
conf.d/staticroute.Linux Normal file
View File

@ -0,0 +1,2 @@
# Example static route. See route(8) for syntax.
staticroute="net 192.168.0.0 netmask 255.255.0.0 gw 10.73.1.1"

1
init.d/.gitignore vendored
View File

@ -24,6 +24,7 @@ mount-ro
mtab mtab
numlock numlock
procfs procfs
staticroute
sysfs sysfs
devdb devdb
hostid hostid

View File

@ -1,6 +1,7 @@
DIR= ${INITDIR} DIR= ${INITDIR}
SRCS= bootmisc.in fsck.in hostname.in local.in localmount.in netmount.in \ SRCS= bootmisc.in fsck.in hostname.in local.in localmount.in netmount.in \
network.in root.in savecache.in swap.in swclock.in sysctl.in urandom.in network.in root.in savecache.in staticroute.in swap.in swclock.in \
sysctl.in urandom.in
BIN= ${OBJS} BIN= ${OBJS}
# Build our old net foo or not # Build our old net foo or not

73
init.d/staticroute.in Normal file
View File

@ -0,0 +1,73 @@
#!@PREFIX@/sbin/runscript
# Copyright (c) 2009 Roy Marples <roy@marples.name>
# All rights reserved. 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 -prefix -vserver
}
dump_args()
{
if [ -s /etc/route.conf ]; then
cat /etc/route.conf
else
case "$staticroute" in
*"$__nl"*)
echo "$staticroute"
;;
*)
(
set -o noglob
IFS=';'; set -- $staticroute
IFS="$__nl"; echo "$*"
)
;;
esac
fi
}
do_routes()
{
local xtra=
[ "$RC_UNAME" != Linux ] && xtra=-q
ebegin "$1 static routes"
dump_args | while read args; do
[ -z "$args" ] && continue
case "$args" in
"#"*)
;;
"+"*)
[ $2 = "add" ] && eval ${args#*+}
;;
"-"*)
[ $2 = "del" -o $2 = "delete" ] && eval ${args#*-}
;;
*)
route $xtra $2 -$args
;;
esac
done
eend 0
}
start()
{
do_routes "Adding" "add"
}
stop()
{
local cmd="delete"
[ "$RC_UNAME" = Linux ] && cmd="del"
do_routes "Deleting" "$cmd"
}