bgpwtf/cccampix/peeringdb: allow multiple routers per peer
Change-Id: I84200cc0056d569e962c104cf082ce10f9c4025f
diff --git a/bgpwtf/cccampix/peeringdb/main.go b/bgpwtf/cccampix/peeringdb/main.go
index fa11651..a7f0199 100644
--- a/bgpwtf/cccampix/peeringdb/main.go
+++ b/bgpwtf/cccampix/peeringdb/main.go
@@ -60,19 +60,36 @@
netidsNet[net.ID] = &net
}
+ // Make unique ASNs.
+ asns := make(map[int64]*pb.PeeringDBMember)
+
+ for _, netixlan := range js.Data {
+ member, ok := asns[netixlan.ASN]
+ if !ok {
+ asns[netixlan.ASN] = &pb.PeeringDBMember{
+ Asn: netixlan.ASN,
+ Name: netidsNet[netixlan.NetID].Name,
+ Routers: []*pb.PeeringDBMember_Router{},
+ }
+ member = asns[netixlan.ASN]
+ }
+
+ member.Routers = append(member.Routers, &pb.PeeringDBMember_Router{
+ Ipv4: netixlan.IPv4,
+ Ipv6: netixlan.IPv6,
+ })
+ }
+
// Build joined response.
res := &pb.GetIXMembersResponse{
- Members: make([]*pb.GetIXMembersResponse_Member, len(js.Data)),
+ Members: make([]*pb.PeeringDBMember, len(asns)),
}
- for i, netixlan := range js.Data {
- res.Members[i] = &pb.GetIXMembersResponse_Member{
- Asn: netixlan.ASN,
- Ipv4: netixlan.IPv4,
- Ipv6: netixlan.IPv6,
- Name: netidsNet[netixlan.NetID].Name,
- }
+ i = 0
+ for _, member := range asns {
+ res.Members[i] = member
+ i += 1
}
return res, nil