diff options
Diffstat (limited to 'debian/network-manager-dispatcher.script')
| -rw-r--r-- | debian/network-manager-dispatcher.script | 88 |
1 files changed, 57 insertions, 31 deletions
diff --git a/debian/network-manager-dispatcher.script b/debian/network-manager-dispatcher.script index 5869bda5..ebadfd10 100644 --- a/debian/network-manager-dispatcher.script +++ b/debian/network-manager-dispatcher.script @@ -9,42 +9,68 @@ if [ -z "$1" ]; then exit 1; fi +if [ -n "$IP4_NUM_ADDRESSES" ] && [ "$IP4_NUM_ADDRESSES" -gt 0 ]; then + ADDRESS_FAMILIES="$ADDRESS_FAMILIES inet" +fi +if [ -n "$IP6_NUM_ADDRESSES" ] && [ "$IP6_NUM_ADDRESSES" -gt 0 ]; then + ADDRESS_FAMILIES="$ADDRESS_FAMILIES inet6" +fi + +# If we have a VPN connection ignore the underlying IP address(es) +if [ "$2" = "vpn-up" ] || [ "$2" = "vpn-down" ]; then + ADDRESS_FAMILIES="" +fi + +if [ -n "$VPN_IP4_NUM_ADDRESSES" ] && [ "$VPN_IP4_NUM_ADDRESSES" -gt 0 ]; then + ADDRESS_FAMILIES="$ADDRESS_FAMILIES inet" +fi +if [ -n "$VPN_IP6_NUM_ADDRESSES" ] && [ "$VPN_IP6_NUM_ADDRESSES" -gt 0 ]; then + ADDRESS_FAMILIES="$ADDRESS_FAMILIES inet6" +fi + +# We're probably bringing the interface down. +[ -n "$ADDRESS_FAMILIES" ] || ADDRESS_FAMILIES="inet" + # Fake ifupdown environment export IFACE="$1" export LOGICAL="$1" -export ADDRFAM="NetworkManager" export METHOD="NetworkManager" export VERBOSITY="0" -# Run the right scripts -case "$2" in - up|vpn-up) - export MODE="start" - export PHASE="post-up" - exec run-parts /etc/network/if-up.d - ;; - down|vpn-down) - export MODE="stop" - export PHASE="post-down" - exec run-parts /etc/network/if-post-down.d - ;; +for i in $ADDRESS_FAMILIES; do + + export ADDRFAM="$i" + + # Run the right scripts + case "$2" in + up|vpn-up) + export MODE="start" + export PHASE="post-up" + run-parts /etc/network/if-up.d + ;; + down|vpn-down) + export MODE="stop" + export PHASE="post-down" + run-parts /etc/network/if-post-down.d + ;; # pre-up/pre-down not implemented. See # https://bugzilla.gnome.org/show_bug.cgi?id=387832 -# pre-up) -# export MODE="start" -# export PHASE="pre-up" -# exec run-parts /etc/network/if-pre-up.d -# ;; -# pre-down) -# export MODE="stop" -# export PHASE="pre-down" -# exec run-parts /etc/network/if-down.d -# ;; - hostname|dhcp4-change|dhcp6-change) - # Do nothing - ;; - *) - echo "$0: called with unknown action \`$2'" 1>&2 - exit 1 - ;; -esac +# pre-up) +# export MODE="start" +# export PHASE="pre-up" +# run-parts /etc/network/if-pre-up.d +# ;; +# pre-down) +# export MODE="stop" +# export PHASE="pre-down" +# run-parts /etc/network/if-down.d +# ;; + hostname|dhcp4-change|dhcp6-change) + # Do nothing + ;; + *) + echo "$0: called with unknown action \`$2'" 1>&2 + exit 1 + ;; + esac +done |