Documentation ¶
Overview ¶
Package netutil contains extensions to the net package.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CheckRelayIP ¶
CheckRelayIP reports whether an IP relayed from the given sender IP is a valid connection target.
There are four rules:
- Special network addresses are never valid.
- Loopback addresses are OK if relayed by a loopback host.
- LAN addresses are OK if relayed by a LAN host.
- All other addresses are always acceptable.
func IsSpecialNetwork ¶
IsSpecialNetwork reports whether an IP is located in a special-use network range This includes broadcast, multicast and documentation addresses.
func IsTemporaryError ¶
IsTemporaryError checks whether the given error should be considered temporary.
func SameNet ¶
SameNet reports whether two IP addresses have an equal prefix of the given bit length.
Example ¶
// This returns true because the IPs are in the same /24 network: fmt.Println(SameNet(24, net.IP{127, 0, 0, 1}, net.IP{127, 0, 0, 3})) // This call returns false: fmt.Println(SameNet(24, net.IP{127, 3, 0, 1}, net.IP{127, 5, 0, 3}))
Output: true false
Types ¶
type DistinctNetSet ¶
type DistinctNetSet struct { Subnet uint // number of common prefix bits Limit uint // maximum number of IPs in each subnet // contains filtered or unexported fields }
DistinctNetSet tracks IPs, ensuring that at most N of them fall into the same network range.
func (*DistinctNetSet) Add ¶
func (s *DistinctNetSet) Add(ip net.IP) bool
Add adds an IP address to the set. It returns false (and doesn't add the IP) if the number of existing IPs in the defined range exceeds the limit.
func (DistinctNetSet) Contains ¶
func (s DistinctNetSet) Contains(ip net.IP) bool
Contains whether the given IP is contained in the set.
func (DistinctNetSet) Len ¶
func (s DistinctNetSet) Len() int
Len returns the number of tracked IPs.
func (*DistinctNetSet) Remove ¶
func (s *DistinctNetSet) Remove(ip net.IP)
Remove removes an IP from the set.
func (DistinctNetSet) String ¶
func (s DistinctNetSet) String() string
String implements fmt.Stringer
type Netlist ¶
Netlist is a list of IP networks.
func ParseNetlist ¶
ParseNetlist parses a comma-separated list of CIDR masks. Whitespace and extra commas are ignored.
func (*Netlist) Add ¶
Add parses a CIDR mask and appends it to the list. It panics for invalid masks and is intended to be used for setting up static lists.
func (Netlist) MarshalTOML ¶
func (l Netlist) MarshalTOML() interface{}
MarshalTOML implements toml.MarshalerRec.
func (*Netlist) UnmarshalTOML ¶
UnmarshalTOML implements toml.UnmarshalerRec.