diff --git a/lib/ulib/ipcalc b/lib/ulib/ipcalc index 9616095..61ca049 100644 --- a/lib/ulib/ipcalc +++ b/lib/ulib/ipcalc @@ -83,6 +83,32 @@ function ipcalc_netmask() { return 0 } +function ipcalc_network() { + # Calculer l'adresse de réseau correspondant à l'adresse ip $1. Le masque + # de sous-réseau peut-être indiqué dans l'adresse ip avec le suffixe /n ou + # /x.x.x.x ou donné dans l'argument $2. Seuls les suffixes 0, 8, 16, 24, 32 + # sont supportés. + # Retourner 1 si un erreur s'est produite, par exemple si l'adresse ou le + # suffixe sont invalides ou non supportés. + [ -n "$1" ] || return + local ip mask + + ipcalc_splitipmask "$1" ip mask + [ -n "$mask" ] || mask="$2" + [ -n "$mask" ] || mask=24 + + ip="$(ipcalc_checkip "$ip")" || return + mask="$(ipcalc_checkmask "$mask")" || return + + case "$mask" in + 0) echo "0.0.0.0";; + 8) ip="${ip%.*.*.*}"; echo "$ip.0.0.0";; + 16) ip="${ip%.*.*}"; echo "$ip.0.0";; + 24) ip="${ip%.*}"; echo "$ip.0";; + 32) echo "$ip";; + esac +} + function ipcalc_broadcast() { # Calculer l'adresse de broadcast correspondant à l'adresse ip $1. Le masque # de sous-réseau peut-être indiqué dans l'adresse ip avec le suffixe /n ou