@@ -9,6 +9,11 @@ import (
99 "github.com/pkg/errors"
1010)
1111
12+ const (
13+ IPVersion4 = 4
14+ IPVersion6 = 6
15+ )
16+
1217// https://github.com/g0dsCookie/asn2ip
1318// https://www.radb.net/query/help
1419type Fetcher interface {
@@ -58,11 +63,13 @@ func readLine(conn net.Conn) (string, error) {
5863// more command refer here, https://www.radb.net/query/help
5964func fetch (conn net.Conn , as string , version int ) ([]* net.IPNet , error ) {
6065 cmd := ""
61- if version == 4 {
66+
67+ switch version {
68+ case IPVersion4 :
6269 cmd = fmt .Sprintf ("!gAS%s\n " , as )
63- } else if version == 6 {
70+ case IPVersion6 :
6471 cmd = fmt .Sprintf ("!6AS%s\n " , as )
65- } else {
72+ default :
6673 return nil , errors .Errorf ("unknown ip protocol version %d" , version )
6774 }
6875
@@ -85,7 +92,7 @@ func fetch(conn net.Conn, as string, version int) ([]*net.IPNet, error) {
8592 }
8693
8794 if state == "start" {
88- if len (line ) < = 0 {
95+ if len (line ) = = 0 {
8996 return nil , errors .Errorf ("empty response for as %s" , as )
9097 }
9198 if line [0 ] != 'A' {
@@ -118,7 +125,11 @@ func (f *fetcher) Fetch(ipv4, ipv6 bool, asn ...string) (map[string]map[string][
118125 }
119126 defer func () {
120127 // gracefully close socket
121- conn .Write ([]byte ("exit\n " ))
128+ _ , err := conn .Write ([]byte ("exit\n " ))
129+ if err != nil {
130+ panic (err ) // TODO
131+ }
132+
122133 conn .Close ()
123134 }()
124135
@@ -130,14 +141,14 @@ func (f *fetcher) Fetch(ipv4, ipv6 bool, asn ...string) (map[string]map[string][
130141 for _ , v := range asn {
131142 result [v ] = map [string ][]* net.IPNet {"ipv4" : {}, "ipv6" : {}}
132143 if ipv4 {
133- net , err := fetch (conn , v , 4 )
144+ net , err := fetch (conn , v , IPVersion4 )
134145 if err != nil {
135146 return nil , err
136147 }
137148 result [v ]["ipv4" ] = net
138149 }
139150 if ipv6 {
140- net , err := fetch (conn , v , 6 )
151+ net , err := fetch (conn , v , IPVersion6 )
141152 if err != nil {
142153 return nil , err
143154 }
0 commit comments