diff options
author | David Kaspar [Dee'Kej] <dkaspar@redhat.com> | 2018-05-25 20:01:54 +0200 |
---|---|---|
committer | Dee'Kej <deekej@linuxmail.org> | 2018-05-30 12:32:22 +0200 |
commit | a145ddda284570e57413e37f025c3657205e17d8 (patch) | |
tree | a371338da02e38d8745964f75239c8ee62cc459b /network-scripts/ifup-routes | |
parent | db1ca2fadd20d0a4fb5a0fe18adcd8c960db9cf3 (diff) | |
download | initscripts-a145ddda284570e57413e37f025c3657205e17d8.tar initscripts-a145ddda284570e57413e37f025c3657205e17d8.tar.gz initscripts-a145ddda284570e57413e37f025c3657205e17d8.tar.bz2 initscripts-a145ddda284570e57413e37f025c3657205e17d8.tar.xz initscripts-a145ddda284570e57413e37f025c3657205e17d8.zip |
Repository scheme updated to new layout
NOTE: This commit just moves files around, without actually fixing the
Makefiles and specfile. See follow up commits which resolve this.
Diffstat (limited to 'network-scripts/ifup-routes')
-rwxr-xr-x | network-scripts/ifup-routes | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/network-scripts/ifup-routes b/network-scripts/ifup-routes new file mode 100755 index 00000000..517c2bbb --- /dev/null +++ b/network-scripts/ifup-routes @@ -0,0 +1,76 @@ +#! /bin/bash +# +# adds static routes which go through device $1 + +if [ -z "$1" ]; then + echo $"usage: ifup-routes <net-device> [<nickname>]" + exit 1 +fi + +MATCH='^[[:space:]]*(\#.*)?$' + +handle_file () { + . $1 + routenum=0 + while [ "x$(eval echo '$'ADDRESS$routenum)x" != "xx" ]; do + eval $(ipcalc -p $(eval echo '$'ADDRESS$routenum) $(eval echo '$'NETMASK$routenum)) + line="$(eval echo '$'ADDRESS$routenum)/$PREFIX" + if [ "x$(eval echo '$'GATEWAY$routenum)x" != "xx" ]; then + line="$line via $(eval echo '$'GATEWAY$routenum)" + fi + line="$line dev $2" + /sbin/ip route add $line + routenum=$(($routenum+1)) + done +} + +handle_ip_file() { + local f t type= file=$1 proto="-4" + f=${file##*/} + t=${f%%-*} + type=${t%%6} + if [ "$type" != "$t" ]; then + proto="-6" + fi + { cat "$file" ; echo ; } | while read line; do + if [[ ! "$line" =~ $MATCH ]]; then + /sbin/ip $proto $type add $line + fi + done +} + +FILES="/etc/sysconfig/network-scripts/route-$1 /etc/sysconfig/network-scripts/route6-$1" +if [ -n "$2" -a "$2" != "$1" ]; then + FILES="$FILES /etc/sysconfig/network-scripts/route-$2 /etc/sysconfig/network-scripts/route6-$2" +fi + +for file in $FILES; do + if [ -f "$file" ]; then + if grep -Eq '^[[:space:]]*ADDRESS[0-9]+=' $file ; then + # new format + handle_file $file ${1%:*} + else + # older format + handle_ip_file $file + fi + fi +done + + +# Red Hat network configuration format +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 /etc/sysconfig/network-scripts/rule6-$1" +if [ -n "$2" -a "$2" != "$1" ]; then + FILES="$FILES /etc/sysconfig/network-scripts/rule-$2 /etc/sysconfig/network-scripts/rule6-$2" +fi + +for file in $FILES; do + if [ -f "$file" ]; then + handle_ip_file $file + fi +done |