2019-07-20 14:36:00 +00:00
|
|
|
syntax = "proto3";
|
|
|
|
package ix;
|
|
|
|
|
|
|
|
message GetIXMembersRequest {
|
|
|
|
// IX ID from PeeringDB
|
|
|
|
int64 id = 1;
|
|
|
|
}
|
|
|
|
|
2019-08-02 11:38:22 +00:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2019-07-20 14:36:00 +00:00
|
|
|
message GetIXMembersResponse {
|
2019-08-01 18:16:27 +00:00
|
|
|
repeated PeeringDBMember members = 1;
|
2019-07-20 14:36:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
service PeeringDBProxy {
|
|
|
|
// GetIXMembers returns information about membership of a given PeeringDB IX.
|
|
|
|
rpc GetIXMembers(GetIXMembersRequest) returns (GetIXMembersResponse);
|
|
|
|
}
|
2019-08-01 23:25:31 +00:00
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|
2019-08-01 18:16:27 +00:00
|
|
|
|
2019-08-01 23:25:31 +00:00
|
|
|
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);
|
|
|
|
}
|
2019-07-22 22:53:50 +00:00
|
|
|
|
2019-08-01 18:16:27 +00:00
|
|
|
message ProcessorStatusRequest {
|
|
|
|
}
|
|
|
|
|
|
|
|
message ProcessorStatusResponse {
|
|
|
|
message Processor {
|
|
|
|
enum Status {
|
|
|
|
STATUS_INVALID = 0;
|
|
|
|
STATUS_OK = 1;
|
|
|
|
STATUS_ERROR = 2;
|
|
|
|
}
|
|
|
|
string name = 1;
|
|
|
|
Status status = 2;
|
|
|
|
int64 last_run = 3;
|
|
|
|
int64 next_run = 4;
|
|
|
|
}
|
|
|
|
repeated Processor processors = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message PeerSummaryRequest {
|
|
|
|
}
|
|
|
|
|
|
|
|
message PeerSummaryResponse {
|
|
|
|
PeeringDBMember peeringdb_info = 1;
|
|
|
|
enum Status {
|
|
|
|
STATUS_INVALID = 0;
|
|
|
|
STATUS_OK = 1;
|
|
|
|
STATUS_FAILED = 2;
|
|
|
|
STATUS_UNKNOWN = 3;
|
|
|
|
}
|
|
|
|
Status check_status = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
message PeerDetailsRequest {
|
|
|
|
int64 asn = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message PeerDetailsResponse {
|
|
|
|
message Check {
|
|
|
|
enum Status {
|
|
|
|
STATUS_INVALID = 0;
|
|
|
|
STATUS_OK = 1;
|
|
|
|
STATUS_FAILED = 2;
|
|
|
|
};
|
|
|
|
string name = 1;
|
|
|
|
Status status = 2;
|
|
|
|
int64 time = 3;
|
|
|
|
string msg = 4;
|
|
|
|
};
|
|
|
|
repeated Check checks = 1;
|
|
|
|
|
|
|
|
message AllowedPrefix {
|
|
|
|
string prefix = 1;
|
|
|
|
int64 max_length = 2;
|
|
|
|
string ta = 3;
|
|
|
|
};
|
|
|
|
repeated AllowedPrefix allowed_prefixes = 2;
|
|
|
|
PeeringDBMember peeringdb_info = 3;
|
|
|
|
}
|
|
|
|
|
2019-08-22 16:13:13 +00:00
|
|
|
message RouterHeartbeatRequest {
|
|
|
|
string name = 1;
|
|
|
|
string current_version = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
message RouterHeartbeatResponse {
|
|
|
|
message ASConfig {
|
|
|
|
int64 asn = 1;
|
|
|
|
message Router {
|
|
|
|
string ipv6 = 1;
|
|
|
|
string ipv4 = 2;
|
|
|
|
string password = 3;
|
|
|
|
};
|
|
|
|
repeated Router routers = 2;
|
|
|
|
message AllowedPrefix {
|
|
|
|
string prefix = 1;
|
|
|
|
int64 max_length = 2;
|
|
|
|
};
|
|
|
|
repeated AllowedPrefix prefixes = 3;
|
|
|
|
};
|
|
|
|
repeated ASConfig as_configs = 1;
|
|
|
|
string version = 2;
|
|
|
|
uint64 call_again = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
message PeerSecretsRequest {
|
|
|
|
int64 asn = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message PeerSecretsResponse {
|
|
|
|
bytes pgp_data = 1;
|
|
|
|
}
|
|
|
|
|
2019-08-01 18:16:27 +00:00
|
|
|
service Verifier {
|
|
|
|
rpc ProcessorStatus(ProcessorStatusRequest) returns (ProcessorStatusResponse);
|
|
|
|
rpc PeerSummary(PeerSummaryRequest) returns (stream PeerSummaryResponse);
|
|
|
|
rpc PeerDetails(PeerDetailsRequest) returns (PeerDetailsResponse);
|
2019-08-22 16:13:13 +00:00
|
|
|
rpc RouterHeartbeat(RouterHeartbeatRequest) returns (RouterHeartbeatResponse);
|
|
|
|
rpc PeerSecrets(PeerSecretsRequest) returns (PeerSecretsResponse);
|
2019-08-01 18:16:27 +00:00
|
|
|
}
|
|
|
|
|
2019-07-22 22:53:50 +00:00
|
|
|
message KeyInfoRequest {
|
|
|
|
// Public key fingerprint. 20 bytes.
|
|
|
|
bytes fingerprint = 1;
|
|
|
|
enum Caching {
|
|
|
|
CACHING_INVALID = 0;
|
|
|
|
// Contact keyservers only if not locally (positively or negatively) cached.
|
|
|
|
CACHING_AUTO = 1;
|
|
|
|
// Force contacting keyservers.
|
|
|
|
CACHING_FORCE_REMOTE = 2;
|
|
|
|
// Force not contacting keyservers.
|
|
|
|
CACHING_FORCE_LOCAL = 3;
|
|
|
|
};
|
|
|
|
Caching caching = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
message KeyInfoResponse {
|
|
|
|
// Currently no data is returned. An error will be returned if the key doesn't exist.
|
|
|
|
}
|
|
|
|
|
|
|
|
message EncryptRequest {
|
|
|
|
// A chunk of plaintext data. Small enough to fit in gRPC message (<<2 MiB).
|
|
|
|
bytes data = 1;
|
|
|
|
enum ChunkInfo {
|
|
|
|
CHUNK_INFO_INVALID = 0;
|
|
|
|
// More data to come after this chunked.
|
|
|
|
CHUNK_INFO_MORE = 1;
|
|
|
|
// Last chunk.
|
|
|
|
CHUNK_LAST = 2;
|
|
|
|
};
|
|
|
|
ChunkInfo info = 2;
|
|
|
|
// Fingerprint of key to encrypt with. Only the first chunk is consulted,
|
|
|
|
// the key in the rest of the chunks are ignored. 20 bytes.
|
|
|
|
bytes fingerprint = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
message EncryptResponse {
|
|
|
|
// A chunk of encrypted data. Small enough to fit in gRPC message (<<2 MiB).
|
|
|
|
bytes data = 1;
|
|
|
|
enum ChunkInfo {
|
|
|
|
CHUNK_INFO_INVALID = 0;
|
|
|
|
// More data to come after this chunked.
|
|
|
|
CHUNK_INFO_MORE = 1;
|
|
|
|
// Last chunk.
|
|
|
|
CHUNK_LAST = 2;
|
|
|
|
};
|
|
|
|
ChunkInfo info = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
service PGPEncryptor {
|
|
|
|
// KeyInfo returns information about a given key from the public keyserver infrastructure.
|
|
|
|
// If key doesn't exist, error (NotFound).
|
|
|
|
rpc KeyInfo(KeyInfoRequest) returns (KeyInfoResponse);
|
|
|
|
// Encrypt encrypts a given data blob with a given key from public keyserver infrastructure.
|
|
|
|
// If key doesn't exist, error (NotFound).
|
|
|
|
rpc Encrypt(stream EncryptRequest) returns (stream EncryptResponse);
|
2019-08-11 21:51:19 +00:00
|
|
|
}
|