cidr/main.go

34 lines
624 B
Go
Raw Permalink Normal View History

2018-03-30 09:38:01 -07:00
package main
import (
"fmt"
"net"
"os"
)
2018-03-30 11:05:57 -07:00
const usage = "cidr <cidr>[, cidr2,...,cidrN]"
2018-03-30 09:38:01 -07:00
func main() {
if len(os.Args) < 2 {
fmt.Fprintf(os.Stderr, "usage: %v\n", usage)
os.Exit(1)
}
nets := []*net.IPNet{}
for _, sn := range os.Args[1:] {
_, net, err := net.ParseCIDR(sn)
if err != nil {
fmt.Fprintf(os.Stderr, "%v invalid: %v\n", sn, err)
os.Exit(1)
}
nets = append(nets, net)
2018-03-30 09:43:37 -07:00
a, b := AddressRange(net)
l := AddressCount(net)
2018-03-30 09:38:01 -07:00
fmt.Printf("%-16s %-16s %10d\n", a, b, l)
}
2018-03-30 09:43:37 -07:00
if err := NoOverlap(nets); err != nil {
2018-03-30 09:38:01 -07:00
fmt.Fprintf(os.Stderr, "overlaping networks: %v\n", err)
os.Exit(1)
}
}