Documentation
¶
Overview ¶
Functions for working with subnets
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddressCount ¶
Number of addresses in subnet with given bit mask size. Panics if mask bits exceeds width of family or is less than zero.
Example ¶
printSubnetSizesForMasks(ip.V4()) printSubnetSizesForMasks(ip.V6())
Output:
func Mask ¶
Mask of given bit size. Panics if mask bits exceeds ip.Family.Width or is less than zero.
Example ¶
package main import ( "github.com/ipfreely-uk/go/ip" "github.com/ipfreely-uk/go/ip/subnet" ) func main() { network := ip.V4().MustFromBytes(192, 168, 0, 0) maskBits := 24 mask := subnet.Mask(ip.V4(), maskBits) println("First:", network.String()) println("Last:", mask.Not().Or(network).String()) println("Mask:", mask.String()) }
Output:
Example (Second) ¶
package main import ( "fmt" "github.com/ipfreely-uk/go/ip" "github.com/ipfreely-uk/go/ip/subnet" ) func main() { printAllMasks(ip.V4()) printAllMasks(ip.V6()) } func printAllMasks[A ip.Address[A]](f ip.Family[A]) { println(fmt.Sprintf("IPv%d", f.Version())) for bits := 0; bits <= f.Width(); bits++ { mask := subnet.Mask(f, bits) cidrTail := fmt.Sprintf("/%d", bits) println(mask.String(), "==", cidrTail) } }
Output:
func MaskSize ¶
Mask size in bits. Returns between 0 and ip.Family bit width inclusive if first and last form valid CIDR block. Returns -1 if first and last do not form valid CIDR block.
Example ¶
package main import ( "fmt" "github.com/ipfreely-uk/go/ip" "github.com/ipfreely-uk/go/ip/subnet" ) func main() { family := ip.V4() first := family.MustFromBytes(192, 0, 2, 0) last := family.MustFromBytes(192, 0, 2, 255) maskBits := subnet.MaskSize(first, last) mask := subnet.Mask(family, maskBits) println(fmt.Sprintf("/%d", maskBits), "==", mask.String()) }
Output:
Example (Second) ¶
package main import ( "fmt" "github.com/ipfreely-uk/go/ip" "github.com/ipfreely-uk/go/ip/subnet" ) func main() { family := ip.V4() first := family.MustFromBytes(192, 0, 2, 0) last := family.MustFromBytes(192, 0, 2, 255) maskBits := subnet.MaskSize(first, last) if maskBits != -1 { cidrNotation := fmt.Sprintf("%s/%d", first.String(), maskBits) println(first.String(), "-", last.String(), " is valid subnet ", cidrNotation) } else { println(first.String(), "-", last.String(), " is not a valid subnet") } }
Output:
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.