mirror of
https://github.com/cloudnativelabs/kube-router.git
synced 2025-10-13 02:41:05 +02:00
1045 lines
21 KiB
Protocol Buffer
1045 lines
21 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 StartServer(StartServerRequest) returns (StartServerResponse) {}
|
|
rpc StopServer(StopServerRequest) returns (StopServerResponse) {}
|
|
rpc GetServer(GetServerRequest) returns (GetServerResponse) {}
|
|
rpc AddNeighbor(AddNeighborRequest) returns (AddNeighborResponse) {}
|
|
rpc DeleteNeighbor(DeleteNeighborRequest) returns (DeleteNeighborResponse) {}
|
|
rpc GetNeighbor(GetNeighborRequest) returns (GetNeighborResponse) {}
|
|
rpc ResetNeighbor(ResetNeighborRequest) returns (ResetNeighborResponse) {}
|
|
rpc SoftResetNeighbor(SoftResetNeighborRequest) returns (SoftResetNeighborResponse) {}
|
|
rpc ShutdownNeighbor(ShutdownNeighborRequest) returns (ShutdownNeighborResponse) {}
|
|
rpc EnableNeighbor(EnableNeighborRequest) returns (EnableNeighborResponse) {}
|
|
rpc DisableNeighbor(DisableNeighborRequest) returns (DisableNeighborResponse) {}
|
|
rpc GetRib(GetRibRequest) returns (GetRibResponse) {}
|
|
rpc ValidateRib(ValidateRibRequest) returns (ValidateRibResponse) {}
|
|
rpc AddPath(AddPathRequest) returns (AddPathResponse) {}
|
|
rpc DeletePath(DeletePathRequest) returns (DeletePathResponse) {}
|
|
rpc MonitorRib(MonitorRibRequest) returns (stream Destination) {}
|
|
rpc MonitorPeerState(Arguments) returns (stream Peer) {}
|
|
rpc EnableMrt(EnableMrtRequest) returns (EnableMrtResponse) {}
|
|
rpc DisableMrt(DisableMrtRequest) returns (DisableMrtResponse) {}
|
|
rpc InjectMrt(stream InjectMrtRequest) returns (InjectMrtResponse) {}
|
|
rpc AddBmp(AddBmpRequest) returns (AddBmpResponse) {}
|
|
rpc DeleteBmp(DeleteBmpRequest) returns (DeleteBmpResponse) {}
|
|
rpc GetRpki(GetRpkiRequest) returns (GetRpkiResponse) {}
|
|
rpc AddRpki(AddRpkiRequest) returns (AddRpkiResponse) {}
|
|
rpc DeleteRpki(DeleteRpkiRequest) returns (DeleteRpkiResponse) {}
|
|
rpc EnableRpki(EnableRpkiRequest) returns (EnableRpkiResponse) {}
|
|
rpc DisableRpki(DisableRpkiRequest) returns (DisableRpkiResponse) {}
|
|
rpc ResetRpki(ResetRpkiRequest) returns (ResetRpkiResponse) {}
|
|
rpc SoftResetRpki(SoftResetRpkiRequest) returns (SoftResetRpkiResponse) {}
|
|
rpc GetRoa(GetRoaRequest) returns (GetRoaResponse) {}
|
|
rpc EnableZebra(EnableZebraRequest) returns (EnableZebraResponse) {}
|
|
rpc AddVrf(AddVrfRequest) returns (AddVrfResponse) {}
|
|
rpc DeleteVrf(DeleteVrfRequest) returns (DeleteVrfResponse) {}
|
|
rpc GetVrf(GetVrfRequest) returns (GetVrfResponse) {}
|
|
rpc GetDefinedSet(GetDefinedSetRequest) returns (GetDefinedSetResponse) {}
|
|
rpc AddDefinedSet(AddDefinedSetRequest) returns (AddDefinedSetResponse) {}
|
|
rpc DeleteDefinedSet(DeleteDefinedSetRequest) returns (DeleteDefinedSetResponse) {}
|
|
rpc ReplaceDefinedSet(ReplaceDefinedSetRequest) returns (ReplaceDefinedSetResponse) {}
|
|
rpc GetStatement(GetStatementRequest) returns (GetStatementResponse) {}
|
|
rpc AddStatement(AddStatementRequest) returns (AddStatementResponse) {}
|
|
rpc DeleteStatement(DeleteStatementRequest) returns (DeleteStatementResponse) {}
|
|
rpc ReplaceStatement(ReplaceStatementRequest) returns (ReplaceStatementResponse) {}
|
|
rpc GetPolicy(GetPolicyRequest) returns (GetPolicyResponse) {}
|
|
rpc AddPolicy(AddPolicyRequest) returns (AddPolicyResponse) {}
|
|
rpc DeletePolicy(DeletePolicyRequest) returns (DeletePolicyResponse) {}
|
|
rpc ReplacePolicy(ReplacePolicyRequest) returns (ReplacePolicyResponse) {}
|
|
rpc GetPolicyAssignment(GetPolicyAssignmentRequest) returns (GetPolicyAssignmentResponse) {}
|
|
rpc AddPolicyAssignment(AddPolicyAssignmentRequest) returns (AddPolicyAssignmentResponse) {}
|
|
rpc DeletePolicyAssignment(DeletePolicyAssignmentRequest) returns (DeletePolicyAssignmentResponse) {}
|
|
rpc ReplacePolicyAssignment(ReplacePolicyAssignmentRequest) returns (ReplacePolicyAssignmentResponse) {}
|
|
rpc GetRibInfo(GetRibInfoRequest) returns (GetRibInfoResponse) {}
|
|
}
|
|
|
|
message GetNeighborRequest {
|
|
bool enableAdvertised = 1;
|
|
string address = 2;
|
|
}
|
|
|
|
message GetNeighborResponse {
|
|
repeated Peer peers = 1;
|
|
}
|
|
|
|
message Arguments {
|
|
Resource resource = 1;
|
|
uint32 family = 2;
|
|
string name = 3;
|
|
}
|
|
|
|
message AddPathRequest {
|
|
Resource resource = 1;
|
|
string vrf_id = 2;
|
|
Path path = 3;
|
|
}
|
|
|
|
message AddPathResponse {
|
|
bytes uuid = 1;
|
|
}
|
|
|
|
message DeletePathRequest {
|
|
Resource resource = 1;
|
|
string vrf_id = 2;
|
|
uint32 family = 3;
|
|
Path path = 4;
|
|
bytes uuid = 5;
|
|
}
|
|
|
|
message DeletePathResponse {
|
|
}
|
|
|
|
message AddNeighborRequest {
|
|
Peer peer = 1;
|
|
}
|
|
|
|
message AddNeighborResponse {
|
|
}
|
|
|
|
message DeleteNeighborRequest {
|
|
Peer peer = 1;
|
|
}
|
|
|
|
message DeleteNeighborResponse {
|
|
}
|
|
|
|
message ResetNeighborRequest {
|
|
string address = 1;
|
|
string communication = 2;
|
|
}
|
|
|
|
message ResetNeighborResponse {
|
|
}
|
|
|
|
message SoftResetNeighborRequest {
|
|
string address = 1;
|
|
enum SoftResetDirection {
|
|
IN = 0;
|
|
OUT = 1;
|
|
BOTH = 2;
|
|
}
|
|
SoftResetDirection direction = 2;
|
|
}
|
|
|
|
message SoftResetNeighborResponse {
|
|
}
|
|
|
|
message ShutdownNeighborRequest {
|
|
string address = 1;
|
|
string communication = 2;
|
|
}
|
|
|
|
message ShutdownNeighborResponse {
|
|
}
|
|
|
|
message EnableNeighborRequest {
|
|
string address = 1;
|
|
}
|
|
|
|
message EnableNeighborResponse {
|
|
}
|
|
|
|
message DisableNeighborRequest {
|
|
string address = 1;
|
|
string communication = 2;
|
|
}
|
|
|
|
message DisableNeighborResponse {
|
|
}
|
|
|
|
message EnableMrtRequest {
|
|
int32 dump_type = 1;
|
|
string filename = 2;
|
|
uint64 interval = 3;
|
|
}
|
|
|
|
message EnableMrtResponse {
|
|
}
|
|
|
|
message DisableMrtRequest {
|
|
}
|
|
|
|
message DisableMrtResponse {
|
|
}
|
|
|
|
message InjectMrtRequest {
|
|
Resource resource = 1;
|
|
string vrf_id = 2;
|
|
repeated Path paths = 3;
|
|
}
|
|
|
|
message InjectMrtResponse {
|
|
}
|
|
|
|
message AddBmpRequest {
|
|
string address = 1;
|
|
uint32 port = 2;
|
|
enum MonitoringPolicy {
|
|
PRE = 0;
|
|
POST = 1;
|
|
BOTH = 2;
|
|
}
|
|
MonitoringPolicy type = 3;
|
|
}
|
|
|
|
message AddBmpResponse {
|
|
}
|
|
|
|
message DeleteBmpRequest {
|
|
string address = 1;
|
|
uint32 port = 2;
|
|
}
|
|
|
|
message DeleteBmpResponse {
|
|
}
|
|
|
|
message MonitorRibRequest {
|
|
Table table = 1;
|
|
bool current = 2;
|
|
}
|
|
|
|
message RPKIConf {
|
|
string address = 1;
|
|
string 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 GetRpkiRequest {
|
|
uint32 family = 1;
|
|
}
|
|
|
|
message GetRpkiResponse {
|
|
repeated Rpki servers = 1;
|
|
}
|
|
|
|
message AddRpkiRequest {
|
|
string address = 1;
|
|
uint32 port = 2;
|
|
int64 lifetime = 3;
|
|
}
|
|
|
|
message AddRpkiResponse {
|
|
}
|
|
|
|
message DeleteRpkiRequest {
|
|
string address = 1;
|
|
uint32 port = 2;
|
|
}
|
|
|
|
message DeleteRpkiResponse {
|
|
}
|
|
|
|
message EnableRpkiRequest {
|
|
string address = 1;
|
|
}
|
|
|
|
message EnableRpkiResponse {
|
|
}
|
|
|
|
message DisableRpkiRequest {
|
|
string address = 1;
|
|
}
|
|
|
|
message DisableRpkiResponse {
|
|
}
|
|
|
|
message ResetRpkiRequest {
|
|
string address = 1;
|
|
}
|
|
|
|
message ResetRpkiResponse {
|
|
}
|
|
|
|
message SoftResetRpkiRequest {
|
|
string address = 1;
|
|
}
|
|
|
|
message SoftResetRpkiResponse {
|
|
}
|
|
|
|
message EnableZebraRequest {
|
|
string url = 1;
|
|
repeated string route_types = 2;
|
|
uint32 version = 3;
|
|
bool nexthop_trigger_enable = 4;
|
|
uint32 nexthop_trigger_delay = 5;
|
|
}
|
|
|
|
message EnableZebraResponse {
|
|
}
|
|
|
|
message GetVrfRequest {
|
|
}
|
|
|
|
message GetVrfResponse {
|
|
repeated Vrf vrfs = 1;
|
|
}
|
|
|
|
message AddVrfRequest {
|
|
Vrf vrf = 1;
|
|
}
|
|
|
|
message AddVrfResponse {
|
|
}
|
|
|
|
message DeleteVrfRequest {
|
|
Vrf vrf = 1;
|
|
}
|
|
|
|
message DeleteVrfResponse {
|
|
}
|
|
|
|
message GetDefinedSetRequest {
|
|
DefinedType type = 1;
|
|
string name = 2;
|
|
}
|
|
|
|
message GetDefinedSetResponse {
|
|
repeated DefinedSet sets = 1;
|
|
}
|
|
|
|
message AddDefinedSetRequest {
|
|
DefinedSet set = 1;
|
|
}
|
|
|
|
message AddDefinedSetResponse {
|
|
}
|
|
|
|
message DeleteDefinedSetRequest {
|
|
DefinedSet set = 1;
|
|
bool all = 2;
|
|
}
|
|
|
|
message DeleteDefinedSetResponse {
|
|
}
|
|
|
|
message ReplaceDefinedSetRequest {
|
|
DefinedSet set = 1;
|
|
}
|
|
|
|
message ReplaceDefinedSetResponse {
|
|
}
|
|
|
|
message GetStatementRequest {
|
|
}
|
|
|
|
message GetStatementResponse {
|
|
repeated Statement statements = 1;
|
|
}
|
|
|
|
message AddStatementRequest {
|
|
Statement statement = 1;
|
|
}
|
|
|
|
message AddStatementResponse {
|
|
}
|
|
|
|
message DeleteStatementRequest {
|
|
Statement statement = 1;
|
|
bool all = 2;
|
|
}
|
|
|
|
message DeleteStatementResponse {
|
|
}
|
|
|
|
message ReplaceStatementRequest {
|
|
Statement statement = 1;
|
|
}
|
|
|
|
message ReplaceStatementResponse {
|
|
}
|
|
|
|
message GetPolicyRequest {
|
|
}
|
|
|
|
message GetPolicyResponse {
|
|
repeated Policy policies = 1;
|
|
}
|
|
|
|
message AddPolicyRequest {
|
|
Policy policy = 1;
|
|
// if this flag is set, gobgpd won't define new statements
|
|
// but refer existing statements using statement's names in this arguments.
|
|
bool refer_existing_statements = 2;
|
|
}
|
|
|
|
message AddPolicyResponse {
|
|
}
|
|
|
|
message DeletePolicyRequest {
|
|
Policy policy = 1;
|
|
// if this flag is set, gobgpd won't delete any statements
|
|
// even if some statements get not used by any policy by this operation.
|
|
bool preserve_statements = 2;
|
|
bool all = 3;
|
|
}
|
|
|
|
message DeletePolicyResponse {
|
|
}
|
|
|
|
message ReplacePolicyRequest {
|
|
Policy policy = 1;
|
|
// if this flag is set, gobgpd won't define new statements
|
|
// but refer existing statements using statement's names in this arguments.
|
|
bool refer_existing_statements = 2;
|
|
// if this flag is set, gobgpd won't delete any statements
|
|
// even if some statements get not used by any policy by this operation.
|
|
bool preserve_statements = 3;
|
|
}
|
|
|
|
message ReplacePolicyResponse {
|
|
}
|
|
|
|
message GetPolicyAssignmentRequest {
|
|
PolicyAssignment assignment = 1;
|
|
}
|
|
|
|
message GetPolicyAssignmentResponse {
|
|
PolicyAssignment assignment = 1;
|
|
}
|
|
|
|
message AddPolicyAssignmentRequest {
|
|
PolicyAssignment assignment = 1;
|
|
}
|
|
|
|
message AddPolicyAssignmentResponse {
|
|
}
|
|
|
|
message DeletePolicyAssignmentRequest {
|
|
PolicyAssignment assignment = 1;
|
|
bool all = 2;
|
|
}
|
|
|
|
message DeletePolicyAssignmentResponse {
|
|
}
|
|
|
|
message ReplacePolicyAssignmentRequest {
|
|
PolicyAssignment assignment = 1;
|
|
}
|
|
|
|
message ReplacePolicyAssignmentResponse {
|
|
}
|
|
|
|
message GetServerRequest {
|
|
}
|
|
|
|
message GetServerResponse {
|
|
Global global = 1;
|
|
}
|
|
|
|
message StartServerRequest {
|
|
Global global = 1;
|
|
}
|
|
|
|
message StartServerResponse {
|
|
}
|
|
|
|
message StopServerRequest {
|
|
}
|
|
|
|
message StopServerResponse {
|
|
}
|
|
|
|
enum Resource {
|
|
GLOBAL = 0;
|
|
LOCAL = 1;
|
|
ADJ_IN = 2;
|
|
ADJ_OUT = 3;
|
|
VRF = 4;
|
|
}
|
|
|
|
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;
|
|
bool stale = 12;
|
|
bool is_from_external = 13;
|
|
string neighbor_ip = 14;
|
|
bytes uuid = 15; // only paths installed by AddPath API have this
|
|
bool is_nexthop_invalid = 16;
|
|
uint32 identifier = 17;
|
|
}
|
|
|
|
message Destination {
|
|
string prefix = 1;
|
|
repeated Path paths = 2;
|
|
bool longer_prefixes = 3;
|
|
bool shorter_prefixes = 4;
|
|
}
|
|
|
|
message Table {
|
|
Resource type = 1;
|
|
string name = 2;
|
|
uint32 family = 3;
|
|
repeated Destination destinations = 4;
|
|
bool post_policy = 5;
|
|
}
|
|
|
|
message GetRibRequest {
|
|
Table table = 1;
|
|
}
|
|
|
|
message GetRibResponse {
|
|
Table table = 1;
|
|
}
|
|
|
|
message ValidateRibRequest {
|
|
Resource type = 1;
|
|
uint32 family = 2;
|
|
string prefix = 3;
|
|
}
|
|
|
|
message ValidateRibResponse {
|
|
}
|
|
|
|
message Peer {
|
|
repeated uint32 families = 1;
|
|
ApplyPolicy apply_policy = 2;
|
|
PeerConf conf = 3;
|
|
EbgpMultihop ebgp_multihop = 4;
|
|
RouteReflector route_reflector = 5;
|
|
PeerState info = 6;
|
|
Timers timers = 7;
|
|
Transport transport = 8;
|
|
RouteServer route_server = 9;
|
|
GracefulRestart graceful_restart = 10;
|
|
repeated AfiSafi afi_safis = 11;
|
|
}
|
|
|
|
message ApplyPolicy {
|
|
PolicyAssignment in_policy = 1;
|
|
PolicyAssignment export_policy = 2;
|
|
PolicyAssignment import_policy = 3;
|
|
}
|
|
|
|
message PrefixLimit {
|
|
uint32 family = 1;
|
|
uint32 max_prefixes = 2;
|
|
uint32 shutdown_threshold_pct = 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;
|
|
enum RemovePrivateAs {
|
|
NONE = 0;
|
|
ALL = 1;
|
|
REPLACE = 2;
|
|
}
|
|
RemovePrivateAs 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;
|
|
// Note: Regarding to the consistency with OpenConfig mode, list of
|
|
// PrefixLimit should be removed from here, and list of PrefixLimit in
|
|
// AfiSafi should be used instead.
|
|
repeated PrefixLimit prefix_limits = 14;
|
|
string local_address = 15;
|
|
string neighbor_interface = 16;
|
|
string vrf = 17;
|
|
uint32 allow_own_as = 18;
|
|
bool replace_peer_as = 19;
|
|
}
|
|
|
|
message EbgpMultihop {
|
|
bool enabled = 1;
|
|
uint32 multihop_ttl = 2;
|
|
}
|
|
|
|
message RouteReflector {
|
|
bool route_reflector_client = 1;
|
|
string 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;
|
|
enum AdminState {
|
|
UP = 0;
|
|
DOWN = 1;
|
|
PFX_CT = 2; // prefix counter over limit
|
|
}
|
|
AdminState 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 GracefulRestart {
|
|
bool enabled = 1;
|
|
uint32 restart_time = 2;
|
|
bool helper_only = 3;
|
|
uint32 deferral_time = 4;
|
|
bool notification_enabled = 5;
|
|
bool longlived_enabled = 6;
|
|
}
|
|
|
|
message MpGracefulRestartConfig {
|
|
bool enabled = 1;
|
|
}
|
|
|
|
message MpGracefulRestartState {
|
|
bool enabled = 1;
|
|
bool received = 2;
|
|
bool advertised = 3;
|
|
bool end_of_rib_received = 4;
|
|
bool end_of_rib_sent = 5;
|
|
}
|
|
message MpGracefulRestart {
|
|
MpGracefulRestartConfig config = 1;
|
|
MpGracefulRestartState state = 2;
|
|
}
|
|
|
|
message AfiSafiConfig {
|
|
uint32 family = 1;
|
|
bool enabled = 2;
|
|
}
|
|
|
|
message AfiSafiState {
|
|
uint32 family = 1;
|
|
bool enabled = 2;
|
|
uint32 total_paths = 3;
|
|
uint32 total_prefixes = 4;
|
|
}
|
|
|
|
message RouteSelectionOptionsConfig {
|
|
bool always_compare_med = 1;
|
|
bool ignore_as_path_length = 2;
|
|
bool external_compare_router_id = 3;
|
|
bool advertise_inactive_routes = 4;
|
|
bool enable_aigp = 5;
|
|
bool ignore_next_hop_igp_metric = 6;
|
|
}
|
|
|
|
message RouteSelectionOptionsState {
|
|
bool always_compare_med = 1;
|
|
bool ignore_as_path_length = 2;
|
|
bool external_compare_router_id = 3;
|
|
bool advertise_inactive_routes = 4;
|
|
bool enable_aigp = 5;
|
|
bool ignore_next_hop_igp_metric = 6;
|
|
}
|
|
|
|
message RouteSelectionOptions {
|
|
RouteSelectionOptionsConfig config = 1;
|
|
RouteSelectionOptionsState state = 2;
|
|
}
|
|
|
|
message UseMultiplePathsConfig {
|
|
bool enabled = 1;
|
|
}
|
|
|
|
message UseMultiplePathsState {
|
|
bool enabled = 1;
|
|
}
|
|
|
|
message EbgpConfig {
|
|
bool allow_multiple_as = 1;
|
|
uint32 maximum_paths = 2;
|
|
}
|
|
|
|
message EbgpState {
|
|
bool allow_multiple_as = 1;
|
|
uint32 maximum_paths = 2;
|
|
}
|
|
|
|
message Ebgp {
|
|
EbgpConfig config = 1;
|
|
EbgpState state = 2;
|
|
}
|
|
|
|
message IbgpConfig {
|
|
uint32 maximum_paths = 1;
|
|
}
|
|
|
|
message IbgpState {
|
|
uint32 maximum_paths = 1;
|
|
}
|
|
|
|
message Ibgp {
|
|
IbgpConfig config = 1;
|
|
IbgpState state = 2;
|
|
}
|
|
|
|
message UseMultiplePaths {
|
|
UseMultiplePathsConfig config = 1;
|
|
UseMultiplePathsState state = 2;
|
|
Ebgp ebgp = 3;
|
|
Ibgp ibgp = 4;
|
|
}
|
|
|
|
message RouteTargetMembershipConfig {
|
|
uint32 deferral_time = 1;
|
|
}
|
|
|
|
message RouteTargetMembershipState {
|
|
uint32 deferral_time = 1;
|
|
}
|
|
|
|
message RouteTargetMembership {
|
|
RouteTargetMembershipConfig config = 1;
|
|
RouteTargetMembershipState state = 2;
|
|
}
|
|
|
|
message LongLivedGracefulRestartConfig {
|
|
bool enabled = 1;
|
|
uint32 restart_time = 2;
|
|
}
|
|
|
|
message LongLivedGracefulRestartState {
|
|
bool enabled = 1;
|
|
bool received = 2;
|
|
bool advertised = 3;
|
|
uint32 peer_restart_time = 4;
|
|
bool peer_restart_timer_expired = 5;
|
|
}
|
|
|
|
message LongLivedGracefulRestart {
|
|
LongLivedGracefulRestartConfig config = 1;
|
|
LongLivedGracefulRestartState state = 2;
|
|
}
|
|
|
|
message AfiSafi {
|
|
MpGracefulRestart mp_graceful_restart = 1;
|
|
AfiSafiConfig config = 2;
|
|
ApplyPolicy apply_policy = 3;
|
|
// TODO:
|
|
// Support the following structures:
|
|
// - Ipv4Unicast
|
|
// - Ipv6Unicast
|
|
// - Ipv4LabelledUnicast
|
|
// - Ipv6LabelledUnicast
|
|
// - L3vpnIpv4Unicast
|
|
// - L3vpnIpv6Unicast
|
|
// - L3vpnIpv4Multicast
|
|
// - L3vpnIpv6Multicast
|
|
// - L2vpnVpls
|
|
// - L2vpnEvpn
|
|
RouteSelectionOptions route_selection_options = 4;
|
|
UseMultiplePaths use_multiple_paths = 5;
|
|
PrefixLimit prefix_limits = 6;
|
|
RouteTargetMembership route_target_membership = 7;
|
|
LongLivedGracefulRestart long_lived_graceful_restart = 8;
|
|
}
|
|
|
|
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;
|
|
LARGE_COMMUNITY = 6;
|
|
}
|
|
|
|
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 RouteType {
|
|
ROUTE_TYPE_NONE = 0;
|
|
ROUTE_TYPE_INTERNAL = 1;
|
|
ROUTE_TYPE_EXTERNAL = 2;
|
|
ROUTE_TYPE_LOCAL = 3;
|
|
}
|
|
RouteType route_type = 8;
|
|
MatchSet large_community_set = 9;
|
|
}
|
|
|
|
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 NexthopAction {
|
|
string address = 1;
|
|
bool self = 2;
|
|
}
|
|
|
|
message LocalPrefAction {
|
|
uint32 value = 1;
|
|
}
|
|
|
|
message Actions {
|
|
RouteAction route_action = 1;
|
|
CommunityAction community = 2;
|
|
MedAction med = 3;
|
|
AsPrependAction as_prepend = 4;
|
|
CommunityAction ext_community = 5;
|
|
NexthopAction nexthop = 6;
|
|
LocalPrefAction local_pref = 7;
|
|
CommunityAction large_community = 8;
|
|
}
|
|
|
|
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 Roa {
|
|
uint32 as = 1;
|
|
uint32 prefixlen = 2;
|
|
uint32 maxlen = 3;
|
|
string prefix = 4;
|
|
RPKIConf conf = 5;
|
|
}
|
|
|
|
message GetRoaRequest {
|
|
uint32 family = 1;
|
|
}
|
|
|
|
message GetRoaResponse {
|
|
repeated Roa roas = 1;
|
|
}
|
|
|
|
message Vrf {
|
|
string name = 1;
|
|
bytes rd = 2;
|
|
repeated bytes import_rt = 3;
|
|
repeated bytes export_rt = 4;
|
|
uint32 id = 5;
|
|
}
|
|
|
|
message Global {
|
|
uint32 as = 1;
|
|
string router_id = 2;
|
|
int32 listen_port = 3;
|
|
repeated string listen_addresses = 4;
|
|
repeated uint32 families = 5;
|
|
bool use_multiple_paths = 6;
|
|
}
|
|
|
|
message TableInfo {
|
|
Resource type = 1;
|
|
string name = 2;
|
|
uint32 family = 3;
|
|
uint64 num_destination = 4;
|
|
uint64 num_path = 5;
|
|
uint64 num_accepted = 6; // only meaningful when type == ADJ_IN
|
|
}
|
|
|
|
message GetRibInfoRequest {
|
|
TableInfo info = 1;
|
|
}
|
|
|
|
message GetRibInfoResponse {
|
|
TableInfo info = 1;
|
|
}
|