dispatcher: fix ifcfg-rh example dispatcher script (rh #1160013)
authorDan Winship <danw@redhat.com>
Tue, 27 Jan 2015 17:35:11 +0000 (12:35 -0500)
committerDan Winship <danw@redhat.com>
Tue, 27 Jan 2015 18:51:45 +0000 (13:51 -0500)
Routing table entries for a device get flushed when the device is
deactivated, but rules table entries don't, so we have to flush them
by hand.

contrib/fedora/rpm/NetworkManager.spec
examples/dispatcher/10-ifcfg-rh-routes.sh

index 70884ff..cf95985 100644 (file)
@@ -454,7 +454,8 @@ mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/conf.d
 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/dispatcher.d
 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/dispatcher.d/pre-up.d
 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/dispatcher.d/pre-down.d
-%{__cp} examples/dispatcher/10-ifcfg-rh-routes.sh $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/dispatcher.d/pre-up.d
+%{__cp} examples/dispatcher/10-ifcfg-rh-routes.sh $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/dispatcher.d/
+%{__ln_s} ../10-ifcfg-rh-routes.sh $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/dispatcher.d/pre-up.d/
 
 %{__mkdir_p} $RPM_BUILD_ROOT%{_datadir}/gnome-vpn-properties
 
index 78f009e..75b8c5e 100755 (executable)
@@ -5,7 +5,12 @@
 # interfaces that have routing rules associated with them that can't
 # be expressed by NMSettingIPConfig. (Eg, policy-based routing.)
 
-# This should be installed in dispatcher.d/pre-up.d/
+# This should be installed in both dispatcher.d/ and
+# dispatcher.d/pre-up.d/
+
+if [ "$2" != "pre-up" -a "$2" != "down" ]; then
+    exit 0
+fi
 
 dir=$(dirname "$CONNECTION_FILENAME")
 if [ "$dir" != "/etc/sysconfig/network-scripts" ]; then
@@ -15,7 +20,15 @@ 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
-    /etc/sysconfig/network-scripts/ifup-routes "$DEVICE_IP_IFACE" "$profile"
+if ! [ -f "$dir/rule-$profile" -o -f "$dir/rule6-$profile" ]; then
+    exit 0
 fi
+
+case "$2" in
+    pre-up)
+        /etc/sysconfig/network-scripts/ifup-routes "$DEVICE_IP_IFACE" "$profile"
+        ;;
+    down)
+        /etc/sysconfig/network-scripts/ifdown-routes "$DEVICE_IP_IFACE" "$profile"
+        ;;
+esac