Merge "bgpwtf/cccampix/peeringdb: allow multiple routers per peer"

master
q3k 2019-08-02 11:41:48 +00:00 committed by Gerrit Code Review
commit 113baaf9c1
2 changed files with 40 additions and 8 deletions

View File

@ -60,19 +60,36 @@ func (s *service) GetIXMembers(ctx context.Context, req *pb.GetIXMembersRequest)
netidsNet[net.ID] = &net 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. // Build joined response.
res := &pb.GetIXMembersResponse{ res := &pb.GetIXMembersResponse{
Members: make([]*pb.GetIXMembersResponse_Member, len(js.Data)), Members: make([]*pb.PeeringDBMember, len(asns)),
} }
for i, netixlan := range js.Data { i = 0
res.Members[i] = &pb.GetIXMembersResponse_Member{ for _, member := range asns {
Asn: netixlan.ASN, res.Members[i] = member
Ipv4: netixlan.IPv4, i += 1
Ipv6: netixlan.IPv6,
Name: netidsNet[netixlan.NetID].Name,
}
} }
return res, nil return res, nil

View File

@ -6,6 +6,21 @@ message GetIXMembersRequest {
int64 id = 1; int64 id = 1;
} }
message PeeringDBMember {
int64 asn = 1;
// AS/network name.
string name = 2;
message Router {
// Per PeeringDB, at least one of the following two address families
// will be set.
string ipv4 = 1;
string ipv6 = 2;
}
repeated Router routers = 3;
}
message GetIXMembersResponse { message GetIXMembersResponse {
message Member { message Member {
int64 asn = 1; int64 asn = 1;