module ipcalc: ajout de ipcalc_network()

This commit is contained in:
Jephté Clain 2016-12-30 18:14:53 +04:00
parent fbc1a5cc9b
commit 6366256c52
1 changed files with 26 additions and 0 deletions

View File

@ -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