* dhcpd: check if subnet mask is correct

This commit is contained in:
Simon Zolin
2019-07-17 11:55:21 +03:00
parent 0fb42e5c71
commit 79a5c920a4
3 changed files with 30 additions and 1 deletions

View File

@@ -1,6 +1,7 @@
package dhcpd
import (
"encoding/binary"
"fmt"
"net"
@@ -65,3 +66,19 @@ func parseIPv4(text string) (net.IP, error) {
}
return result.To4(), nil
}
// Return TRUE if subnet mask is correct (e.g. 255.255.255.0)
func isValidSubnetMask(mask net.IP) bool {
var n uint32
n = binary.BigEndian.Uint32(mask)
for i := 0; i != 32; i++ {
if n == 0 {
break
}
if (n & 0x80000000) == 0 {
return false
}
n <<= 1
}
return true
}