mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2025-12-06 09:12:45 +01:00
Check CIDR validity completely
This commit is contained in:
@@ -393,14 +393,15 @@ valid_cidr() {
|
||||
# Verify there is a backslash in the string
|
||||
echo "$1" | grep -qP "^[^/]+/[^/]+$" || return 1
|
||||
|
||||
local cidr
|
||||
local cidr="$1"
|
||||
local ip
|
||||
|
||||
cidr=$(echo "$1" | sed 's/.*\///')
|
||||
ip=$(echo "$1" | sed 's/\/.*//' )
|
||||
ip=$(echo "$cidr" | sed 's/\/.*//' )
|
||||
|
||||
if valid_ip4 "$ip"; then
|
||||
[[ $cidr =~ ([0-9]|[1-2][0-9]|3[0-2]) ]] && return 0 || return 1
|
||||
local ip1 ip2 ip3 ip4 N
|
||||
IFS="./" read -r ip1 ip2 ip3 ip4 N <<< "$cidr"
|
||||
ip_total=$((ip1 * 256 ** 3 + ip2 * 256 ** 2 + ip3 * 256 + ip4))
|
||||
[[ $((ip_total % 2**(32-N))) == 0 ]] && return 0 || return 1
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user