. /usr/lib/network/header-port
-HOOK_SETTINGS="HOOK ADDRESS MIIMON MODE SLAVES"
+HOOK_SETTINGS="ADDRESS MIIMON MODE OFFLOADING SLAVES"
-SLAVES=""
-MIIMON=100
-MODE="balance-rr"
+DEFAULT_MIIMON=100
+DEFAULT_MODE="balance-rr"
hook_check_settings() {
assert isset ADDRESS
while [ $# -gt 0 ]; do
case "${1}" in
--address=*)
- ADDRESS=$(cli_get_val "${1}")
+ ADDRESS="$(cli_get_val "${1}")"
+
+ if ! mac_is_valid "${ADDRESS}"; then
+ error "Invalid MAC address: ${ADDRESS}"
+ return ${EXIT_ERROR}
+ fi
;;
+
--miimon=*)
MIIMON=$(cli_get_val "${1}")
;;
--mode=*)
MODE=$(cli_get_val "${1}")
;;
+ --offloading=*)
+ OFFLOADING="$(cli_get_val "${1}")"
+
+ if enabled OFFLOADING; then
+ OFFLOADING="on"
+ elif disabled OFFLOADING; then
+ OFFLOADING="off"
+ else
+ error "Invalid value for offloading: ${OFFLOADING}"
+ return ${EXIT_ERROR}
+ fi
+ ;;
+*)
local slave=$(cli_get_val "${1:1}")
port_settings_read "${port}" ${HOOK_SETTINGS}
+ # Auto-enable or disable hardware offloading
+ if ! isset OFFLOADING || enabled OFFLOADING; then
+ offloading_auto "${port}"
+ else
+ offloading_disable_all "${port}"
+ fi
+
# Execute the default action
hook_default_up "${port}"