From: Michael Tremer Date: Sun, 6 Aug 2017 12:18:20 +0000 (+0000) Subject: Use "ip link set X master" where ever we can X-Git-Tag: 009~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0e523702da3b37d95875a95d99b432e8620d422d;p=network.git Use "ip link set X master" where ever we can Signed-off-by: Michael Tremer --- diff --git a/src/functions/functions.batman-adv b/src/functions/functions.batman-adv index 21a079af..23e88578 100644 --- a/src/functions/functions.batman-adv +++ b/src/functions/functions.batman-adv @@ -58,7 +58,7 @@ batman_adv_attach() { # Make sure, batman is running. batman_adv_start - __device_set_file "${port}" "batman_adv/mesh_iface" "${device}" + device_set_master "${port}" "${device}" } batman_adv_detach() { diff --git a/src/functions/functions.bonding b/src/functions/functions.bonding index f81a8371..3375bdc7 100644 --- a/src/functions/functions.bonding +++ b/src/functions/functions.bonding @@ -143,16 +143,12 @@ bonding_enslave_device() { fi # Add it - cmd ip link set "${slave}" master "${device}" - local ret=$? - - if [ ${ret} -eq ${EXIT_OK} ]; then - log DEBUG "Successfully enslaved '${slave}' to '${device}'" - else + if ! device_set_master "${slave}" "${device}"; then log ERROR "Could not enslave '${slave}' to '${device}'" return ${EXIT_ERROR} fi + log DEBUG "Successfully enslaved '${slave}' to '${device}'" return ${EXIT_OK} } diff --git a/src/functions/functions.bridge b/src/functions/functions.bridge index de1ec226..5b817fbb 100644 --- a/src/functions/functions.bridge +++ b/src/functions/functions.bridge @@ -113,16 +113,13 @@ bridge_attach_device() { device_adjust_mtu "${device}" "${bridge}" # Actually connect bridge and device. - cmd ip link set ${device} master ${bridge} - local ret=$? - - if [ ${ret} -eq ${EXIT_OK} ]; then - log DEBUG "bridge: device '${device}' has been attached to bridge '${bridge}'" - else - log ERROR "bridge: could not attach device '${device}' to bridge '${bridge}': ${ret}" + if ! device_set_master "${device}" "${bridge}"; then + log ERROR "Could not attach ${device} to bridge ${bridge}" + return ${EXIT_ERROR} fi - return ${ret} + log DEBUG "${device} has been attached to bridge ${bridge}" + return ${EXIT_OK} } bridge_detach_device() { diff --git a/src/functions/functions.device b/src/functions/functions.device index 6f79a7f6..897f812d 100644 --- a/src/functions/functions.device +++ b/src/functions/functions.device @@ -580,6 +580,33 @@ device_set_name() { fi } +device_set_master() { + local device="${1}" + assert isset device + + local master="${2}" + assert isset master + + if ! cmd ip link set "${device}" master "${master}"; then + log ERROR "Could not set master ${master} for device ${device}" + return ${EXIT_ERROR} + fi + + return ${EXIT_OK} +} + +device_remove_master() { + local device="${1}" + assert isset device + + if ! cmd ip link set "${device}" nomaster; then + log ERROR "Could not remove master for device ${device}" + return ${EXIT_ERROR} + fi + + return ${EXIT_OK} +} + # Set device up device_set_up() { assert [ $# -eq 1 ]