Go library for handling IP addresses and subnets, both IPv4 and IPv6
IP address and network manipulation, CIDR, operations, iterations, containment checks, longest prefix match, subnetting, and data structures, with polymporphic code
Version | Notes |
---|---|
1.4.0 | Requires Go 1.12 or higher |
go get github.com/seancfoley/[email protected]
Also available as a Java library from the IPAddress repository
starting with address or subnet strings
import "github.com/seancfoley/ipaddress-go/ipaddr"
ipv6AddrStr := ipaddr.NewIPAddressString("a:b:c:d::a:b/64")
if ipAddr, err := ipv6AddrStr.ToAddress(); err != nil {
// err.Error() has validation error
} else {
// use the address
}
...or avoid errors, checking for nil:
str := ipaddr.NewIPAddressString("a:b:c:d:e-f:f:1.2-3.3.4/64")
addr := str.GetAddress()
if addr != nil {
// use address
}
starting with host name strings
hostStr := "[::1]"
host := ipaddr.NewHostName(hostStr)
err := host.Validate()
if err == nil {
if host.IsAddress() {
fmt.Println("address: " + host.AsAddress().String())
} else {
fmt.Println("host name: " + host.String())
}
// use host
} else {
fmt.Println(err.Error())
}