diff options
-rw-r--r-- | initscripts.spec | 1 | ||||
-rw-r--r-- | ppp/ip-down | 3 | ||||
-rw-r--r-- | sysconfig.txt | 7 | ||||
-rwxr-xr-x | sysconfig/network-scripts/ifdown-post | 10 | ||||
-rwxr-xr-x | sysconfig/network-scripts/ifdown-routes | 26 | ||||
-rwxr-xr-x | sysconfig/network-scripts/ifup-routes | 17 |
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 |