forked from hswaw/hscloud
Merge "bgpwtf/cccampix/peeringdb: allow multiple routers per peer"
commit
113baaf9c1
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue