From 0fc35b1462b3257653ebca6d2df65a6062a2194a Mon Sep 17 00:00:00 2001 From: James Rayner Date: Sun, 21 Nov 2010 13:08:34 +1100 Subject: FS#17190 - fix auto-wired, improve handling of static connections --- ifplugd/netcfg.action | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) mode change 100755 => 100644 ifplugd/netcfg.action diff --git a/ifplugd/netcfg.action b/ifplugd/netcfg.action old mode 100755 new mode 100644 index cffcdf5..0c081df --- a/ifplugd/netcfg.action +++ b/ifplugd/netcfg.action @@ -14,25 +14,32 @@ case "$2" in # it's difficult to tell if static succeeded # Also check profile is same iface and is right connection echo "up" + declare -a preferred_profiles + declare -a dhcp_profiles declare -a static_profiles for profile in $(list_profiles); do ( load_profile "$profile" - echo "loadin $profile" + echo "loading $profile" [[ "$INTERFACE" != "$1" ]] && continue [[ "$CONNECTION" != @(ethernet|ethernet-iproute) ]] && continue - if [[ "$IP" == "dhcp" ]]; then - netcfg "$profile" && exit 1 - else - static_profiles+=("$profile") - fi - exit 0 - ) || exit 0; done - for profile in "${static_profiles[@]}"; do ( - load_profile "$profile" - netcfg "$profile" && exit 1 - exit 0 - ) || exit 0; done - exit 1 + checkyesno "${AUTO_WIRED:-no}" && exit 1 # user preferred AUTO profile + [[ "$IP" == "dhcp" ]] && exit 2 # dhcp profile + exit 3 # static profile + ) + case $? in + 1) preferred_profiles+=("$profile");; + 2) dhcp_profiles+=("$profile");; + 3) static_profiles+=("$profile");; + esac + done + if [[ ${#preferred_profiles[@]} > 1 ]]; then + echo "AUTO_WIRED flag for $1 set in more than one profile (${preferred_profiles[*]})" + else + for profile in "${preferred_profiles[@]}" "${dhcp_profiles[@]}" "${static_profiles[@]}"; do ( + netcfg "$profile" && exit 1 + exit 0 + ) || exit 0; done + fi ;; down) if check_iface "$1"; then -- cgit v1.2.3-24-g4f1b