aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--initscripts.spec1
-rw-r--r--ppp/ip-down3
-rw-r--r--sysconfig.txt7
-rwxr-xr-xsysconfig/network-scripts/ifdown-post10
-rwxr-xr-xsysconfig/network-scripts/ifdown-routes26
-rwxr-xr-xsysconfig/network-scripts/ifup-routes17
6 files changed, 63 insertions, 1 deletions
diff --git a/initscripts.spec b/initscripts.spec
index d044bf3d..18e362b4 100644
--- a/initscripts.spec
+++ b/initscripts.spec
@@ -133,6 +133,7 @@ rm -rf $RPM_BUILD_ROOT
%config /etc/sysconfig/network-scripts/ifup-ppp
%config /etc/sysconfig/network-scripts/ifup-sl
%config /etc/sysconfig/network-scripts/ifup-routes
+%config /etc/sysconfig/network-scripts/ifdown-routes
%config /etc/sysconfig/network-scripts/ifup-plip
%config /etc/sysconfig/network-scripts/ifup-plusb
%config /etc/sysconfig/network-scripts/ifup-bnep
diff --git a/ppp/ip-down b/ppp/ip-down
index 11aa43ee..bfb08711 100644
--- a/ppp/ip-down
+++ b/ppp/ip-down
@@ -12,6 +12,7 @@ REALDEVICE=$1
[ -x /etc/ppp/ip-down.local ] && /etc/ppp/ip-down.local "$@"
-/etc/sysconfig/network-scripts/ifdown-post ifcfg-${LOGDEVICE}
+/etc/sysconfig/network-scripts/ifdown-post --realdevice ${REALDEVICE} \
+ ifcfg-${LOGDEVICE}
exit 0
diff --git a/sysconfig.txt b/sysconfig.txt
index 80842118..a23f9c64 100644
--- a/sysconfig.txt
+++ b/sysconfig.txt
@@ -966,3 +966,10 @@ Files in /etc/sysconfig/network-scripts/
Note the special case of 6to4 interface: 'via [relay]' is
automatically added if explicit 'via' wasn't specified.
+
+/etc/sysconfig/network-scripts/rule-<interface-name>
+
+ Contains lines that specify additional routeing rules that should be added
+ when the associated interface is brought up.
+
+ Each non-comment line is used directly as an argument to "/sbin/ip rule add".
diff --git a/sysconfig/network-scripts/ifdown-post b/sysconfig/network-scripts/ifdown-post
index 87f28a16..ed0dd67c 100755
--- a/sysconfig/network-scripts/ifdown-post
+++ b/sysconfig/network-scripts/ifdown-post
@@ -5,9 +5,19 @@
cd /etc/sysconfig/network-scripts
. network-functions
+unset REALDEVICE
+if [ "$1" = --realdevice ] ; then
+ REALDEVICE=$2
+ shift 2
+fi
+
CONFIG=$1
source_config
+[ -z "$REALDEVICE" ] && REALDEVICE=$DEVICE
+
+/etc/sysconfig/network-scripts/ifdown-routes ${REALDEVICE} ${DEVNAME}
+
if [ "$PEERDNS" != "no" -o -n "$RESOLV_MODS" -a "$RESOLV_MODS" != "no" ]; then
if [ -f /etc/resolv.conf.save ]; then
change_resolv_conf /etc/resolv.conf.save
diff --git a/sysconfig/network-scripts/ifdown-routes b/sysconfig/network-scripts/ifdown-routes
new file mode 100755
index 00000000..fef0ec3b
--- /dev/null
+++ b/sysconfig/network-scripts/ifdown-routes
@@ -0,0 +1,26 @@
+#! /bin/bash
+#
+# Drops static routes which go through device $1
+if [ -z "$1" ]; then
+ echo $"usage: ifup-routes <net-device> [<nickname>]"
+ exit 1
+fi
+
+# The routes are actually dropped just by setting the link down, so nothing
+# needs to be done
+
+# Routing rules
+FILES="/etc/sysconfig/network-scripts/rule-$1"
+if [ -n "$2" -a "$2" != "$1" ]; then
+ FILES="$FILES /etc/sysconfig/network-scripts/rule-$2"
+fi
+
+for file in $FILES; do
+ if [ -f "$file" ]; then
+ { cat "$file" ; echo ; } | while read line; do
+ if [[ ! "$line" =~ '^[[:space:]]*(\#.*)?$' ]]; then
+ /sbin/ip rule del $line
+ fi
+ done
+ fi
+done
diff --git a/sysconfig/network-scripts/ifup-routes b/sysconfig/network-scripts/ifup-routes
index cd5ba7fd..f6a228ae 100755
--- a/sysconfig/network-scripts/ifup-routes
+++ b/sysconfig/network-scripts/ifup-routes
@@ -47,3 +47,20 @@ done
NICK=${2:-$1}
CONFIG="/etc/sysconfig/network-scripts/$NICK.route"
[ -f $CONFIG ] && handle_file $CONFIG $1
+
+
+# Routing rules
+FILES="/etc/sysconfig/network-scripts/rule-$1"
+if [ -n "$2" -a "$2" != "$1" ]; then
+ FILES="$FILES /etc/sysconfig/network-scripts/rule-$2"
+fi
+
+for file in $FILES; do
+ if [ -f "$file" ]; then
+ { cat "$file" ; echo ; } | while read line; do
+ if [[ ! "$line" =~ '^[[:space:]]*(\#.*)?$' ]]; then
+ /sbin/ip rule add $line
+ fi
+ done
+ fi
+done