esac
}
+device_set_duplex() {
+ local device="${1}"
+ assert isset device
+
+ local duplex="${2}"
+ assert isset duplex
+
+ if ! cmd_quiet ethtool --change "${device}" duplex "${duplex}"; then
+ log ERROR "Could not set ${device} to ${duplex}-duplex mode"
+ return ${EXIT_ERROR}
+ fi
+
+ log DEBUG "Set ${device} to ${duplex}-duplex mode"
+ return ${EXIT_OK}
+}
+
device_get_link_string() {
local device="${1}"
assert isset device
# Selectable speeds in MBit/s
VALID_SPEEDS="10000 1000 100 10"
+# We can run in full or half duplex
+VALID_DUPLEXES="full half"
+
# DEVICE equals the actual MAC address of the device.
# If ADDRESS is set, the device will get ADDRESS set for its MAC address.
-HOOK_SETTINGS="HOOK ADDRESS DEVICE MTU SPEED"
+HOOK_SETTINGS="HOOK ADDRESS DEVICE DUPLEX MTU SPEED"
hook_check_settings() {
assert ismac DEVICE
assert mtu_is_valid "ethernet" "${MTU}"
fi
+ if isset DUPLEX; then
+ assert isoneof DUPLEX ${VALID_DUPLEXES}
+ fi
+
if isset SPEED; then
assert isoneof SPEED ${VALID_SPEEDS}
fi
fi
;;
+ --duplex=*)
+ DUPLEX="$(cli_get_val "${1}")"
+
+ if ! isoneof DUPLEX ${VALID_DUPLEXES}; then
+ error "Invalid duplex mode: ${DUPLEX}"
+ return ${EXIT_ERROR}
+ fi
+ ;;
+
--mtu=*)
MTU="$(cli_get_val "${1}")"
device_set_mtu "${port}" "${DEFAULT_MTU}"
fi
+ # Set duplex mode
+ if isset DUPLEX; then
+ device_set_duplex "${port}" "${DUPLEX}"
+ fi
+
# Set speed
if isset SPEED; then
device_set_speed "${port}" "${SPEED}"