Re: [go-nuts] Detecting address family of net.IP

2016-06-17 Thread 'Paul Borman' via golang-nuts
Yes, To16 gives you a 16 byte version of an IP address, which can be IPv4 or IPv6. Normally it is sufficient to just call To4 to determine if it is an IPv4 address or not and assume if it is not it must be an IPv6 address: func IsIPv4(ip net.IP) bool { return ip.To4() != nil } func IsIPv6(ip net.

Re: [go-nuts] Detecting address family of net.IP

2016-06-16 Thread google
Ok, that's sufficient for me. It's only dangerous that if you switch the cases (To16() first) it does not work any more. Am Donnerstag, 16. Juni 2016 17:18:37 UTC+2 schrieb Paul Borman: > > Do you mean like To4 and To16 that are defined on net.IP? > > switch { > case ip.To4() != nil: > // is

Re: [go-nuts] Detecting address family of net.IP

2016-06-16 Thread 'Paul Borman' via golang-nuts
Do you mean like To4 and To16 that are defined on net.IP? switch { case ip.To4() != nil: // is an IPv4 address case ip.To16() != nil: // is an IPv6 address default: // is something else } On Wed, Jun 15, 2016 at 11:29 PM, wrote: > Hi, > > In many software projects I have to get the

[go-nuts] Detecting address family of net.IP

2016-06-16 Thread google
Hi, In many software projects I have to get the address family of a net.IP object. I always duplicate the following code: func isIPv4(ip net.IP) bool { return len(ip) == net.IPv4len || (len(ip) > 11 && isZeros(ip[0:10]) && ip[10] == 0xff && ip[11] == 0xff) } func isZeros(ip net.IP) bool {