[LARTC] Little script to save and restore ip rules

Lee Lists lartc@mailman.ds9a.nl
Mon, 06 Oct 2003 17:48:29 +0200


Hello,

I would like to have some testers for this script which should save and 
restore ip rules and associated tables.

Thanks

#!/bin/bash
#
# chkconfig: 2345 85 15
# description: save and restore ip rules settings
# config: /etc/sysconfig/iprules

# source function library
. /etc/rc.d/init.d/functions

CONFIG=/etc/sysconfig/iprules

RETVAL=0

case "$1" in
  save)
    echo -n "Saving ip rules:"
    rm $CONFIG > /dev/null 2>&1
    ip ru ls | grep -v "^3276.:" | grep -v "^0:" | sed -e "s/://" -e 
"s/from all//" -e "s/^/ip ru add preference /" |
        echo $LINE >> $CONFIG
    done
    ip ru ls | grep -v "lookup local" | grep -v "lookup main" | grep -v 
"lookup default" | sed -e "s/^.*lookup //" |
        ip ro ls ta $LINE | sed -e "s/$/ ta $LINE/" -e "s/^/ip ro add /" 
 >> $CONFIG
    done
    echo
    ;;
  stop)
    echo -n "Stopping ip rules:"
    ip ru ls | grep -v "lookup local" | grep -v "lookup main" | grep -v 
"lookup default" | sed -e "s/^.*lookup //" |
        ip ro flush ta $LINE
    done
    ip ru ls | grep -v "^3276.:" | grep -v "^0:" | sed -e "s/://"  -e 
"s/from all//" -e "s/^/ip ru del preference /"
        /sbin/$LINE
    done
    rm -f /var/lock/subsys/rules
    echo
    ;;
  start)
    echo -n "Starting ip rules:"
    if [ -f /var/lock/subsys/rules ] ; then
            $0 stop
    fi
    # real start
    cat $CONFIG | while read LINE ; do
        /sbin/$LINE
    done
    touch /var/lock/subsys/rules
    echo
    ;;
  restart|reload)
    $0 stop
    $0 start
    RETVAL=$?
    ;;
  status)
    status gpm
    RETVAL=$?
    ;;
  *)
    echo "Usage: gpm {start|stop|status|restart|reload}"
    exit 1
esac

exit $RETVAL