Add new ipv4 address w/ cidr mask validator

This commit is contained in:
William Wernert
2021-11-17 12:41:25 -05:00
parent d143a309a1
commit 262d2023b5
4 changed files with 35 additions and 2 deletions

View File

@@ -451,6 +451,23 @@ valid_ip4() {
echo "$ip" | grep -qP '^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' && return 0 || return 1
}
valid_ip4_cidr_mask() {
# Verify there is a backslash in the string
echo "$1" | grep -qP "^[^/]+/[^/]+$" || return 1
local cidr
local ip
cidr=$(echo "$1" | sed 's/.*\///')
ip=$(echo "$1" | sed 's/\/.*//' )
if valid_ip4 "$ip"; then
[[ $cidr =~ ^([0-9]|[1-2][0-9]|3[0-2])$ ]] && return 0 || return 1
else
return 1
fi
}
valid_int() {
local num=$1
local min=${2:-1}

View File

@@ -449,7 +449,7 @@ collect_hostname_validate() {
collect_int_ip_mask() {
whiptail_management_interface_ip_mask
while ! valid_cidr "$manager_ip_mask"; do
while ! valid_ip4_cidr_mask "$manager_ip_mask"; do
whiptail_invalid_input
whiptail_management_interface_ip_mask "$manager_ip_mask"
done

View File

@@ -1008,7 +1008,7 @@ whiptail_management_interface_ip_mask() {
manager_ip_mask=$(whiptail --title "$whiptail_title" --inputbox "$msg" 12 60 "$1" 3>&1 1>&2 2>&3)
local exitstatus=$?
# whiptail_check_exitstatus $exitstatus
whiptail_check_exitstatus $exitstatus
}
whiptail_management_nic() {

View File

@@ -80,6 +80,22 @@ test_fun 1 valid_cidr ""
sleep 0.15
header "ip4 with CIDR mask"
test_fun 0 valid_ip4_cidr_mask "192.168.1.12/24"
test_fun 0 valid_ip4_cidr_mask "192.168.1.12/16"
test_fun 1 valid_ip4_cidr_mask "192.168.9.12/54"
test_fun 1 valid_cidr "192.168.1.0"
test_fun 1 valid_ip4 "192.168.1.0/"
test_fun 1 valid_ip4 "/24"
test_fun 1 valid_cidr ""
header "CIDR list"
test_fun 0 valid_cidr_list "10.0.0.0/8,192.168.0.0/16,172.16.0.0/12"