1
0
Fork 0
mirror of https://github.com/pavel-odintsov/fastnetmon synced 2024-06-08 20:56:07 +02:00

Add protoc buuilder got gobgp

This commit is contained in:
Pavel Odintsov 2015-10-04 12:53:06 +02:00
parent e61fd9386f
commit 713c2959f7
2 changed files with 312 additions and 1 deletions

View File

@ -243,9 +243,24 @@ if (ENABLE_GOBGP_SUPPORT)
if (GRPC_INCLUDES_FOLDER AND GRPC_LIBRARY_GRPC_PATH AND GRPC_LIBRARY_GPR_PATH)
include_directories(${GRPC_INCLUDES_FOLDER})
endif()
else()
message(STATUS "Could not find gRPC library")
endif()
message(STATUS "grpc: ${GRPC_INCLUDES_FOLDER} ${GRPC_LIBRARY_GRPC_PATH} ${GRPC_LIBRARY_GPR_PATH}")
message(STATUS ${PROJECT_BINARY_DIR})
set(PROTOC_BINARY "/opt/protobuf_3.0.0_alpha4/bin/protoc")
#set(PROTOC_BINARY "protoc")
set(GRPC_CPP_PLUGIN "${GRPC_CUSTOM_INSTALL_PATH}/bin/grpc_cpp_plugin")
set(PROTOC_COMPILATION_COMMAND "${PROTOC_BINARY} -I ${PROJECT_BINARY_DIR}/../actions --grpc_out=${PROJECT_BINARY_DIR}/../actions --plugin=protoc-gen-grpc=${GRPC_CPP_PLUGIN} ${PROJECT_BINARY_DIR}/../actions/gobgp_api_client.proto")
message(STATUS ${PROTOC_COMPILATION_COMMAND})
execute_process(COMMAND "${PROTOC_COMPILATION_COMMAND}" ERROR_VARIABLE PROTOC_STDERR RESULT_VARIABLE PROTOC_RETURN_CODE OUTPUT_STRIP_TRAILING_WHITESPACE)
message(STATUS "Protoc return code: ${PROTOC_RETURN_CODE} std err: ${PROTOC_STDERR}")
if (GOBGP_INCLUDES_FOLDER AND GOBGP_LIBRARY_PATH)
message(STATUS "We found libgobgp and will link it")
include_directories(${GOBGP_INCLUDES_FOLDER})

View File

