mirror of
https://github.com/osrg/gobgp.git
synced 2024-05-11 05:55:10 +00:00
536 lines
12 KiB
Protocol Buffer
536 lines
12 KiB
Protocol Buffer
// Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
// implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
syntax = "proto3";
|
|
|
|
package gobgpapi;
|
|
|
|
// Interface exported by the server.
|
|
|
|
service GobgpApi {
|
|
rpc GetGlobalConfig(Arguments) returns (Global) {}
|
|
rpc ModGlobalConfig(ModGlobalConfigArguments) returns (Error) {}
|
|
rpc GetNeighbors(Arguments) returns (stream Peer) {}
|
|
rpc GetNeighbor(Arguments) returns (Peer) {}
|
|
rpc ModNeighbor(ModNeighborArguments) returns(Error) {}
|
|
rpc GetRib(Table) returns (Table) {}
|
|
rpc Reset(Arguments) returns (Error) {}
|
|
rpc SoftReset(Arguments) returns (Error) {}
|
|
rpc SoftResetIn(Arguments) returns (Error) {}
|
|
rpc SoftResetOut(Arguments) returns (Error) {}
|
|
rpc Shutdown(Arguments) returns (Error) {}
|
|
rpc Enable(Arguments) returns (Error) {}
|
|
rpc Disable(Arguments) returns (Error) {}
|
|
rpc ModPath(ModPathArguments) returns (ModPathResponse) {}
|
|
rpc ModPaths(stream ModPathsArguments) returns (Error) {}
|
|
rpc MonitorBestChanged(Arguments) returns (stream Destination) {}
|
|
rpc MonitorPeerState(Arguments) returns (stream Peer) {}
|
|
rpc MonitorROAValidation(Arguments) returns (stream ROAResult) {}
|
|
rpc GetMrt(MrtArguments) returns (stream MrtMessage) {}
|
|
rpc ModMrt(ModMrtArguments) returns (Error) {}
|
|
rpc ModBmp(ModBmpArguments) returns (Error) {}
|
|
rpc GetRPKI(Arguments) returns (stream RPKI) {}
|
|
rpc ModRPKI(ModRpkiArguments) returns (Error) {}
|
|
rpc GetROA(Arguments) returns (stream ROA) {}
|
|
rpc GetVrfs(Arguments) returns (stream Vrf) {}
|
|
rpc ModVrf(ModVrfArguments) returns (Error) {}
|
|
rpc GetDefinedSet(DefinedSet) returns (DefinedSet) {}
|
|
rpc GetDefinedSets(DefinedSet) returns (stream DefinedSet) {}
|
|
rpc ModDefinedSet(ModDefinedSetArguments) returns (Error) {}
|
|
rpc GetStatement(Statement) returns (Statement) {}
|
|
rpc GetStatements(Statement) returns (stream Statement) {}
|
|
rpc ModStatement(ModStatementArguments) returns (Error) {}
|
|
rpc GetPolicy(Policy) returns (Policy) {}
|
|
rpc GetPolicies(Policy) returns (stream Policy) {}
|
|
rpc ModPolicy(ModPolicyArguments) returns (Error) {}
|
|
rpc GetPolicyAssignment(PolicyAssignment) returns (PolicyAssignment) {}
|
|
rpc ModPolicyAssignment(ModPolicyAssignmentArguments) returns (Error) {}
|
|
}
|
|
|
|
message Error {
|
|
enum ErrorCode {
|
|
SUCCESS = 0;
|
|
FAIL = 1;
|
|
}
|
|
ErrorCode code = 1;
|
|
string msg = 2;
|
|
}
|
|
|
|
message Arguments {
|
|
Resource resource = 1;
|
|
uint32 family = 2;
|
|
string name = 3;
|
|
}
|
|
|
|
message ModPathArguments {
|
|
Operation operation = 1;
|
|
Resource resource = 2;
|
|
string name = 3;
|
|
Path path = 4;
|
|
bytes uuid = 5;
|
|
}
|
|
|
|
message ModPathResponse {
|
|
bytes uuid = 1;
|
|
}
|
|
|
|
message ModPathsArguments {
|
|
Resource resource = 1;
|
|
string name = 2;
|
|
repeated Path paths = 3;
|
|
}
|
|
|
|
message ModNeighborArguments {
|
|
Operation operation = 1;
|
|
Peer peer = 2;
|
|
}
|
|
|
|
message MrtArguments {
|
|
Resource resource = 1;
|
|
uint32 family = 2;
|
|
uint64 interval = 3;
|
|
string neighbor_address = 4;
|
|
}
|
|
|
|
message ModMrtArguments {
|
|
Operation operation = 1;
|
|
string filename = 2;
|
|
}
|
|
|
|
message ModBmpArguments {
|
|
Operation operation = 1;
|
|
string address = 2;
|
|
uint32 port = 3;
|
|
enum MonitoringPolicy {
|
|
PRE = 0;
|
|
POST = 1;
|
|
BOTH = 2;
|
|
}
|
|
MonitoringPolicy type = 4;
|
|
}
|
|
|
|
message ModRpkiArguments {
|
|
Operation operation = 1;
|
|
string address = 2;
|
|
uint32 port = 3;
|
|
}
|
|
|
|
message ModVrfArguments {
|
|
Operation operation = 1;
|
|
Vrf vrf = 2;
|
|
}
|
|
|
|
message ModDefinedSetArguments {
|
|
Operation operation = 1;
|
|
DefinedSet set = 2;
|
|
}
|
|
|
|
message ModStatementArguments {
|
|
Operation operation = 1;
|
|
Statement statement = 2;
|
|
}
|
|
|
|
message ModPolicyArguments {
|
|
Operation operation = 1;
|
|
Policy policy = 2;
|
|
// if this flag is set, gobgpd won't define new statements
|
|
// but refer existing statements using statement's names in this arguments.
|
|
// this flag only works with Operation_ADD
|
|
bool refer_existing_statements = 3;
|
|
// if this flag is set, gobgpd won't delete any statements
|
|
// even if some statements get not used by any policy by this operation.
|
|
// this flag means nothing if it is used with Operation_ADD
|
|
bool preserve_statements = 4;
|
|
}
|
|
|
|
message ModPolicyAssignmentArguments {
|
|
Operation operation = 1;
|
|
PolicyAssignment assignment = 2;
|
|
}
|
|
|
|
message ModGlobalConfigArguments {
|
|
Operation operation = 1;
|
|
Global global = 2;
|
|
}
|
|
|
|
enum Resource {
|
|
GLOBAL = 0;
|
|
LOCAL = 1;
|
|
ADJ_IN = 2;
|
|
ADJ_OUT = 3;
|
|
VRF = 4;
|
|
}
|
|
|
|
enum Operation {
|
|
ADD = 0;
|
|
DEL = 1;
|
|
DEL_ALL = 2;
|
|
REPLACE = 3;
|
|
ENABLE = 4;
|
|
DISABLE = 5;
|
|
RESET = 6;
|
|
SOFTRESET = 7;
|
|
}
|
|
|
|
message Path {
|
|
bytes nlri = 1;
|
|
repeated bytes pattrs = 2;
|
|
int64 age = 3;
|
|
bool best = 4;
|
|
bool is_withdraw = 5;
|
|
int32 validation = 6;
|
|
bool no_implicit_withdraw = 7;
|
|
uint32 family = 8;
|
|
uint32 source_asn = 9;
|
|
string source_id = 10;
|
|
bool filtered = 11;
|
|
}
|
|
|
|
message Destination {
|
|
string prefix = 1;
|
|
repeated Path paths = 2;
|
|
bool longer_prefixes = 3;
|
|
}
|
|
|
|
message Table {
|
|
Resource type = 1;
|
|
string name = 2;
|
|
uint32 family = 3;
|
|
repeated Destination destinations = 4;
|
|
}
|
|
|
|
message Peer {
|
|
repeated uint32 families = 2;
|
|
ApplyPolicy apply_policy = 3;
|
|
PeerConf conf = 5;
|
|
EbgpMultihop ebgp_multihop = 6;
|
|
RouteReflector route_reflector = 10;
|
|
PeerState info = 11;
|
|
Timers timers = 12;
|
|
Transport transport = 13;
|
|
RouteServer route_server = 15;
|
|
}
|
|
|
|
message ApplyPolicy {
|
|
PolicyAssignment in_policy = 1;
|
|
PolicyAssignment export_policy = 2;
|
|
PolicyAssignment import_policy = 3;
|
|
}
|
|
|
|
message PeerConf {
|
|
string auth_password = 1;
|
|
string description = 2;
|
|
uint32 local_as = 3;
|
|
string neighbor_address = 4;
|
|
uint32 peer_as = 5;
|
|
string peer_group = 6;
|
|
uint32 peer_type = 7;
|
|
uint32 remove_private_as = 8;
|
|
bool route_flap_damping = 9;
|
|
uint32 send_community = 10;
|
|
repeated bytes remote_cap = 11;
|
|
repeated bytes local_cap = 12;
|
|
string id = 13;
|
|
}
|
|
|
|
message EbgpMultihop {
|
|
bool enabled = 1;
|
|
uint32 multihop_ttl = 2;
|
|
}
|
|
|
|
message RouteReflector {
|
|
bool route_reflector_client = 1;
|
|
uint32 route_reflector_cluster_id = 2;
|
|
}
|
|
|
|
message PeerState {
|
|
string auth_password = 1;
|
|
string description = 2;
|
|
uint32 local_as = 3;
|
|
Messages messages = 4;
|
|
string neighbor_address = 5;
|
|
uint32 peer_as = 6;
|
|
string peer_group = 7;
|
|
uint32 peer_type = 8;
|
|
Queues queues = 9;
|
|
uint32 remove_private_as = 10;
|
|
bool route_flap_damping = 11;
|
|
uint32 send_community = 12;
|
|
uint32 session_state = 13;
|
|
repeated string supported_capabilities = 14;
|
|
string bgp_state = 15;
|
|
string admin_state = 16;
|
|
uint32 received = 17;
|
|
uint32 accepted = 18;
|
|
uint32 advertised = 19;
|
|
uint32 out_q = 20;
|
|
uint32 flops = 21;
|
|
}
|
|
|
|
message Messages {
|
|
Message received = 1;
|
|
Message sent = 2;
|
|
}
|
|
|
|
message Message {
|
|
uint64 NOTIFICATION = 1;
|
|
uint64 UPDATE = 2;
|
|
uint64 OPEN = 3;
|
|
uint64 KEEPALIVE = 4;
|
|
uint64 REFRESH = 5;
|
|
uint64 DISCARDED = 6;
|
|
uint64 TOTAL = 7;
|
|
}
|
|
|
|
message Queues {
|
|
uint32 input = 1;
|
|
uint32 output = 2;
|
|
}
|
|
|
|
message Timers {
|
|
TimersConfig config =1;
|
|
TimersState state = 2;
|
|
}
|
|
|
|
message TimersConfig{
|
|
uint64 connect_retry = 1;
|
|
uint64 hold_time = 2;
|
|
uint64 keepalive_interval = 3;
|
|
uint64 minimum_advertisement_interval = 4;
|
|
}
|
|
|
|
message TimersState{
|
|
uint64 connect_retry = 1;
|
|
uint64 hold_time = 2;
|
|
uint64 keepalive_interval = 3;
|
|
uint64 minimum_advertisement_interval = 4;
|
|
uint64 negotiated_hold_time = 5;
|
|
uint64 uptime = 6;
|
|
uint64 downtime = 7;
|
|
}
|
|
|
|
message Transport {
|
|
string local_address = 1;
|
|
uint32 local_port = 2;
|
|
bool mtu_discovery = 3;
|
|
bool passive_mode = 4;
|
|
string remote_address = 5;
|
|
uint32 remote_port = 6;
|
|
uint32 tcp_mss = 7;
|
|
}
|
|
|
|
message RouteServer {
|
|
bool route_server_client = 1;
|
|
}
|
|
|
|
message Prefix {
|
|
string ip_prefix = 1;
|
|
uint32 mask_length_min = 2;
|
|
uint32 mask_length_max = 3;
|
|
}
|
|
|
|
enum DefinedType {
|
|
PREFIX = 0;
|
|
NEIGHBOR = 1;
|
|
TAG = 2;
|
|
AS_PATH = 3;
|
|
COMMUNITY = 4;
|
|
EXT_COMMUNITY = 5;
|
|
}
|
|
|
|
message DefinedSet {
|
|
DefinedType type = 1;
|
|
string name = 2;
|
|
repeated string list = 3;
|
|
repeated Prefix prefixes = 4;
|
|
}
|
|
|
|
enum MatchType {
|
|
ANY = 0;
|
|
ALL = 1;
|
|
INVERT = 2;
|
|
}
|
|
|
|
message MatchSet {
|
|
MatchType type = 1;
|
|
string name = 2;
|
|
}
|
|
|
|
enum AsPathLengthType {
|
|
EQ = 0;
|
|
GE = 1;
|
|
LE = 2;
|
|
}
|
|
|
|
message AsPathLength {
|
|
AsPathLengthType type = 1;
|
|
uint32 length = 2;
|
|
}
|
|
|
|
message Conditions {
|
|
MatchSet prefix_set = 1;
|
|
MatchSet neighbor_set = 2;
|
|
AsPathLength as_path_length = 3;
|
|
MatchSet as_path_set = 4;
|
|
MatchSet community_set = 5;
|
|
MatchSet ext_community_set = 6;
|
|
int32 rpki_result = 7;
|
|
}
|
|
|
|
enum RouteAction {
|
|
NONE = 0;
|
|
ACCEPT = 1;
|
|
REJECT = 2;
|
|
}
|
|
|
|
enum CommunityActionType {
|
|
COMMUNITY_ADD = 0;
|
|
COMMUNITY_REMOVE = 1;
|
|
COMMUNITY_REPLACE = 2;
|
|
}
|
|
|
|
message CommunityAction {
|
|
CommunityActionType type = 1;
|
|
repeated string communities = 2;
|
|
}
|
|
|
|
enum MedActionType {
|
|
MED_MOD = 0;
|
|
MED_REPLACE = 1;
|
|
}
|
|
|
|
message MedAction {
|
|
MedActionType type = 1;
|
|
int64 value = 2;
|
|
}
|
|
|
|
message AsPrependAction {
|
|
uint32 asn = 1;
|
|
uint32 repeat = 2;
|
|
bool use_left_most = 3;
|
|
}
|
|
|
|
message Actions {
|
|
RouteAction route_action = 1;
|
|
CommunityAction community = 2;
|
|
MedAction med = 3;
|
|
AsPrependAction as_prepend = 4;
|
|
CommunityAction ext_community = 5;
|
|
}
|
|
|
|
message Statement {
|
|
string name = 1;
|
|
Conditions conditions = 2;
|
|
Actions actions = 3;
|
|
}
|
|
|
|
message Policy {
|
|
string name = 1;
|
|
repeated Statement statements = 2;
|
|
}
|
|
|
|
enum PolicyType {
|
|
IN = 0;
|
|
IMPORT = 1;
|
|
EXPORT = 2;
|
|
}
|
|
|
|
message PolicyAssignment {
|
|
PolicyType type = 1;
|
|
Resource resource = 2;
|
|
string name = 3;
|
|
repeated Policy policies = 4;
|
|
RouteAction default = 5;
|
|
}
|
|
|
|
message MrtMessage {
|
|
bytes data = 1;
|
|
}
|
|
|
|
message RPKIConf {
|
|
string address = 1;
|
|
uint32 remote_port = 2;
|
|
}
|
|
|
|
message RPKIState {
|
|
int64 uptime = 1;
|
|
int64 downtime = 2;
|
|
bool up = 3;
|
|
uint32 record_ipv4 = 4;
|
|
uint32 record_ipv6 = 5;
|
|
uint32 prefix_ipv4 = 6;
|
|
uint32 prefix_ipv6 = 7;
|
|
uint32 serial = 8;
|
|
int64 received_ipv4 = 9;
|
|
int64 received_ipv6 = 10;
|
|
int64 serial_notify = 11;
|
|
int64 cache_reset = 12;
|
|
int64 cache_response = 13;
|
|
int64 end_of_data = 14;
|
|
int64 error = 15;
|
|
int64 serial_query = 16;
|
|
int64 reset_query = 17;
|
|
}
|
|
|
|
message RPKI {
|
|
RPKIConf conf = 1;
|
|
RPKIState state = 2;
|
|
}
|
|
|
|
message ROA {
|
|
uint32 as = 1;
|
|
uint32 prefixlen = 2;
|
|
uint32 maxlen = 3;
|
|
string prefix = 4;
|
|
RPKIConf conf = 5;
|
|
}
|
|
|
|
message ROAResult {
|
|
enum ValidationReason {
|
|
UPDATE = 0;
|
|
WITHDRAW = 1;
|
|
PEER_DOWN = 2;
|
|
REVALIDATE = 3;
|
|
}
|
|
ValidationReason reason = 1;
|
|
string address = 2;
|
|
int64 timestamp = 3;
|
|
bytes aspath_attr = 4;
|
|
uint32 origin_as = 5;
|
|
string prefix = 6;
|
|
enum ValidationResult {
|
|
NONE = 0;
|
|
NOT_FOUND = 1;
|
|
VALID = 2;
|
|
INVALID = 3;
|
|
}
|
|
ValidationResult old_result = 7;
|
|
ValidationResult new_result = 8;
|
|
repeated ROA roas = 9;
|
|
}
|
|
|
|
message Vrf {
|
|
string name = 1;
|
|
bytes rd = 2;
|
|
repeated bytes import_rt = 3;
|
|
repeated bytes export_rt = 4;
|
|
}
|
|
|
|
message Global {
|
|
uint32 as = 1;
|
|
string router_id = 2;
|
|
int32 listen_port = 3;
|
|
}
|