From e126f3e804c35480c4f075777430419d6ece23da Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Sun, 23 Sep 2018 10:10:27 +0200 Subject: New upstream version 1.12.4 --- examples/dispatcher/10-ifcfg-rh-routes.sh | 106 +++--------------------------- 1 file changed, 9 insertions(+), 97 deletions(-) (limited to 'examples/dispatcher') diff --git a/examples/dispatcher/10-ifcfg-rh-routes.sh b/examples/dispatcher/10-ifcfg-rh-routes.sh index 147506e4..b1d0314d 100755 --- a/examples/dispatcher/10-ifcfg-rh-routes.sh +++ b/examples/dispatcher/10-ifcfg-rh-routes.sh @@ -1,49 +1,15 @@ -#!/bin/bash +#!/bin/sh + +# This ifcfg-rh-specific script runs +# /etc/sysconfig/network-scripts/ifup-routes when bringing up +# interfaces that have routing rules associated with them that can't +# be expressed by NMSettingIPConfig. (Eg, policy-based routing.) -# This script applies policy-based routing rules defined for the -# connection in the /etc/sysconfig/network-scripts/ directory. -# # This should be installed in both dispatcher.d/ and # dispatcher.d/pre-up.d/ -# + # pre-up scripts delay activation of the device. To reduce the delay, # it is advised to install the script as symlink to no-wait.d directory. -# -# This file is derived from scripts 'if{up,down}-routes' from -# Fedora/RHEL initscripts. - -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 -} - if [ "$2" != "pre-up" -a "$2" != "down" ]; then exit 0 @@ -53,73 +19,19 @@ dir=$(dirname "$CONNECTION_FILENAME") if [ "$dir" != "/etc/sysconfig/network-scripts" ]; then exit 0 fi - profile=$(basename "$CONNECTION_FILENAME" | sed -ne 's/^ifcfg-//p') if [ -z "$profile" ]; then exit 0 fi - if ! [ -f "$dir/rule-$profile" -o -f "$dir/rule6-$profile" ]; then exit 0 fi case "$2" in pre-up) - # Routes - FILES="/etc/sysconfig/network-scripts/route-$DEVICE_IP_IFACE" - FILES="$FILES /etc/sysconfig/network-scripts/route6-$DEVICE_IP_IFACE" - if [ "$profile" != "$DEVICE_IP_IFACE" ]; then - FILES="$FILES /etc/sysconfig/network-scripts/route-$profile" - FILES="$FILES /etc/sysconfig/network-scripts/route6-$profile" - 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 - - # Rules - FILES="/etc/sysconfig/network-scripts/rule-$DEVICE_IP_IFACE" - FILES="$FILES /etc/sysconfig/network-scripts/rule6-$DEVICE_IP_IFACE" - if [ "$profile" != "$DEVICE_IP_IFACE" ]; then - FILES="$FILES /etc/sysconfig/network-scripts/rule-$profile" - FILES="$FILES /etc/sysconfig/network-scripts/rule6-$profile" - fi - - for file in $FILES; do - if [ -f "$file" ]; then - handle_ip_file $file - fi - done + /etc/sysconfig/network-scripts/ifup-routes "$DEVICE_IP_IFACE" "$profile" ;; down) - # Routes are deleted by NetworkManager - # Rules - FILES="/etc/sysconfig/network-scripts/rule-$DEVICE_IP_IFACE" - FILES="$FILES /etc/sysconfig/network-scripts/rule6-$DEVICE_IP_IFACE" - if [ "$profile" != "$DEVICE_IP_IFACE" ]; then - FILES="$FILES /etc/sysconfig/network-scripts/rule-$profile" - FILES="$FILES /etc/sysconfig/network-scripts/rule6-$profile" - fi - for file in $FILES; do - if [ -f "$file" ]; then - proto= - if [ "$file" != "${file##*/rule6-}" ]; then - proto="-6" - fi - { cat "$file" ; echo ; } | while read line; do - if [[ ! "$line" =~ $MATCH ]]; then - /sbin/ip $proto rule del $line - fi - done - fi - done + /etc/sysconfig/network-scripts/ifdown-routes "$DEVICE_IP_IFACE" "$profile" ;; esac -- cgit 1.3.0-6-gf8a5 From 6518e361171f64bcaaa4bf868139362ed95cc2e0 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Sat, 20 Oct 2018 01:30:31 +0200 Subject: New upstream version 1.14.2 --- examples/dispatcher/10-ifcfg-rh-routes.sh | 110 +++++++++++++++++++++++++++--- 1 file changed, 99 insertions(+), 11 deletions(-) (limited to 'examples/dispatcher') diff --git a/examples/dispatcher/10-ifcfg-rh-routes.sh b/examples/dispatcher/10-ifcfg-rh-routes.sh index b1d0314d..d72400ae 100755 --- a/examples/dispatcher/10-ifcfg-rh-routes.sh +++ b/examples/dispatcher/10-ifcfg-rh-routes.sh @@ -1,17 +1,51 @@ -#!/bin/sh - -# This ifcfg-rh-specific script runs -# /etc/sysconfig/network-scripts/ifup-routes when bringing up -# interfaces that have routing rules associated with them that can't -# be expressed by NMSettingIPConfig. (Eg, policy-based routing.) +#!/bin/bash +# This script applies policy-based routing rules defined for the +# connection in the /etc/sysconfig/network-scripts/ directory. +# # This should be installed in both dispatcher.d/ and # dispatcher.d/pre-up.d/ - +# # pre-up scripts delay activation of the device. To reduce the delay, # it is advised to install the script as symlink to no-wait.d directory. +# +# This file is derived from scripts 'if{up,down}-routes' from +# Fedora/RHEL initscripts. + +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 +} + -if [ "$2" != "pre-up" -a "$2" != "down" ]; then +if [ "$2" != "pre-up" ] && [ "$2" != "down" ]; then exit 0 fi @@ -19,19 +53,73 @@ dir=$(dirname "$CONNECTION_FILENAME") if [ "$dir" != "/etc/sysconfig/network-scripts" ]; then exit 0 fi + profile=$(basename "$CONNECTION_FILENAME" | sed -ne 's/^ifcfg-//p') if [ -z "$profile" ]; then exit 0 fi -if ! [ -f "$dir/rule-$profile" -o -f "$dir/rule6-$profile" ]; then + +if [ ! -f "$dir/rule-$profile" ] && [ ! -f "$dir/rule6-$profile" ]; then exit 0 fi case "$2" in pre-up) - /etc/sysconfig/network-scripts/ifup-routes "$DEVICE_IP_IFACE" "$profile" + # Routes + FILES="/etc/sysconfig/network-scripts/route-$DEVICE_IP_IFACE" + FILES="$FILES /etc/sysconfig/network-scripts/route6-$DEVICE_IP_IFACE" + if [ "$profile" != "$DEVICE_IP_IFACE" ]; then + FILES="$FILES /etc/sysconfig/network-scripts/route-$profile" + FILES="$FILES /etc/sysconfig/network-scripts/route6-$profile" + 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 + + # Rules + FILES="/etc/sysconfig/network-scripts/rule-$DEVICE_IP_IFACE" + FILES="$FILES /etc/sysconfig/network-scripts/rule6-$DEVICE_IP_IFACE" + if [ "$profile" != "$DEVICE_IP_IFACE" ]; then + FILES="$FILES /etc/sysconfig/network-scripts/rule-$profile" + FILES="$FILES /etc/sysconfig/network-scripts/rule6-$profile" + fi + + for file in $FILES; do + if [ -f "$file" ]; then + handle_ip_file $file + fi + done ;; down) - /etc/sysconfig/network-scripts/ifdown-routes "$DEVICE_IP_IFACE" "$profile" + # Routes are deleted by NetworkManager + # Rules + FILES="/etc/sysconfig/network-scripts/rule-$DEVICE_IP_IFACE" + FILES="$FILES /etc/sysconfig/network-scripts/rule6-$DEVICE_IP_IFACE" + if [ "$profile" != "$DEVICE_IP_IFACE" ]; then + FILES="$FILES /etc/sysconfig/network-scripts/rule-$profile" + FILES="$FILES /etc/sysconfig/network-scripts/rule6-$profile" + fi + for file in $FILES; do + if [ -f "$file" ]; then + proto= + if [ "$file" != "${file##*/rule6-}" ]; then + proto="-6" + fi + { cat "$file" ; echo ; } | while read line; do + if [[ ! "$line" =~ $MATCH ]]; then + /sbin/ip $proto rule del $line + fi + done + fi + done ;; esac -- cgit 1.3.0-6-gf8a5