diff --git a/main.go b/main.go new file mode 100644 index 0000000..fe19c37 --- /dev/null +++ b/main.go @@ -0,0 +1,35 @@ +package main + +import ( + "fmt" + "net" + "os" + + "github.com/apparentlymart/go-cidr/cidr" +) + +const usage = "sn " + +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) + a, b := cidr.AddressRange(net) + l := cidr.AddressCount(net) + fmt.Printf("%-16s %-16s %10d\n", a, b, l) + } + if err := cidr.NoOverlap(nets); err != nil { + fmt.Fprintf(os.Stderr, "overlaping networks: %v\n", err) + os.Exit(1) + } +}