12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 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)
- }
|