package ganserv import ( "net" ) //Generate all ip address from a CIDR func GetAllAddressFromCIDR(cidr string) ([]string, error) { ip, ipnet, err := net.ParseCIDR(cidr) if err != nil { return nil, err } var ips []string for ip := ip.Mask(ipnet.Mask); ipnet.Contains(ip); inc(ip) { ips = append(ips, ip.String()) } // remove network address and broadcast address return ips[1 : len(ips)-1], nil } func inc(ip net.IP) { for j := len(ip) - 1; j >= 0; j-- { ip[j]++ if ip[j] > 0 { break } } } func isValidIPAddr(ipAddr string) bool { ip := net.ParseIP(ipAddr) if ip == nil { return false } return true } func ipWithinCIDR(ipAddr string, cidr string) bool { // Parse the CIDR string _, ipNet, err := net.ParseCIDR(cidr) if err != nil { return false } // Parse the IP address ip := net.ParseIP(ipAddr) if ip == nil { return false } // Check if the IP address is in the CIDR range return ipNet.Contains(ip) }