Merge branch 'static-routing' into next

This commit is contained in:
Michael Tremer
2011-07-06 19:38:29 +02:00
5 changed files with 92 additions and 1 deletions

View File

@@ -0,0 +1,67 @@
#!/bin/bash
. /etc/sysconfig/rc
. ${rc_functions}
function init_table() {
# Check if table does already exist. If not we add it.
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..."
# First, initialize the table
init_table
# Add all routes
create_all_routes ${CONFIGFILE}
evaluate_retval
;;
stop)
boot_mesg "Removing static routes..."
ip route flush table static >/dev/null 2>&1
evaluate_retval
;;
*)
echo "Usage: ${0} {start|stop}"
exit 1
;;
esac

View File

@@ -32,7 +32,7 @@ SUID_PROGS = setdmzholes setportfw setxtaccess \
wirelessctrl getipstat getiptstate qosctrl launch-ether-wake \
redctrl syslogdctrl extrahdctrl sambactrl upnpctrl tripwirectrl \
smartctrl clamavctrl addonctrl pakfire mpfirectrl wlanapctrl \
setaliases urlfilterctrl updxlratorctrl fireinfoctrl
setaliases urlfilterctrl updxlratorctrl fireinfoctrl rebuildroutes
SUID_UPDX = updxsetperms
install : all
@@ -158,3 +158,5 @@ updxsetperms: updxsetperms.c setuid.o ../install+setup/libsmooth/varval.o
fireinfoctrl: fireinfoctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ fireinfoctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
rebuildroutes: rebuildroutes.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ rebuildroutes.c setuid.o ../install+setup/libsmooth/varval.o -o $@

View File

@@ -0,0 +1,17 @@
/* IPFire helper program - rebuildroutes
*
* This program is distributed under the terms of the GNU General Public
* Licence. See the file COPYING for details.
*/
#include "libsmooth.h"
#include "setuid.h"
int main(int argc, char *argv[]) {
if (!(initsetuid()))
exit(1);
safe_system("/etc/init.d/static-routes start >/dev/null 2>&1");
return 0;
}