Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "bufio"
- "flag"
- "fmt"
- "net/netip"
- "os"
- "go4.org/netipx"
- )
- var input = flag.String("f", "", "Specify input file")
- func main() {
- flag.Parse()
- var err error
- f := os.Stdin
- if *input != "" {
- if f, err = os.Open(*input); err != nil {
- panic(err)
- }
- defer f.Close()
- }
- scanner := bufio.NewScanner(f)
- scanner.Split(bufio.ScanLines)
- builder := &netipx.IPSetBuilder{}
- for i := 0; scanner.Scan(); i++ {
- str := scanner.Text()
- prefix, err := netip.ParsePrefix(str)
- if err != nil {
- fmt.Printf("unable to parse line %d: %s", i, str)
- return
- }
- builder.AddPrefix(prefix)
- }
- if err := scanner.Err(); err != nil {
- panic(err)
- }
- set, err := builder.IPSet()
- if err != nil {
- panic(err)
- }
- for _, p := range set.Prefixes() {
- fmt.Println(p)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement