usr/local/bin/pakfire
usr/local/bin/qosctrl
usr/local/bin/rebuildhosts
+usr/local/bin/rebuildroutes
usr/local/bin/redctrl
#usr/local/bin/sambactrl
usr/local/bin/setaliases
cd $(DIR_APP) && make $(MAKETUNING) SBINDIR=/sbin
cd $(DIR_APP) && make SBINDIR=/sbin install
cd $(DIR_APP) && mv -v /sbin/arpd /usr/sbin
+
+ # Add table for static routing
+ echo "200 static" >> /etc/iproute2/rt_tables
+
@rm -rf $(DIR_APP)
@$(POSTBUILD)
--- /dev/null
+#!/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
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
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 $@
--- /dev/null
+/* 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;
+}