mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-26 19:00:34 +02:00
Merge branch 'static-routing' into next
This commit is contained in:
67
src/initscripts/init.d/static-routes
Normal file
67
src/initscripts/init.d/static-routes
Normal 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
|
||||
@@ -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 $@
|
||||
|
||||
17
src/misc-progs/rebuildroutes.c
Normal file
17
src/misc-progs/rebuildroutes.c
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user