summaryrefslogtreecommitdiffhomepage
path: root/table/destination.go
diff options
context:
space:
mode:
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2015-10-27 09:34:32 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2015-10-27 09:34:32 +0900
commitc66b596122b6c27546ed21c7604bd0d6a042fd6c (patch)
tree9f8f4f34fb4bbb69d2cb6e9e213df3ea35afcf4f /table/destination.go
parented5026413cfb87527541a7cf9f83118df311ca73 (diff)
server: fix radix key bug in rpki test
also clean up functions to create a radix key. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Diffstat (limited to 'table/destination.go')
-rw-r--r--table/destination.go22
1 files changed, 17 insertions, 5 deletions
diff --git a/table/destination.go b/table/destination.go
index 4176a1ae..7d3fe487 100644
--- a/table/destination.go
+++ b/table/destination.go
@@ -41,14 +41,26 @@ const (
BPR_ROUTER_ID = "Router ID"
)
+func toRadixkey(b []byte, max uint8) string {
+ var buffer bytes.Buffer
+ for i := 0; i < len(b) && i < int(max); i++ {
+ buffer.WriteString(fmt.Sprintf("%08b", b[i]))
+ }
+ return buffer.String()[:max]
+}
+
+func IpToRadixkey(prefix net.IP, prefixLen uint8) string {
+ b := prefix.To4()
+ if b == nil {
+ b = prefix.To16()
+ }
+ return toRadixkey(b, prefixLen)
+}
+
func CidrToRadixkey(cidr string) string {
_, n, _ := net.ParseCIDR(cidr)
ones, _ := n.Mask.Size()
- var buffer bytes.Buffer
- for i := 0; i < len(n.IP) && i < ones; i++ {
- buffer.WriteString(fmt.Sprintf("%08b", n.IP[i]))
- }
- return buffer.String()[:ones]
+ return toRadixkey(n.IP, uint8(ones))
}
type PeerInfo struct {