]> git.ipfire.org Git - people/ms/network.git/blobdiff - src/hooks/ports/bonding
hooks: Automatically set defaults for all port hooks
[people/ms/network.git] / src / hooks / ports / bonding
index 36bcf6c7dc76fa4036c8c67f35f7e8f1376366d9..f0572c3f5b496f45b3df8b33d55549bf412ae34b 100644 (file)
 
 . /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
@@ -39,14 +38,32 @@ hook_parse_cmdline() {
        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}")
 
@@ -175,6 +192,13 @@ hook_up() {
 
        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}"