// Copyright 2020 Shivaram Lingamneni // 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 }