41 lines
950 B
Go
41 lines
950 B
Go
package main
|
|
|
|
import (
|
|
"net"
|
|
)
|
|
|
|
var (
|
|
Networks = map[string][]net.IPNet{
|
|
"uwaterloo": []net.IPNet{
|
|
net.IPNet{ net.ParseIP("10.0.0.0"), net.CIDRMask(8, 32), },
|
|
net.IPNet{ net.ParseIP("129.97.0.0"), net.CIDRMask(16, 32), },
|
|
net.IPNet{ net.ParseIP("172.16.0.0"), net.CIDRMask(12, 32), },
|
|
net.IPNet{ net.ParseIP("192.168.0.0"), net.CIDRMask(16, 32), },
|
|
net.IPNet{ net.ParseIP("2620:101:f000::"), net.CIDRMask(47, 128), },
|
|
net.IPNet{ net.ParseIP("fd74:3ae8:4dde::"), net.CIDRMask(47, 128), },
|
|
},
|
|
}
|
|
)
|
|
|
|
func IdentifyNetwork(ip net.IP) string {
|
|
for name, nets := range Networks {
|
|
for _, net := range nets {
|
|
if net.Contains(ip) {
|
|
return name
|
|
}
|
|
}
|
|
}
|
|
|
|
return "other"
|
|
}
|
|
|
|
func IdentifyIPProtocol(ip net.IP) string {
|
|
if ip.To4() != nil {
|
|
return "ipv4"
|
|
} else if ip.To16() != nil {
|
|
return "ipv6"
|
|
}
|
|
|
|
return "other"
|
|
}
|