diff options
Diffstat (limited to 'ifplugd/netcfg.action')
-rw-r--r--[-rwxr-xr-x] | ifplugd/netcfg.action | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/ifplugd/netcfg.action b/ifplugd/netcfg.action index cffcdf5..0c081df 100755..100644 --- 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 |