@ -0,0 +1,296 @@
// 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 GetNeighbors(Arguments) returns (stream Peer) {}
rpc GetNeighbor(Arguments) returns (Peer) {}
rpc GetRib(Arguments) returns (stream Destination) {}
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 GetNeighborPolicy(Arguments) returns (ApplyPolicy) {}
rpc ModNeighborPolicy(stream PolicyArguments) returns (stream Error) {}
rpc GetPolicyRoutePolicies(PolicyArguments) returns (stream PolicyDefinition) {}
rpc GetPolicyRoutePolicy(PolicyArguments) returns (PolicyDefinition) {}
rpc ModPolicyRoutePolicy(stream PolicyArguments) returns (stream Error) {}
rpc MonitorBestChanged(Arguments) returns (stream Destination) {}
rpc MonitorPeerState(Arguments) returns (stream Peer) {}
rpc GetMrt(MrtArguments) returns (stream MrtMessage) {}
rpc GetRPKI(Arguments) returns (stream RPKI) {}
rpc GetROA(Arguments) returns (stream ROA) {}
rpc GetVrfs(Arguments) returns (stream Vrf) {}
rpc ModVrf(ModVrfArguments) 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 PolicyArguments {
Resource resource = 1;
Operation operation = 2;
string neighbor_address = 3;
string name = 4;
PolicyDefinition policy_definition = 6;
ApplyPolicy apply_policy = 7;
}
message MrtArguments {
Resource resource = 1;
uint32 rf = 2;
uint64 interval = 3;
string neighbor_address = 4;
}
message ModVrfArguments {
Operation operation = 1;
Vrf vrf = 2;
}
enum Resource {
GLOBAL = 0;
LOCAL = 1;
ADJ_IN = 2;
ADJ_OUT = 3;
POLICY_PREFIX = 4;
POLICY_NEIGHBOR = 5;
POLICY_ASPATH = 6;
POLICY_COMMUNITY = 7;
POLICY_ROUTEPOLICY = 8;
POLICY_EXTCOMMUNITY = 9;
VRF = 10;
}
enum Operation {
ADD = 0;
DEL = 1;
DEL_ALL = 2;
}
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;
}
message Destination {
string prefix = 1;
repeated Path paths = 2;
}
message PeerConf {
string remote_ip = 1;
string id = 2;
uint32 remote_as = 3;
repeated bytes remote_cap = 6;
repeated bytes local_cap = 7;
uint32 holdtime = 8;
uint32 keepalive_interval = 9;
}
message PeerInfo {
string bgp_state = 1;
string admin_state = 2;
uint32 fsm_established_transitions = 3;
uint64 total_message_out = 4;
uint64 total_message_in = 5;
uint64 update_message_out = 6;
uint64 update_message_in = 7;
uint64 keep_alive_message_out = 8;
uint64 keep_alive_message_in = 9;
uint64 open_message_out = 10;
uint64 open_message_in = 11;
uint64 notification_out = 12;
uint64 notification_in = 13;
uint64 refresh_message_out = 14;
uint64 refresh_message_in = 15;
uint64 discarded_out = 16;
uint64 discarded_in = 17;
int64 uptime = 18;
int64 downtime = 19;
string last_error = 20;
uint32 received = 21;
uint32 accepted = 22;
uint32 advertized = 23;
uint32 out_q = 24;
uint32 flops = 25;
uint32 negotiated_holdtime = 26;
uint32 keepalive_interval = 27;
}
message Peer {
PeerConf conf = 1;
PeerInfo info = 2;
}
message Prefix {
string ip_prefix = 1;
string mask_length_range = 2;
}
message PrefixSet {
string prefix_set_name = 1;
repeated Prefix prefix_list = 2;
string match_set_options = 3;
}
message Neighbor {
string address = 1;
}
message NeighborSet {
string neighbor_set_name = 1;
repeated Neighbor neighbor_list = 2;
string match_set_options = 3;
}
message AsPathLength {
string value = 1;
string operator = 2;
}
message AsPathSet {
string as_path_set_name = 1;
repeated string as_path_members = 2;
string match_set_options = 3;
}
message CommunitySet {
string community_set_name = 1;
repeated string community_members = 2;
string match_set_options = 3;
}
message ExtCommunitySet {
string ext_community_set_name = 1;
repeated string ext_community_members = 2;
string match_set_options = 3;
}
message Conditions {
PrefixSet match_prefix_set = 1;
NeighborSet match_neighbor_set = 2;
AsPathLength match_as_path_length = 3;
AsPathSet match_as_path_set = 4;
CommunitySet match_community_set = 5;
ExtCommunitySet match_ext_community_set = 6;
}
message CommunityAction {
repeated string communities = 1;
string options = 2;
}
message AsPrependAction {
string as = 1;
uint32 repeatn = 2;
}
message Actions {
string route_action = 1;
CommunityAction community = 2;
string med = 3;
AsPrependAction as_prepend = 4;
CommunityAction ext_community = 5;
}
message Statement {
string statement_neme = 1;
Conditions conditions = 2;
Actions actions = 3;
}
message PolicyDefinition {
string policy_definition_name = 1;
repeated Statement statement_list = 2;
}
message ApplyPolicy {
repeated PolicyDefinition import_policies = 1;
string default_import_policy = 2;
repeated PolicyDefinition export_policies = 3;
string default_export_policy = 4;
repeated PolicyDefinition in_policies = 5;
string default_in_policy = 6;
}
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;
}