mirror of https://github.com/h44z/wg-portal.git
				
				
				
			
		
			
				
	
	
		
			38 lines
		
	
	
		
			787 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			787 B
		
	
	
	
		
			Go
		
	
	
	
| package common
 | |
| 
 | |
| import "net"
 | |
| 
 | |
| // BroadcastAddr returns the last address in the given network, or the broadcast address.
 | |
| func BroadcastAddr(n *net.IPNet) net.IP {
 | |
| 	// The golang net package doesn't make it easy to calculate the broadcast address. :(
 | |
| 	var broadcast net.IP
 | |
| 	if len(n.IP) == 4 {
 | |
| 		broadcast = net.ParseIP("0.0.0.0").To4()
 | |
| 	} else {
 | |
| 		broadcast = net.ParseIP("::")
 | |
| 	}
 | |
| 	for i := 0; i < len(n.IP); i++ {
 | |
| 		broadcast[i] = n.IP[i] | ^n.Mask[i]
 | |
| 	}
 | |
| 	return broadcast
 | |
| }
 | |
| 
 | |
| //  http://play.golang.org/p/m8TNTtygK0
 | |
| func IncreaseIP(ip net.IP) {
 | |
| 	for j := len(ip) - 1; j >= 0; j-- {
 | |
| 		ip[j]++
 | |
| 		if ip[j] > 0 {
 | |
| 			break
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // IsIPv6 check if given ip is IPv6
 | |
| func IsIPv6(address string) bool {
 | |
| 	ip := net.ParseIP(address)
 | |
| 	if ip == nil {
 | |
| 		return false
 | |
| 	}
 | |
| 	return ip.To4() == nil
 | |
| }
 |