mirror of
https://github.com/dockur/proxmox.git
synced 2026-07-27 16:54:51 +07:00
fix: Parse Debian ipcalc output correctly (#79)
This commit is contained in:
+46
-32
@@ -36,38 +36,6 @@ isNAT() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
maskToCIDR() {
|
|
||||||
|
|
||||||
local mask="$1"
|
|
||||||
local prefix=""
|
|
||||||
|
|
||||||
prefix=$(ipcalc -p 0.0.0.0 "$mask" | awk -F= '/^PREFIX=/ { print $2 }')
|
|
||||||
|
|
||||||
if [[ ! "$prefix" =~ ^[0-9]+$ ]] || (( prefix < 1 || prefix > 30 )); then
|
|
||||||
error "Invalid MASK: '$mask'"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$prefix"
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
networkCIDR() {
|
|
||||||
|
|
||||||
local ip="$1"
|
|
||||||
local network=""
|
|
||||||
|
|
||||||
network=$(ipcalc -n "$ip" "$MASK" | awk -F= '/^NETWORK=/ { print $2 }')
|
|
||||||
|
|
||||||
if [ -z "$network" ]; then
|
|
||||||
error "Failed to calculate network address from IP '$ip' and netmask '$MASK'."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$network/$PREFIX"
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
getMTU() {
|
getMTU() {
|
||||||
|
|
||||||
local dev="$1"
|
local dev="$1"
|
||||||
@@ -120,6 +88,52 @@ gatewayMAC() {
|
|||||||
echo "$mac" | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\).*$/02:\1:\2:\3:\4:\5/'
|
echo "$mac" | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\).*$/02:\1:\2:\3:\4:\5/'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
maskToCIDR() {
|
||||||
|
|
||||||
|
local mask="$1"
|
||||||
|
local prefix=""
|
||||||
|
|
||||||
|
prefix=$(ipcalc -n -b "0.0.0.0/$mask" 2>/dev/null | awk '
|
||||||
|
/^Netmask:/ {
|
||||||
|
for (i = 1; i <= NF; i++) {
|
||||||
|
if ($i == "=") {
|
||||||
|
print $(i + 1)
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
')
|
||||||
|
|
||||||
|
if [[ ! "$prefix" =~ ^[0-9]+$ ]] || (( prefix < 1 || prefix > 30 )); then
|
||||||
|
error "Invalid MASK: '$mask'"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$prefix"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
networkCIDR() {
|
||||||
|
|
||||||
|
local ip="$1"
|
||||||
|
local network=""
|
||||||
|
|
||||||
|
network=$(ipcalc -n -b "$ip/$MASK" 2>/dev/null | awk '
|
||||||
|
/^Network:/ {
|
||||||
|
print $2
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
')
|
||||||
|
|
||||||
|
if [[ ! "$network" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}/[0-9]+$ ]]; then
|
||||||
|
error "Failed to calculate network address from IP '$ip' and netmask '$MASK'."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$network"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
detectInterface() {
|
detectInterface() {
|
||||||
|
|
||||||
if [ -n "$DEV" ]; then
|
if [ -n "$DEV" ]; then
|
||||||
|
|||||||
Reference in New Issue
Block a user