diff options
-rw-r--r-- | conf.d/.gitignore | 1 | ||||
-rw-r--r-- | conf.d/Makefile | 15 | ||||
-rw-r--r-- | conf.d/Makefile.Linux | 1 | ||||
-rw-r--r-- | conf.d/staticroute.BSD | 2 | ||||
-rw-r--r-- | conf.d/staticroute.Linux | 2 | ||||
-rw-r--r-- | init.d/.gitignore | 1 | ||||
-rw-r--r-- | init.d/Makefile | 3 | ||||
-rw-r--r-- | init.d/staticroute.in | 73 |
8 files changed, 92 insertions, 6 deletions
diff --git a/conf.d/.gitignore b/conf.d/.gitignore index 992ae129..377ebc05 100644 --- a/conf.d/.gitignore +++ b/conf.d/.gitignore @@ -1 +1,2 @@ network +staticroute diff --git a/conf.d/Makefile b/conf.d/Makefile index b78baf55..5f9cf453 100644 --- a/conf.d/Makefile +++ b/conf.d/Makefile @@ -1,14 +1,19 @@ DIR= ${CONFDIR} -CONF= bootmisc fsck hostname local localmount network urandom +CONF= bootmisc fsck hostname local localmount network staticroute urandom -TARGETS+= network -CLEANFILES+= network +TARGETS+= network staticroute +CLEANFILES+= network staticroute MK= ../mk include ${MK}/os.mk include Makefile.${OS} include ${MK}/scripts.mk +SOS?= BSD + network: network.in network.${OS} - cp network.in network - [ -e network.${OS} ] && cat network.${OS} >> network || true + cp $@.in $@ + [ -e $@.${OS} ] && cat $@.${OS} >> $@ || true + +staticroute: staticroute.${SOS} + cp $@.${SOS} $@ diff --git a/conf.d/Makefile.Linux b/conf.d/Makefile.Linux index 74679400..37745de2 100644 --- a/conf.d/Makefile.Linux +++ b/conf.d/Makefile.Linux @@ -1 +1,2 @@ CONF+= consolefont dmesg hwclock keymaps modules +SOS= Linux diff --git a/conf.d/staticroute.BSD b/conf.d/staticroute.BSD new file mode 100644 index 00000000..0d07711e --- /dev/null +++ b/conf.d/staticroute.BSD @@ -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" diff --git a/conf.d/staticroute.Linux b/conf.d/staticroute.Linux new file mode 100644 index 00000000..e25e03f6 --- /dev/null +++ b/conf.d/staticroute.Linux @@ -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" diff --git a/init.d/.gitignore b/init.d/.gitignore index 94a40e24..a02adc1d 100644 --- a/init.d/.gitignore +++ b/init.d/.gitignore @@ -24,6 +24,7 @@ mount-ro mtab numlock procfs +staticroute sysfs devdb hostid diff --git a/init.d/Makefile b/init.d/Makefile index 0786e050..6a0323ce 100644 --- a/init.d/Makefile +++ b/init.d/Makefile @@ -1,6 +1,7 @@ DIR= ${INITDIR} 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} # Build our old net foo or not diff --git a/init.d/staticroute.in b/init.d/staticroute.in new file mode 100644 index 00000000..0b49ca9a --- /dev/null +++ b/init.d/staticroute.in @@ -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" +} |