123456789101112131415161718192021222324252627282930313233 |
- // Copyright 2020 Shivaram Lingamneni <slingamn@cs.stanford.edu>
- // Released under the MIT license
-
- package flatip
-
- // begin ad-hoc utilities
-
- // ParseToNormalizedNet attempts to interpret a string either as an IP
- // network in CIDR notation, returning an IPNet, or as an IP address,
- // returning an IPNet that contains only that address.
- func ParseToNormalizedNet(netstr string) (ipnet IPNet, err error) {
- _, ipnet, err = ParseCIDR(netstr)
- if err == nil {
- return
- }
- ip, err := ParseIP(netstr)
- if err == nil {
- ipnet.IP = ip
- ipnet.PrefixLen = 128
- }
- return
- }
-
- // IPInNets is a convenience function for testing whether an IP is contained
- // in any member of a slice of IPNet's.
- func IPInNets(addr IP, nets []IPNet) bool {
- for _, net := range nets {
- if net.Contains(addr) {
- return true
- }
- }
- return false
- }
|