mirror of
https://github.com/osrg/gobgp.git
synced 2024-05-11 05:55:10 +00:00
564 lines
12 KiB
Protocol Buffer
564 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(stream ModPathArguments) returns (Error) {}
|
|
rpc MonitorBestChanged(Arguments) returns (stream Destination) {}
|
|
rpc MonitorPeerState(Arguments) returns (stream Peer) {}
|
|
rpc GetMrt(MrtArguments) returns (stream MrtMessage) {}
|
|
rpc ModMrt(ModMrtArguments) 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 rf = 2;
|
|
string name = 3;
|
|
}
|
|
|
|
message ModPathArguments {
|
|
Resource resource = 1;
|
|
string name = 2;
|
|
repeated Path paths = 3;
|
|
}
|
|
|
|
message ModNeighborArguments {
|
|
Operation operation = 1;
|
|
Peer peer = 2;
|
|
}
|
|
|
|
message MrtArguments {
|
|
Resource resource = 1;
|
|
uint32 rf = 2;
|
|
uint64 interval = 3;
|
|
string neighbor_address = 4;
|
|
}
|
|
|
|
message ModMrtArguments {
|
|
Operation operation = 1;
|
|
string filename = 2;
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
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 rf = 8;
|
|
uint32 source_asn = 9;
|
|
string source_id = 10;
|
|
bool filtered = 11;
|
|
}
|
|
|
|
message Destination {
|
|
string prefix = 1;
|
|
repeated Path paths = 2;
|
|
}
|
|
|
|
message Table {
|
|
Resource type = 1;
|
|
string name = 2;
|
|
uint32 family = 3;
|
|
repeated Destination destinations = 4;
|
|
}
|
|
|
|
message Peer {
|
|
AddPaths addpaths = 1;
|
|
AfiSafis afisafis = 2;
|
|
ApplyPolicy apply_policy = 3;
|
|
AsPathOptions as_path_options = 4;
|
|
PeerConf conf = 5;
|
|
EbgpMultihop ebgp_multihop = 6;
|
|
ErrorHandling error_handling = 7;
|
|
PeerGracefulRestart graceful_restart = 8;
|
|
LoggingOptions logging_options = 9;
|
|
RouteReflector route_reflector = 10;
|
|
PeerState info = 11;
|
|
Timers timers = 12;
|
|
Transport transport = 13;
|
|
UseMultiplePaths use_multiple_paths = 14;
|
|
RouteServer route_server = 15;
|
|
}
|
|
|
|
message AddPaths {
|
|
bool receive = 1;
|
|
uint32 send_max = 2;
|
|
}
|
|
|
|
message AfiSafis {
|
|
repeated AfiSafi afisafi = 1;
|
|
}
|
|
|
|
message AfiSafi {
|
|
string name = 1;
|
|
ApplyPolicy apply_policy = 2;
|
|
bool enabled = 3;
|
|
AfiSafiGracefulRestart graceful_restart = 4;
|
|
LabelledUnicast ipv4_labelled_unicast = 5;
|
|
Unicast ipv4_unicast = 6;
|
|
LabelledUnicast ipv6_labelled_unicast = 7;
|
|
Unicast ipv6_unicast = 8;
|
|
Vpn l2_vpn_evpn = 9;
|
|
Vpn l2_vpn_vpls = 10;
|
|
Vpn l3_vpn_ipv4_multicast = 11;
|
|
Vpn l3_vpn_ipv4_unicast = 12;
|
|
Vpn l3_vpn_ipv6_multicast = 13;
|
|
Vpn l3_vpn_ipv6_unicast = 14;
|
|
UseMultiplePaths use_multiple_paths = 15;
|
|
bool active = 16;
|
|
Prefixes prefixes = 17;
|
|
}
|
|
|
|
message ApplyPolicy {
|
|
PolicyAssignment in_policy = 1;
|
|
PolicyAssignment export_policy = 2;
|
|
PolicyAssignment import_policy = 3;
|
|
}
|
|
|
|
message AfiSafiGracefulRestart {
|
|
bool advertised = 1;
|
|
bool enabled = 2;
|
|
bool received = 3;
|
|
}
|
|
|
|
message LabelledUnicast {
|
|
PrefixLimit prefix_limit = 1;
|
|
}
|
|
|
|
message PrefixLimit {
|
|
uint32 max_prefixes = 1;
|
|
uint64 restart_timer = 2;
|
|
uint32 shutdown_threshold_pct = 3;
|
|
}
|
|
|
|
message Unicast {
|
|
bool send_default_route = 1;
|
|
PrefixLimit prefix_limit = 2;
|
|
}
|
|
|
|
message Vpn {
|
|
PrefixLimit prefix_limit = 1;
|
|
}
|
|
|
|
message Prefixes {
|
|
uint32 installed = 1;
|
|
uint32 received = 2;
|
|
uint32 sent = 3;
|
|
}
|
|
|
|
message UseMultiplePaths {
|
|
bool enabled = 1;
|
|
Ebgp ebgp = 2;
|
|
}
|
|
|
|
message Ebgp {
|
|
bool allow_multiple_as = 1;
|
|
}
|
|
|
|
message AsPathOptions {
|
|
uint32 allow_own_as = 1;
|
|
bool replace_peer_as = 2;
|
|
}
|
|
|
|
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 ErrorHandling {
|
|
uint32 erroneous_update_messages = 1;
|
|
bool treat_as_withdraw = 2;
|
|
}
|
|
|
|
message PeerGracefulRestart {
|
|
bool enabled = 1;
|
|
bool helper_only = 2;
|
|
bool local_restarting = 3;
|
|
uint32 mode = 4;
|
|
uint32 peer_restart_time = 5;
|
|
bool peer_restarting = 6;
|
|
uint32 restart_time = 7;
|
|
uint64 stale_routes_time = 8;
|
|
}
|
|
|
|
message LoggingOptions {
|
|
bool logNeighbor_state_changes = 1;
|
|
}
|
|
|
|
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 advertized = 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;
|
|
}
|
|
|
|
message RPKIState {
|
|
int64 uptime = 1;
|
|
int64 downtime = 2;
|
|
int32 received_ipv4 = 3;
|
|
int32 received_ipv6 = 4;
|
|
}
|
|
|
|
message RPKI {
|
|
RPKIConf conf = 1;
|
|
RPKIState state = 2;
|
|
}
|
|
|
|
message ROA {
|
|
uint32 as = 1;
|
|
uint32 prefixlen = 2;
|
|
uint32 maxlen = 3;
|
|
string prefix = 4;
|
|
}
|
|
|
|
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;
|
|
}
|