blob: 01ddc4fb5aad775c705933cf443b215ee9627c8f [file] [log] [blame]
syntax = "proto3";
package ix;
message GetIXMembersRequest {
// IX ID from PeeringDB
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 Member {
int64 asn = 1;
// Per PeeringDB, at least one of the following two address families
// will be set.
string ipv4 = 2;
string ipv6 = 3;
// AS/network name.
string name = 4;
};
repeated Member members = 1;
}
service PeeringDBProxy {
// GetIXMembers returns information about membership of a given PeeringDB IX.
rpc GetIXMembers(GetIXMembersRequest) returns (GetIXMembersResponse);
}
message IRRQueryRequest {
// AS to query for. This needs be the AS number of the AS, possibly
// prefixed with 'as'/'AS'.
string as = 1;
}
message IRRAttribute {
message ImportExport {
message Expression {
string peering = 1;
string router_us = 2;
string router_them = 3;
repeated string actions = 4;
}
string protocol_from = 1;
string protocol_into = 2;
repeated Expression expressions = 3;
string filter = 4;
}
oneof value {
string remarks = 1;
ImportExport import = 2;
ImportExport export = 3;
}
}
message IRRQueryResponse {
enum Source {
SOURCE_INVALID = 0;
SOURCE_RIPE = 1;
SOURCE_ARIN = 2;
}
Source source = 1;
repeated IRRAttribute attributes = 2;
}
service IRR {
// Query returns parsed RPSL data from supported IRRs for a given aut-num.
rpc Query(IRRQueryRequest) returns (IRRQueryResponse);
}