SHA256
1
0
forked from pool/warewulf4

- check if automatic configured ip range doesn'y contain ip address

of ww4 host

OBS-URL: https://build.opensuse.org/package/show/network:cluster/warewulf4?expand=0&rev=42
This commit is contained in:
Christian Goll 2023-10-12 07:44:53 +00:00 committed by Git OBS Bridge
parent 1a1882fa33
commit bedbbac318
2 changed files with 35 additions and 1 deletions

View File

@ -27,6 +27,21 @@ network_address() {
echo $( IFS=.; echo "${octets[*]}" ) echo $( IFS=.; echo "${octets[*]}" )
} }
# Check if last Octed is in range
function is_ip_in_range() {
# split the ip addresses into their octets.
local ip_start_octets=($(echo $DYNSTART | tr "." " "))
local ip_end_octets=($(echo $DYNEND | tr "." " "))
local ip_address_octets=($(echo $1 | tr "." " "))
# compare the octets one at a time to see if the ip address is within the range.
if [[ ${ip_address_octets[3]} -lt ${ip_start_octets[3]} || ${ip_address_octets[3]} -gt ${ip_end_octets[3]} ]]; then
return 1
fi
# if we reach this point, the ip address is in the range.
return 0
}
echo "-- WW4 CONFIGURAION $* --" echo "-- WW4 CONFIGURAION $* --"
# Make sure that a ip address was defined for out network so that # Make sure that a ip address was defined for out network so that
@ -39,13 +54,21 @@ IP4NET=$(network_address "$IP4/$IP4PREFIX")
if [ "$IP4PREFIX" -gt 25 ] ; then if [ "$IP4PREFIX" -gt 25 ] ; then
echo "ERROR: warewulf does at least a /25 network for dynamic addresses" echo "ERROR: warewulf does at least a /25 network for dynamic addresses"
cat << EOF
ipaddr: $IP4
netmask: $IP4MASK
network: $IP4NET
range start: $DYNSTART
range end: $DYNEND
EOF
exit 1 exit 1
fi fi
DYNSIZE=20 DYNSIZE=20
DYNSTART=${IP4#*.*.*.} DYNSTART=${IP4#*.*.*.}
DYNSTART=$(( $DYNSTART + 2))
DYNPRE=${IP4%.*} DYNPRE=${IP4%.*}
DYNEND=$(( $DYNSTART + $DYNSIZE )) DYNEND=$(( $DYNSTART + $DYNSIZE + 1 ))
if [ $DYNEND -gt 254 ] ; then if [ $DYNEND -gt 254 ] ; then
DYNEND=$(( $IPNET + 2 + $DYNSIZE )) DYNEND=$(( $IPNET + 2 + $DYNSIZE ))
DYNSTART=$(( $IPNET + 2 )) DYNSTART=$(( $IPNET + 2 ))
@ -53,6 +76,11 @@ fi
DYNSTART="${DYNPRE}.${DYNSTART}" DYNSTART="${DYNPRE}.${DYNSTART}"
DYNEND="${DYNPRE}.${DYNEND}" DYNEND="${DYNPRE}.${DYNEND}"
if is_ip_in_range $IP4 ; then
echo "ERROR: ip address is in range for dynamic address, please set this manually"
exit 1
fi
if [ -e $WW4CONF ] ; then if [ -e $WW4CONF ] ; then
test -n $IP4 && sed -i 's/^ipaddr:.*/ipaddr: '$IP4'/' $WW4CONF test -n $IP4 && sed -i 's/^ipaddr:.*/ipaddr: '$IP4'/' $WW4CONF

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Thu Oct 12 07:43:32 UTC 2023 - Christian Goll <cgoll@suse.com>
- check if automatic configured ip range doesn'y contain ip address
of ww4 host
------------------------------------------------------------------- -------------------------------------------------------------------
Thu Sep 21 09:23:31 UTC 2023 - Christian Goll <cgoll@suse.com> Thu Sep 21 09:23:31 UTC 2023 - Christian Goll <cgoll@suse.com>