Documentation
¶
Index ¶
- Variables
- func AddIPOffset(base *big.Int, offset int) net.IP
- func BigForIP(ip net.IP) *big.Int
- func GetIndexedIP(subnet *net.IPNet, index int) (net.IP, error)
- func IsDualStackCIDRStrings(cidrs []string) (bool, error)
- func IsDualStackCIDRs(cidrs []*net.IPNet) (bool, error)
- func IsDualStackIPStrings(ips []string) (bool, error)
- func IsDualStackIPs(ips []net.IP) (bool, error)
- func IsIPv4(netIP net.IP) bool
- func IsIPv4CIDR(cidr *net.IPNet) bool
- func IsIPv4CIDRString(cidr string) bool
- func IsIPv4String(ip string) bool
- func IsIPv6(netIP net.IP) bool
- func IsIPv6CIDR(cidr *net.IPNet) bool
- func IsIPv6CIDRString(cidr string) bool
- func IsIPv6String(ip string) bool
- func ParseCIDRs(cidrsString []string) ([]*net.IPNet, error)
- func ParsePort(port string, allowZero bool) (int, error)
- func RangeSize(subnet *net.IPNet) int64
- type Closeable
- type IPFamily
- type IPNetSet
- func (s IPNetSet) Delete(items ...*net.IPNet)
- func (s IPNetSet) Difference(s2 IPNetSet) IPNetSet
- func (s IPNetSet) Equal(s2 IPNetSet) bool
- func (s IPNetSet) Has(item *net.IPNet) bool
- func (s IPNetSet) HasAll(items ...*net.IPNet) bool
- func (s IPNetSet) Insert(items ...*net.IPNet)
- func (s IPNetSet) IsSuperset(s2 IPNetSet) bool
- func (s IPNetSet) Len() int
- func (s IPNetSet) StringSlice() []string
- type IPSet
- func (s IPSet) Delete(items ...net.IP)
- func (s IPSet) Difference(s2 IPSet) IPSet
- func (s IPSet) Equal(s2 IPSet) bool
- func (s IPSet) Has(item net.IP) bool
- func (s IPSet) HasAll(items ...net.IP) bool
- func (s IPSet) Insert(items ...net.IP)
- func (s IPSet) IsSuperset(s2 IPSet) bool
- func (s IPSet) Len() int
- func (s IPSet) StringSlice() []string
- type LocalPort
- type PortOpener
- type Protocol
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var ListenPortOpener listenPortOpener
ListenPortOpener opens ports by calling bind() and listen().
var ParseCIDRSloppy = forkednet.ParseCIDR
ParseCIDRSloppy is identical to Go's standard net.ParseCIDR, except that it allows leading '0' characters on numbers. Go used to allow this and then changed the behavior in 1.17. We're choosing to keep it for compat with potential stored values.
var ParseIPSloppy = forkednet.ParseIP
ParseIPSloppy is identical to Go's standard net.ParseIP, except that it allows leading '0' characters on numbers. Go used to allow this and then changed the behavior in 1.17. We're choosing to keep it for compat with potential stored values.
Functions ¶
func AddIPOffset ¶
AddIPOffset adds the provided integer offset to a base big.Int representing a net.IP NOTE: If you started with a v4 address and overflow it, you get a v6 result.
func GetIndexedIP ¶
GetIndexedIP returns a net.IP that is subnet.IP + index in the contiguous IP space.
func IsDualStackCIDRStrings ¶
IsDualStackCIDRStrings returns if - all are valid cidrs - at least one cidr from each family (v4 or v6)
func IsDualStackCIDRs ¶
IsDualStackCIDRs returns if - all are valid cidrs - at least one cidr from each family (v4 or v6)
func IsDualStackIPStrings ¶
IsDualStackIPStrings returns if - all are valid ips - at least one ip from each family (v4 or v6)
func IsDualStackIPs ¶
IsDualStackIPs returns if a slice of ips is: - all are valid ips - at least one ip from each family (v4 or v6)
func IsIPv4CIDRString ¶
IsIPv4CIDRString returns if cidr is IPv4. This assumes cidr is a valid CIDR.
func IsIPv6CIDRString ¶
IsIPv6CIDRString returns if cidr is IPv6. This assumes cidr is a valid CIDR.
func ParseCIDRs ¶
ParseCIDRs parses a list of cidrs and return error if any is invalid. order is maintained
Types ¶
type IPFamily ¶
type IPFamily string
IPFamily refers to a specific family if not empty, i.e. "4" or "6".
const ( IPv4 IPFamily = "4" IPv6 = "6" )
Constants for valid IPFamilys:
type IPNetSet ¶
IPNetSet maps string to net.IPNet.
func ParseIPNets ¶
ParseIPNets parses string slice to IPNetSet.
func (IPNetSet) Difference ¶
Difference returns a set of objects that are not in s2 For example: s1 = {a1, a2, a3} s2 = {a1, a2, a4, a5} s1.Difference(s2) = {a3} s2.Difference(s1) = {a4, a5}
func (IPNetSet) Equal ¶
Equal returns true if and only if s1 is equal (as a set) to s2. Two sets are equal if their membership is identical. (In practice, this means same elements, order doesn't matter)
func (IPNetSet) IsSuperset ¶
IsSuperset returns true if and only if s1 is a superset of s2.
func (IPNetSet) StringSlice ¶
StringSlice returns a []string with the String representation of each element in the set. Order is undefined.
type IPSet ¶
IPSet maps string to net.IP
func ParseIPSet ¶
ParseIPSet parses string slice to IPSet
func (IPSet) Difference ¶
Difference returns a set of objects that are not in s2 For example: s1 = {a1, a2, a3} s2 = {a1, a2, a4, a5} s1.Difference(s2) = {a3} s2.Difference(s1) = {a4, a5}
func (IPSet) Equal ¶
Equal returns true if and only if s1 is equal (as a set) to s2. Two sets are equal if their membership is identical. (In practice, this means same elements, order doesn't matter)
func (IPSet) IsSuperset ¶
IsSuperset returns true if and only if s1 is a superset of s2.
func (IPSet) StringSlice ¶
StringSlice returns a []string with the String representation of each element in the set. Order is undefined.
type LocalPort ¶
type LocalPort struct { // Description is an arbitrary string. Description string // IP is the IP address part of a given local port. // If this string is empty, the port binds to all local IP addresses. IP string // If IPFamily is not empty, the port binds only to addresses of this // family. // IF empty along with IP, bind to local addresses of any family. IPFamily IPFamily // Port is the port number. // A value of 0 causes a port to be automatically chosen. Port int // Protocol is the protocol, e.g. TCP Protocol Protocol }
LocalPort represents an IP address and port pair along with a protocol and potentially a specific IP family. A LocalPort can be opened and subsequently closed.
Example ¶
lp, err := NewLocalPort( "TCP port", "", IPv4, 443, TCP, ) if err != nil { panic(err) } port, err := ListenPortOpener.OpenLocalPort(lp) if err != nil { panic(err) } port.Close()
Output:
type PortOpener ¶
PortOpener can open a LocalPort and allows later closing it.