Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
VLAN_PORT_INTERFIX="v"
+vlan_valid_id() {
+ local id="${1}"
+
+ # Must be an integer
+ if ! isinteger id; then
+ return ${EXIT_FALSE}
+ fi
+
+ # Must be between 1 and 4095
+ if [ ${id} -ge 1 ] && [ ${id} -le 4096 ]; then
+ return ${EXIT_TRUE}
+ fi
+
+ # Otherwise this is invalid
+ return ${EXIT_FALSE}
+}
+
vlan_create() {
local device="${1}"
shift
assert isset device
local address
- local id
+ local id=1
local parent
# Parse command line arguments
return ${EXIT_ERROR}
fi
+ # Check VLAN ID
+ if ! vlan_valid_id "${id}"; then
+ log ERROR "Invalid VLAN ID: ${id}"
+ return ${EXIT_ERROR}
+ fi
+
# Check if a device with the name does already exist
if device_exists "${device}"; then
log ERROR "Device '${device}' already exists"
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() {
;;
--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}")