]> git.ipfire.org Git - people/ms/network.git/blobdiff - src/hooks/ports/vlan
vlan: Validate ID
[people/ms/network.git] / src / hooks / ports / vlan
index 97b69851742ea56c8cc9574a197d4f21e83395c4..7f99dbcdcf421a89b684515fd3b884baeb7b215d 100644 (file)
@@ -30,25 +30,11 @@ HOOK_SETTINGS=(
 PORT_PARENTS_VAR="PARENT_PORT"
 
 hook_check_settings() {
+       assert ismac ADDRESS
        assert isset PARENT_PORT
-       assert isinteger ID
-
-       if isset ADDRESS; then
-               assert ismac ADDRESS
-       fi
-
-       if [ ${ID} -gt 4096 ]; then
-               error "ID is greater than 4096."
-               exit ${EXIT_ERROR}
-       fi
 
-       local reserved
-       for reserved in 0 4095; do
-               if [ "${ID}" = "${reserved}" ]; then
-                       error "ID=${reserved} is reserved."
-                       exit ${EXIT_ERROR}
-               fi
-       done
+       assert isinteger ID
+       assert vlan_valid_id "${ID}"
 }
 
 hook_find_port_name() {
@@ -72,6 +58,12 @@ hook_parse_cmdline() {
                                ;;
                        --id=*)
                                ID=$(cli_get_val "${1}")
+
+                               # Validate VLAN ID
+                               if ! vlan_valid_id "${ID}"; then
+                                       error "Invalid VLAN ID: ${ID}"
+                                       return ${EXIT_CONF_ERROR}
+                               fi
                                ;;
                        --port=*)
                                PARENT_PORT=$(cli_get_val "${1}")