summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2018-07-10 14:06:08 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2018-08-08 21:24:48 +0900
commit71e56c542e6a167dc3cd983aae2881a3c24c162a (patch)
treea449e3ed0889940fe47bb5f4ffca91228a4cc7e8
parent3dc23d3075f13f2976afd255ef2fd9b1410acc77 (diff)
rpc cleanup
- clean up RPC function names - rewrite gobgp command to use the api instead of config package - delete unused client package Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r--api/attribute.pb.go3
-rw-r--r--api/capability.pb.go3
-rw-r--r--api/gobgp.pb.go5926
-rw-r--r--api/gobgp.proto741
-rw-r--r--cmd/gobgp/cmd/bmp.go20
-rw-r--r--cmd/gobgp/cmd/common.go83
-rw-r--r--cmd/gobgp/cmd/global.go63
-rw-r--r--cmd/gobgp/cmd/monitor.go35
-rw-r--r--cmd/gobgp/cmd/mrt.go11
-rw-r--r--cmd/gobgp/cmd/neighbor.go422
-rw-r--r--cmd/gobgp/cmd/policy.go118
-rw-r--r--cmd/gobgp/cmd/root.go16
-rw-r--r--cmd/gobgp/cmd/rpki.go98
-rw-r--r--cmd/gobgp/cmd/rpki_test.go6
-rw-r--r--cmd/gobgp/cmd/vrf.go45
-rw-r--r--cmd/gobgpd/main.go27
-rw-r--r--internal/pkg/client/client.go850
-rw-r--r--internal/pkg/client/client_test.go55
-rw-r--r--internal/pkg/table/message_test.go2
-rw-r--r--internal/pkg/table/path_test.go2
-rw-r--r--pkg/server/grpc_server.go661
-rw-r--r--pkg/server/peer.go2
-rw-r--r--pkg/server/server.go2
-rw-r--r--test/lib/gobgp.py12
-rw-r--r--test/scenario_test/aspath_test.py18
-rw-r--r--test/scenario_test/route_server_softreset_test.py11
-rw-r--r--test/scenario_test/route_server_test2.py8
-rw-r--r--test/scenario_test/rtc_test.py4
28 files changed, 3901 insertions, 5343 deletions
diff --git a/api/attribute.pb.go b/api/attribute.pb.go
index 79535b7c..886a8e6e 100644
--- a/api/attribute.pb.go
+++ b/api/attribute.pb.go
@@ -1,5 +1,6 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-go.
// source: attribute.proto
+// DO NOT EDIT!
package gobgpapi
diff --git a/api/capability.pb.go b/api/capability.pb.go
index 9e468509..9fcccbe8 100644
--- a/api/capability.pb.go
+++ b/api/capability.pb.go
@@ -1,5 +1,6 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-go.
// source: capability.proto
+// DO NOT EDIT!
package gobgpapi
diff --git a/api/gobgp.pb.go b/api/gobgp.pb.go
index 0738c0a0..92873288 100644
--- a/api/gobgp.pb.go
+++ b/api/gobgp.pb.go
@@ -1,5 +1,6 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-go.
// source: gobgp.proto
+// DO NOT EDIT!
/*
Package gobgpapi is a generated protocol buffer package.
@@ -10,123 +11,80 @@ It is generated from these files:
capability.proto
It has these top-level messages:
- GetNeighborRequest
- GetNeighborResponse
- Arguments
- AddPathRequest
- AddPathResponse
- DeletePathRequest
- DeletePathResponse
- AddNeighborRequest
- AddNeighborResponse
- DeleteNeighborRequest
- DeleteNeighborResponse
- UpdateNeighborRequest
- UpdateNeighborResponse
+ StartBgpRequest
+ StopBgpRequest
+ GetBgpRequest
+ GetBgpResponse
+ AddPeerRequest
+ DeletePeerRequest
+ ListPeerRequest
+ ListPeerResponse
+ UpdatePeerRequest
+ UpdatePeerResponse
+ ResetPeerRequest
+ ShutdownPeerRequest
+ EnablePeerRequest
+ DisablePeerRequest
+ MonitorPeerRequest
+ MonitorPeerResponse
AddPeerGroupRequest
- AddPeerGroupResponse
DeletePeerGroupRequest
- DeletePeerGroupResponse
UpdatePeerGroupRequest
UpdatePeerGroupResponse
AddDynamicNeighborRequest
- AddDynamicNeighborResponse
- ResetNeighborRequest
- ResetNeighborResponse
- SoftResetNeighborRequest
- SoftResetNeighborResponse
- ShutdownNeighborRequest
- ShutdownNeighborResponse
- EnableNeighborRequest
- EnableNeighborResponse
- DisableNeighborRequest
- DisableNeighborResponse
- UpdatePolicyRequest
- UpdatePolicyResponse
- EnableMrtRequest
- EnableMrtResponse
- DisableMrtRequest
- DisableMrtResponse
- InjectMrtRequest
- InjectMrtResponse
- AddBmpRequest
- AddBmpResponse
- DeleteBmpRequest
- DeleteBmpResponse
- MonitorRibRequest
- RPKIConf
- RPKIState
- Rpki
- GetRpkiRequest
- GetRpkiResponse
- AddRpkiRequest
- AddRpkiResponse
- DeleteRpkiRequest
- DeleteRpkiResponse
- EnableRpkiRequest
- EnableRpkiResponse
- DisableRpkiRequest
- DisableRpkiResponse
- ResetRpkiRequest
- ResetRpkiResponse
- SoftResetRpkiRequest
- SoftResetRpkiResponse
- EnableZebraRequest
- EnableZebraResponse
- GetVrfRequest
- GetVrfResponse
+ AddPathRequest
+ AddPathResponse
+ DeletePathRequest
+ ListPathRequest
+ ListPathResponse
+ AddPathStreamRequest
+ GetTableRequest
+ GetTableResponse
+ MonitorTableRequest
+ MonitorTableResponse
AddVrfRequest
- AddVrfResponse
DeleteVrfRequest
- DeleteVrfResponse
- GetDefinedSetRequest
- GetDefinedSetResponse
+ ListVrfRequest
+ ListVrfResponse
+ AddPolicyRequest
+ DeletePolicyRequest
+ ListPolicyRequest
+ ListPolicyResponse
+ ReplacePolicyRequest
+ UpdatePolicyRequest
AddDefinedSetRequest
- AddDefinedSetResponse
DeleteDefinedSetRequest
- DeleteDefinedSetResponse
+ ListDefinedSetRequest
+ ListDefinedSetResponse
ReplaceDefinedSetRequest
- ReplaceDefinedSetResponse
- GetStatementRequest
- GetStatementResponse
AddStatementRequest
- AddStatementResponse
DeleteStatementRequest
- DeleteStatementResponse
+ ListStatementRequest
+ ListStatementResponse
ReplaceStatementRequest
- ReplaceStatementResponse
- GetPolicyRequest
- GetPolicyResponse
- AddPolicyRequest
- AddPolicyResponse
- DeletePolicyRequest
- DeletePolicyResponse
- ReplacePolicyRequest
- ReplacePolicyResponse
- GetPolicyAssignmentRequest
- GetPolicyAssignmentResponse
AddPolicyAssignmentRequest
- AddPolicyAssignmentResponse
DeletePolicyAssignmentRequest
- DeletePolicyAssignmentResponse
+ ListPolicyAssignmentRequest
+ ListPolicyAssignmentResponse
ReplacePolicyAssignmentRequest
- ReplacePolicyAssignmentResponse
- GetServerRequest
- GetServerResponse
- StartServerRequest
- StartServerResponse
- StopServerRequest
- StopServerResponse
+ AddRpkiRequest
+ DeleteRpkiRequest
+ ListRpkiRequest
+ ListRpkiResponse
+ EnableRpkiRequest
+ DisableRpkiRequest
+ ResetRpkiRequest
+ ListRpkiTableRequest
+ ListRpkiTableResponse
+ EnableZebraRequest
+ EnableMrtRequest
+ DisableMrtRequest
+ AddBmpRequest
+ DeleteBmpRequest
RPKIValidation
Path
Destination
- Table
- GetRibRequest
- GetRibResponse
TableLookupPrefix
- GetPathRequest
- ValidateRibRequest
- ValidateRibResponse
Peer
PeerGroup
DynamicNeighbor
@@ -190,19 +148,13 @@ It has these top-level messages:
PolicyAssignment
RoutingPolicy
Roa
- GetRoaRequest
- GetRoaResponse
Vrf
DefaultRouteDistance
Global
Confederation
- TableInfo
- GetRibInfoRequest
- GetRibInfoResponse
- AddCollectorRequest
- AddCollectorResponse
- ShutdownRequest
- ShutdownResponse
+ RPKIConf
+ RPKIState
+ Rpki
OriginAttribute
AsSegment
AsPathAttribute
@@ -297,6 +249,7 @@ import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import google_protobuf "github.com/golang/protobuf/ptypes/any"
+import google_protobuf1 "github.com/golang/protobuf/ptypes/empty"
import (
context "golang.org/x/net/context"
@@ -607,54 +560,54 @@ func (x MedActionType) String() string {
}
func (MedActionType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
-type PolicyType int32
+type PolicyDirection int32
const (
- PolicyType_IN PolicyType = 0
- PolicyType_IMPORT PolicyType = 1
- PolicyType_EXPORT PolicyType = 2
+ PolicyDirection_UNKNOWN PolicyDirection = 0
+ PolicyDirection_IMPORT PolicyDirection = 1
+ PolicyDirection_EXPORT PolicyDirection = 2
)
-var PolicyType_name = map[int32]string{
- 0: "IN",
+var PolicyDirection_name = map[int32]string{
+ 0: "UNKNOWN",
1: "IMPORT",
2: "EXPORT",
}
-var PolicyType_value = map[string]int32{
- "IN": 0,
- "IMPORT": 1,
- "EXPORT": 2,
+var PolicyDirection_value = map[string]int32{
+ "UNKNOWN": 0,
+ "IMPORT": 1,
+ "EXPORT": 2,
}
-func (x PolicyType) String() string {
- return proto.EnumName(PolicyType_name, int32(x))
+func (x PolicyDirection) String() string {
+ return proto.EnumName(PolicyDirection_name, int32(x))
}
-func (PolicyType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
+func (PolicyDirection) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
-type SoftResetNeighborRequest_SoftResetDirection int32
+type ResetPeerRequest_SoftResetDirection int32
const (
- SoftResetNeighborRequest_IN SoftResetNeighborRequest_SoftResetDirection = 0
- SoftResetNeighborRequest_OUT SoftResetNeighborRequest_SoftResetDirection = 1
- SoftResetNeighborRequest_BOTH SoftResetNeighborRequest_SoftResetDirection = 2
+ ResetPeerRequest_IN ResetPeerRequest_SoftResetDirection = 0
+ ResetPeerRequest_OUT ResetPeerRequest_SoftResetDirection = 1
+ ResetPeerRequest_BOTH ResetPeerRequest_SoftResetDirection = 2
)
-var SoftResetNeighborRequest_SoftResetDirection_name = map[int32]string{
+var ResetPeerRequest_SoftResetDirection_name = map[int32]string{
0: "IN",
1: "OUT",
2: "BOTH",
}
-var SoftResetNeighborRequest_SoftResetDirection_value = map[string]int32{
+var ResetPeerRequest_SoftResetDirection_value = map[string]int32{
"IN": 0,
"OUT": 1,
"BOTH": 2,
}
-func (x SoftResetNeighborRequest_SoftResetDirection) String() string {
- return proto.EnumName(SoftResetNeighborRequest_SoftResetDirection_name, int32(x))
+func (x ResetPeerRequest_SoftResetDirection) String() string {
+ return proto.EnumName(ResetPeerRequest_SoftResetDirection_name, int32(x))
}
-func (SoftResetNeighborRequest_SoftResetDirection) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor0, []int{23, 0}
+func (ResetPeerRequest_SoftResetDirection) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor0, []int{10, 0}
}
type AddBmpRequest_MonitoringPolicy int32
@@ -686,7 +639,7 @@ func (x AddBmpRequest_MonitoringPolicy) String() string {
return proto.EnumName(AddBmpRequest_MonitoringPolicy_name, int32(x))
}
func (AddBmpRequest_MonitoringPolicy) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor0, []int{39, 0}
+ return fileDescriptor0, []int{68, 0}
}
type RPKIValidation_State int32
@@ -714,7 +667,7 @@ var RPKIValidation_State_value = map[string]int32{
func (x RPKIValidation_State) String() string {
return proto.EnumName(RPKIValidation_State_name, int32(x))
}
-func (RPKIValidation_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{107, 0} }
+func (RPKIValidation_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{70, 0} }
type RPKIValidation_Reason int32
@@ -738,7 +691,7 @@ var RPKIValidation_Reason_value = map[string]int32{
func (x RPKIValidation_Reason) String() string {
return proto.EnumName(RPKIValidation_Reason_name, int32(x))
}
-func (RPKIValidation_Reason) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{107, 1} }
+func (RPKIValidation_Reason) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{70, 1} }
type PeerConf_RemovePrivateAs int32
@@ -762,9 +715,7 @@ var PeerConf_RemovePrivateAs_value = map[string]int32{
func (x PeerConf_RemovePrivateAs) String() string {
return proto.EnumName(PeerConf_RemovePrivateAs_name, int32(x))
}
-func (PeerConf_RemovePrivateAs) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor0, []int{122, 0}
-}
+func (PeerConf_RemovePrivateAs) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{79, 0} }
type PeerGroupConf_RemovePrivateAs int32
@@ -789,7 +740,7 @@ func (x PeerGroupConf_RemovePrivateAs) String() string {
return proto.EnumName(PeerGroupConf_RemovePrivateAs_name, int32(x))
}
func (PeerGroupConf_RemovePrivateAs) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor0, []int{123, 0}
+ return fileDescriptor0, []int{80, 0}
}
type PeerGroupState_RemovePrivateAs int32
@@ -815,9 +766,45 @@ func (x PeerGroupState_RemovePrivateAs) String() string {
return proto.EnumName(PeerGroupState_RemovePrivateAs_name, int32(x))
}
func (PeerGroupState_RemovePrivateAs) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor0, []int{124, 0}
+ return fileDescriptor0, []int{81, 0}
+}
+
+type PeerState_SessionState int32
+
+const (
+ PeerState_UNKNOWN PeerState_SessionState = 0
+ PeerState_IDLE PeerState_SessionState = 1
+ PeerState_CONNECT PeerState_SessionState = 2
+ PeerState_ACTIVE PeerState_SessionState = 3
+ PeerState_OPENSENT PeerState_SessionState = 4
+ PeerState_OPENCONFIRM PeerState_SessionState = 5
+ PeerState_ESTABLISHED PeerState_SessionState = 6
+)
+
+var PeerState_SessionState_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "IDLE",
+ 2: "CONNECT",
+ 3: "ACTIVE",
+ 4: "OPENSENT",
+ 5: "OPENCONFIRM",
+ 6: "ESTABLISHED",
+}
+var PeerState_SessionState_value = map[string]int32{
+ "UNKNOWN": 0,
+ "IDLE": 1,
+ "CONNECT": 2,
+ "ACTIVE": 3,
+ "OPENSENT": 4,
+ "OPENCONFIRM": 5,
+ "ESTABLISHED": 6,
}
+func (x PeerState_SessionState) String() string {
+ return proto.EnumName(PeerState_SessionState_name, int32(x))
+}
+func (PeerState_SessionState) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{84, 0} }
+
type PeerState_AdminState int32
const (
@@ -840,7 +827,7 @@ var PeerState_AdminState_value = map[string]int32{
func (x PeerState_AdminState) String() string {
return proto.EnumName(PeerState_AdminState_name, int32(x))
}
-func (PeerState_AdminState) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{127, 0} }
+func (PeerState_AdminState) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{84, 1} }
type Conditions_RouteType int32
@@ -867,283 +854,323 @@ var Conditions_RouteType_value = map[string]int32{
func (x Conditions_RouteType) String() string {
return proto.EnumName(Conditions_RouteType_name, int32(x))
}
-func (Conditions_RouteType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{168, 0} }
+func (Conditions_RouteType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{125, 0} }
-type GetNeighborRequest struct {
- EnableAdvertised bool `protobuf:"varint,1,opt,name=enableAdvertised" json:"enableAdvertised,omitempty"`
- Address string `protobuf:"bytes,2,opt,name=address" json:"address,omitempty"`
+type StartBgpRequest struct {
+ Global *Global `protobuf:"bytes,1,opt,name=global" json:"global,omitempty"`
}
-func (m *GetNeighborRequest) Reset() { *m = GetNeighborRequest{} }
-func (m *GetNeighborRequest) String() string { return proto.CompactTextString(m) }
-func (*GetNeighborRequest) ProtoMessage() {}
-func (*GetNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+func (m *StartBgpRequest) Reset() { *m = StartBgpRequest{} }
+func (m *StartBgpRequest) String() string { return proto.CompactTextString(m) }
+func (*StartBgpRequest) ProtoMessage() {}
+func (*StartBgpRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-func (m *GetNeighborRequest) GetEnableAdvertised() bool {
+func (m *StartBgpRequest) GetGlobal() *Global {
if m != nil {
- return m.EnableAdvertised
+ return m.Global
}
- return false
+ return nil
}
-func (m *GetNeighborRequest) GetAddress() string {
- if m != nil {
- return m.Address
- }
- return ""
+type StopBgpRequest struct {
+}
+
+func (m *StopBgpRequest) Reset() { *m = StopBgpRequest{} }
+func (m *StopBgpRequest) String() string { return proto.CompactTextString(m) }
+func (*StopBgpRequest) ProtoMessage() {}
+func (*StopBgpRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+type GetBgpRequest struct {
}
-type GetNeighborResponse struct {
- Peers []*Peer `protobuf:"bytes,1,rep,name=peers" json:"peers,omitempty"`
+func (m *GetBgpRequest) Reset() { *m = GetBgpRequest{} }
+func (m *GetBgpRequest) String() string { return proto.CompactTextString(m) }
+func (*GetBgpRequest) ProtoMessage() {}
+func (*GetBgpRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+
+type GetBgpResponse struct {
+ Global *Global `protobuf:"bytes,1,opt,name=global" json:"global,omitempty"`
}
-func (m *GetNeighborResponse) Reset() { *m = GetNeighborResponse{} }
-func (m *GetNeighborResponse) String() string { return proto.CompactTextString(m) }
-func (*GetNeighborResponse) ProtoMessage() {}
-func (*GetNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+func (m *GetBgpResponse) Reset() { *m = GetBgpResponse{} }
+func (m *GetBgpResponse) String() string { return proto.CompactTextString(m) }
+func (*GetBgpResponse) ProtoMessage() {}
+func (*GetBgpResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
-func (m *GetNeighborResponse) GetPeers() []*Peer {
+func (m *GetBgpResponse) GetGlobal() *Global {
if m != nil {
- return m.Peers
+ return m.Global
}
return nil
}
-type Arguments struct {
- Resource Resource `protobuf:"varint,1,opt,name=resource,enum=gobgpapi.Resource" json:"resource,omitempty"`
- Family uint32 `protobuf:"varint,2,opt,name=family" json:"family,omitempty"`
- Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
- Current bool `protobuf:"varint,4,opt,name=current" json:"current,omitempty"`
+type AddPeerRequest struct {
+ Peer *Peer `protobuf:"bytes,1,opt,name=peer" json:"peer,omitempty"`
}
-func (m *Arguments) Reset() { *m = Arguments{} }
-func (m *Arguments) String() string { return proto.CompactTextString(m) }
-func (*Arguments) ProtoMessage() {}
-func (*Arguments) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+func (m *AddPeerRequest) Reset() { *m = AddPeerRequest{} }
+func (m *AddPeerRequest) String() string { return proto.CompactTextString(m) }
+func (*AddPeerRequest) ProtoMessage() {}
+func (*AddPeerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
-func (m *Arguments) GetResource() Resource {
+func (m *AddPeerRequest) GetPeer() *Peer {
if m != nil {
- return m.Resource
+ return m.Peer
}
- return Resource_GLOBAL
+ return nil
}
-func (m *Arguments) GetFamily() uint32 {
- if m != nil {
- return m.Family
- }
- return 0
+type DeletePeerRequest struct {
+ Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+ Interface string `protobuf:"bytes,2,opt,name=interface" json:"interface,omitempty"`
}
-func (m *Arguments) GetName() string {
+func (m *DeletePeerRequest) Reset() { *m = DeletePeerRequest{} }
+func (m *DeletePeerRequest) String() string { return proto.CompactTextString(m) }
+func (*DeletePeerRequest) ProtoMessage() {}
+func (*DeletePeerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+
+func (m *DeletePeerRequest) GetAddress() string {
if m != nil {
- return m.Name
+ return m.Address
}
return ""
}
-func (m *Arguments) GetCurrent() bool {
+func (m *DeletePeerRequest) GetInterface() string {
if m != nil {
- return m.Current
+ return m.Interface
}
- return false
+ return ""
}
-type AddPathRequest struct {
- Resource Resource `protobuf:"varint,1,opt,name=resource,enum=gobgpapi.Resource" json:"resource,omitempty"`
- VrfId string `protobuf:"bytes,2,opt,name=vrf_id,json=vrfId" json:"vrf_id,omitempty"`
- Path *Path `protobuf:"bytes,3,opt,name=path" json:"path,omitempty"`
+type ListPeerRequest struct {
+ Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+ EnableAdvertised bool `protobuf:"varint,2,opt,name=enableAdvertised" json:"enableAdvertised,omitempty"`
}
-func (m *AddPathRequest) Reset() { *m = AddPathRequest{} }
-func (m *AddPathRequest) String() string { return proto.CompactTextString(m) }
-func (*AddPathRequest) ProtoMessage() {}
-func (*AddPathRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+func (m *ListPeerRequest) Reset() { *m = ListPeerRequest{} }
+func (m *ListPeerRequest) String() string { return proto.CompactTextString(m) }
+func (*ListPeerRequest) ProtoMessage() {}
+func (*ListPeerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
-func (m *AddPathRequest) GetResource() Resource {
+func (m *ListPeerRequest) GetAddress() string {
if m != nil {
- return m.Resource
+ return m.Address
}
- return Resource_GLOBAL
+ return ""
}
-func (m *AddPathRequest) GetVrfId() string {
+func (m *ListPeerRequest) GetEnableAdvertised() bool {
if m != nil {
- return m.VrfId
+ return m.EnableAdvertised
}
- return ""
+ return false
}
-func (m *AddPathRequest) GetPath() *Path {
+type ListPeerResponse struct {
+ Peer *Peer `protobuf:"bytes,1,opt,name=peer" json:"peer,omitempty"`
+}
+
+func (m *ListPeerResponse) Reset() { *m = ListPeerResponse{} }
+func (m *ListPeerResponse) String() string { return proto.CompactTextString(m) }
+func (*ListPeerResponse) ProtoMessage() {}
+func (*ListPeerResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
+
+func (m *ListPeerResponse) GetPeer() *Peer {
if m != nil {
- return m.Path
+ return m.Peer
}
return nil
}
-type AddPathResponse struct {
- Uuid []byte `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"`
+type UpdatePeerRequest struct {
+ Peer *Peer `protobuf:"bytes,1,opt,name=peer" json:"peer,omitempty"`
+ // Calls SoftResetIn after updating the peer configuration if needed.
+ DoSoftResetIn bool `protobuf:"varint,2,opt,name=do_soft_reset_in,json=doSoftResetIn" json:"do_soft_reset_in,omitempty"`
}
-func (m *AddPathResponse) Reset() { *m = AddPathResponse{} }
-func (m *AddPathResponse) String() string { return proto.CompactTextString(m) }
-func (*AddPathResponse) ProtoMessage() {}
-func (*AddPathResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+func (m *UpdatePeerRequest) Reset() { *m = UpdatePeerRequest{} }
+func (m *UpdatePeerRequest) String() string { return proto.CompactTextString(m) }
+func (*UpdatePeerRequest) ProtoMessage() {}
+func (*UpdatePeerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
-func (m *AddPathResponse) GetUuid() []byte {
+func (m *UpdatePeerRequest) GetPeer() *Peer {
if m != nil {
- return m.Uuid
+ return m.Peer
}
return nil
}
-type DeletePathRequest struct {
- Resource Resource `protobuf:"varint,1,opt,name=resource,enum=gobgpapi.Resource" json:"resource,omitempty"`
- VrfId string `protobuf:"bytes,2,opt,name=vrf_id,json=vrfId" json:"vrf_id,omitempty"`
- Family uint32 `protobuf:"varint,3,opt,name=family" json:"family,omitempty"`
- Path *Path `protobuf:"bytes,4,opt,name=path" json:"path,omitempty"`
- Uuid []byte `protobuf:"bytes,5,opt,name=uuid,proto3" json:"uuid,omitempty"`
+func (m *UpdatePeerRequest) GetDoSoftResetIn() bool {
+ if m != nil {
+ return m.DoSoftResetIn
+ }
+ return false
}
-func (m *DeletePathRequest) Reset() { *m = DeletePathRequest{} }
-func (m *DeletePathRequest) String() string { return proto.CompactTextString(m) }
-func (*DeletePathRequest) ProtoMessage() {}
-func (*DeletePathRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+type UpdatePeerResponse struct {
+ // Indicates whether calling SoftResetIn is required due to this update. If
+ // "true" is set, the client should call SoftResetIn manually. If
+ // "do_soft_reset_in = true" is set in the request, always returned with
+ // "false".
+ NeedsSoftResetIn bool `protobuf:"varint,1,opt,name=needs_soft_reset_in,json=needsSoftResetIn" json:"needs_soft_reset_in,omitempty"`
+}
-func (m *DeletePathRequest) GetResource() Resource {
+func (m *UpdatePeerResponse) Reset() { *m = UpdatePeerResponse{} }
+func (m *UpdatePeerResponse) String() string { return proto.CompactTextString(m) }
+func (*UpdatePeerResponse) ProtoMessage() {}
+func (*UpdatePeerResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
+
+func (m *UpdatePeerResponse) GetNeedsSoftResetIn() bool {
if m != nil {
- return m.Resource
+ return m.NeedsSoftResetIn
}
- return Resource_GLOBAL
+ return false
}
-func (m *DeletePathRequest) GetVrfId() string {
+type ResetPeerRequest struct {
+ Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+ Communication string `protobuf:"bytes,2,opt,name=communication" json:"communication,omitempty"`
+ Soft bool `protobuf:"varint,3,opt,name=soft" json:"soft,omitempty"`
+ Direction ResetPeerRequest_SoftResetDirection `protobuf:"varint,4,opt,name=direction,enum=gobgpapi.ResetPeerRequest_SoftResetDirection" json:"direction,omitempty"`
+}
+
+func (m *ResetPeerRequest) Reset() { *m = ResetPeerRequest{} }
+func (m *ResetPeerRequest) String() string { return proto.CompactTextString(m) }
+func (*ResetPeerRequest) ProtoMessage() {}
+func (*ResetPeerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
+
+func (m *ResetPeerRequest) GetAddress() string {
if m != nil {
- return m.VrfId
+ return m.Address
}
return ""
}
-func (m *DeletePathRequest) GetFamily() uint32 {
+func (m *ResetPeerRequest) GetCommunication() string {
if m != nil {
- return m.Family
+ return m.Communication
}
- return 0
+ return ""
}
-func (m *DeletePathRequest) GetPath() *Path {
+func (m *ResetPeerRequest) GetSoft() bool {
if m != nil {
- return m.Path
+ return m.Soft
}
- return nil
+ return false
}
-func (m *DeletePathRequest) GetUuid() []byte {
+func (m *ResetPeerRequest) GetDirection() ResetPeerRequest_SoftResetDirection {
if m != nil {
- return m.Uuid
+ return m.Direction
}
- return nil
+ return ResetPeerRequest_IN
}
-type DeletePathResponse struct {
+type ShutdownPeerRequest struct {
+ Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+ Communication string `protobuf:"bytes,2,opt,name=communication" json:"communication,omitempty"`
}
-func (m *DeletePathResponse) Reset() { *m = DeletePathResponse{} }
-func (m *DeletePathResponse) String() string { return proto.CompactTextString(m) }
-func (*DeletePathResponse) ProtoMessage() {}
-func (*DeletePathResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+func (m *ShutdownPeerRequest) Reset() { *m = ShutdownPeerRequest{} }
+func (m *ShutdownPeerRequest) String() string { return proto.CompactTextString(m) }
+func (*ShutdownPeerRequest) ProtoMessage() {}
+func (*ShutdownPeerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
-type AddNeighborRequest struct {
- Peer *Peer `protobuf:"bytes,1,opt,name=peer" json:"peer,omitempty"`
+func (m *ShutdownPeerRequest) GetAddress() string {
+ if m != nil {
+ return m.Address
+ }
+ return ""
}
-func (m *AddNeighborRequest) Reset() { *m = AddNeighborRequest{} }
-func (m *AddNeighborRequest) String() string { return proto.CompactTextString(m) }
-func (*AddNeighborRequest) ProtoMessage() {}
-func (*AddNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
-
-func (m *AddNeighborRequest) GetPeer() *Peer {
+func (m *ShutdownPeerRequest) GetCommunication() string {
if m != nil {
- return m.Peer
+ return m.Communication
}
- return nil
+ return ""
}
-type AddNeighborResponse struct {
+type EnablePeerRequest struct {
+ Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
}
-func (m *AddNeighborResponse) Reset() { *m = AddNeighborResponse{} }
-func (m *AddNeighborResponse) String() string { return proto.CompactTextString(m) }
-func (*AddNeighborResponse) ProtoMessage() {}
-func (*AddNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
+func (m *EnablePeerRequest) Reset() { *m = EnablePeerRequest{} }
+func (m *EnablePeerRequest) String() string { return proto.CompactTextString(m) }
+func (*EnablePeerRequest) ProtoMessage() {}
+func (*EnablePeerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
-type DeleteNeighborRequest struct {
- Peer *Peer `protobuf:"bytes,1,opt,name=peer" json:"peer,omitempty"`
+func (m *EnablePeerRequest) GetAddress() string {
+ if m != nil {
+ return m.Address
+ }
+ return ""
+}
+
+type DisablePeerRequest struct {
+ Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+ Communication string `protobuf:"bytes,2,opt,name=communication" json:"communication,omitempty"`
}
-func (m *DeleteNeighborRequest) Reset() { *m = DeleteNeighborRequest{} }
-func (m *DeleteNeighborRequest) String() string { return proto.CompactTextString(m) }
-func (*DeleteNeighborRequest) ProtoMessage() {}
-func (*DeleteNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
+func (m *DisablePeerRequest) Reset() { *m = DisablePeerRequest{} }
+func (m *DisablePeerRequest) String() string { return proto.CompactTextString(m) }
+func (*DisablePeerRequest) ProtoMessage() {}
+func (*DisablePeerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
-func (m *DeleteNeighborRequest) GetPeer() *Peer {
+func (m *DisablePeerRequest) GetAddress() string {
if m != nil {
- return m.Peer
+ return m.Address
}
- return nil
+ return ""
}
-type DeleteNeighborResponse struct {
+func (m *DisablePeerRequest) GetCommunication() string {
+ if m != nil {
+ return m.Communication
+ }
+ return ""
}
-func (m *DeleteNeighborResponse) Reset() { *m = DeleteNeighborResponse{} }
-func (m *DeleteNeighborResponse) String() string { return proto.CompactTextString(m) }
-func (*DeleteNeighborResponse) ProtoMessage() {}
-func (*DeleteNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
-
-type UpdateNeighborRequest struct {
- Peer *Peer `protobuf:"bytes,1,opt,name=peer" json:"peer,omitempty"`
- // Calls SoftResetIn after updating the neighbor configuration if needed.
- DoSoftResetIn bool `protobuf:"varint,2,opt,name=do_soft_reset_in,json=doSoftResetIn" json:"do_soft_reset_in,omitempty"`
+type MonitorPeerRequest struct {
+ Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+ Current bool `protobuf:"varint,2,opt,name=current" json:"current,omitempty"`
}
-func (m *UpdateNeighborRequest) Reset() { *m = UpdateNeighborRequest{} }
-func (m *UpdateNeighborRequest) String() string { return proto.CompactTextString(m) }
-func (*UpdateNeighborRequest) ProtoMessage() {}
-func (*UpdateNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
+func (m *MonitorPeerRequest) Reset() { *m = MonitorPeerRequest{} }
+func (m *MonitorPeerRequest) String() string { return proto.CompactTextString(m) }
+func (*MonitorPeerRequest) ProtoMessage() {}
+func (*MonitorPeerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
-func (m *UpdateNeighborRequest) GetPeer() *Peer {
+func (m *MonitorPeerRequest) GetAddress() string {
if m != nil {
- return m.Peer
+ return m.Address
}
- return nil
+ return ""
}
-func (m *UpdateNeighborRequest) GetDoSoftResetIn() bool {
+func (m *MonitorPeerRequest) GetCurrent() bool {
if m != nil {
- return m.DoSoftResetIn
+ return m.Current
}
return false
}
-type UpdateNeighborResponse struct {
- // Indicates whether calling SoftResetIn is required due to this update. If
- // "true" is set, the client should call SoftResetIn manually. If
- // "do_soft_reset_in = true" is set in the request, always returned with
- // "false".
- NeedsSoftResetIn bool `protobuf:"varint,1,opt,name=needs_soft_reset_in,json=needsSoftResetIn" json:"needs_soft_reset_in,omitempty"`
+type MonitorPeerResponse struct {
+ Peer *Peer `protobuf:"bytes,1,opt,name=peer" json:"peer,omitempty"`
}
-func (m *UpdateNeighborResponse) Reset() { *m = UpdateNeighborResponse{} }
-func (m *UpdateNeighborResponse) String() string { return proto.CompactTextString(m) }
-func (*UpdateNeighborResponse) ProtoMessage() {}
-func (*UpdateNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
+func (m *MonitorPeerResponse) Reset() { *m = MonitorPeerResponse{} }
+func (m *MonitorPeerResponse) String() string { return proto.CompactTextString(m) }
+func (*MonitorPeerResponse) ProtoMessage() {}
+func (*MonitorPeerResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
-func (m *UpdateNeighborResponse) GetNeedsSoftResetIn() bool {
+func (m *MonitorPeerResponse) GetPeer() *Peer {
if m != nil {
- return m.NeedsSoftResetIn
+ return m.Peer
}
- return false
+ return nil
}
type AddPeerGroupRequest struct {
@@ -1153,7 +1180,7 @@ type AddPeerGroupRequest struct {
func (m *AddPeerGroupRequest) Reset() { *m = AddPeerGroupRequest{} }
func (m *AddPeerGroupRequest) String() string { return proto.CompactTextString(m) }
func (*AddPeerGroupRequest) ProtoMessage() {}
-func (*AddPeerGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
+func (*AddPeerGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
func (m *AddPeerGroupRequest) GetPeerGroup() *PeerGroup {
if m != nil {
@@ -1162,38 +1189,22 @@ func (m *AddPeerGroupRequest) GetPeerGroup() *PeerGroup {
return nil
}
-type AddPeerGroupResponse struct {
-}
-
-func (m *AddPeerGroupResponse) Reset() { *m = AddPeerGroupResponse{} }
-func (m *AddPeerGroupResponse) String() string { return proto.CompactTextString(m) }
-func (*AddPeerGroupResponse) ProtoMessage() {}
-func (*AddPeerGroupResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
-
type DeletePeerGroupRequest struct {
- PeerGroup *PeerGroup `protobuf:"bytes,1,opt,name=peer_group,json=peerGroup" json:"peer_group,omitempty"`
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}
func (m *DeletePeerGroupRequest) Reset() { *m = DeletePeerGroupRequest{} }
func (m *DeletePeerGroupRequest) String() string { return proto.CompactTextString(m) }
func (*DeletePeerGroupRequest) ProtoMessage() {}
-func (*DeletePeerGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
+func (*DeletePeerGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
-func (m *DeletePeerGroupRequest) GetPeerGroup() *PeerGroup {
+func (m *DeletePeerGroupRequest) GetName() string {
if m != nil {
- return m.PeerGroup
+ return m.Name
}
- return nil
-}
-
-type DeletePeerGroupResponse struct {
+ return ""
}
-func (m *DeletePeerGroupResponse) Reset() { *m = DeletePeerGroupResponse{} }
-func (m *DeletePeerGroupResponse) String() string { return proto.CompactTextString(m) }
-func (*DeletePeerGroupResponse) ProtoMessage() {}
-func (*DeletePeerGroupResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
-
type UpdatePeerGroupRequest struct {
PeerGroup *PeerGroup `protobuf:"bytes,1,opt,name=peer_group,json=peerGroup" json:"peer_group,omitempty"`
DoSoftResetIn bool `protobuf:"varint,2,opt,name=do_soft_reset_in,json=doSoftResetIn" json:"do_soft_reset_in,omitempty"`
@@ -1202,7 +1213,7 @@ type UpdatePeerGroupRequest struct {
func (m *UpdatePeerGroupRequest) Reset() { *m = UpdatePeerGroupRequest{} }
func (m *UpdatePeerGroupRequest) String() string { return proto.CompactTextString(m) }
func (*UpdatePeerGroupRequest) ProtoMessage() {}
-func (*UpdatePeerGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
+func (*UpdatePeerGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
func (m *UpdatePeerGroupRequest) GetPeerGroup() *PeerGroup {
if m != nil {
@@ -1225,7 +1236,7 @@ type UpdatePeerGroupResponse struct {
func (m *UpdatePeerGroupResponse) Reset() { *m = UpdatePeerGroupResponse{} }
func (m *UpdatePeerGroupResponse) String() string { return proto.CompactTextString(m) }
func (*UpdatePeerGroupResponse) ProtoMessage() {}
-func (*UpdatePeerGroupResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
+func (*UpdatePeerGroupResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
func (m *UpdatePeerGroupResponse) GetNeedsSoftResetIn() bool {
if m != nil {
@@ -1241,7 +1252,7 @@ type AddDynamicNeighborRequest struct {
func (m *AddDynamicNeighborRequest) Reset() { *m = AddDynamicNeighborRequest{} }
func (m *AddDynamicNeighborRequest) String() string { return proto.CompactTextString(m) }
func (*AddDynamicNeighborRequest) ProtoMessage() {}
-func (*AddDynamicNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
+func (*AddDynamicNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
func (m *AddDynamicNeighborRequest) GetDynamicNeighbor() *DynamicNeighbor {
if m != nil {
@@ -1250,1456 +1261,1158 @@ func (m *AddDynamicNeighborRequest) GetDynamicNeighbor() *DynamicNeighbor {
return nil
}
-type AddDynamicNeighborResponse struct {
-}
-
-func (m *AddDynamicNeighborResponse) Reset() { *m = AddDynamicNeighborResponse{} }
-func (m *AddDynamicNeighborResponse) String() string { return proto.CompactTextString(m) }
-func (*AddDynamicNeighborResponse) ProtoMessage() {}
-func (*AddDynamicNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
-
-type ResetNeighborRequest struct {
- Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
- Communication string `protobuf:"bytes,2,opt,name=communication" json:"communication,omitempty"`
+type AddPathRequest struct {
+ Resource Resource `protobuf:"varint,1,opt,name=resource,enum=gobgpapi.Resource" json:"resource,omitempty"`
+ VrfId string `protobuf:"bytes,2,opt,name=vrf_id,json=vrfId" json:"vrf_id,omitempty"`
+ Path *Path `protobuf:"bytes,3,opt,name=path" json:"path,omitempty"`
}
-func (m *ResetNeighborRequest) Reset() { *m = ResetNeighborRequest{} }
-func (m *ResetNeighborRequest) String() string { return proto.CompactTextString(m) }
-func (*ResetNeighborRequest) ProtoMessage() {}
-func (*ResetNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
-
-func (m *ResetNeighborRequest) GetAddress() string {
- if m != nil {
- return m.Address
- }
- return ""
-}
+func (m *AddPathRequest) Reset() { *m = AddPathRequest{} }
+func (m *AddPathRequest) String() string { return proto.CompactTextString(m) }
+func (*AddPathRequest) ProtoMessage() {}
+func (*AddPathRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
-func (m *ResetNeighborRequest) GetCommunication() string {
+func (m *AddPathRequest) GetResource() Resource {
if m != nil {
- return m.Communication
+ return m.Resource
}
- return ""
-}
-
-type ResetNeighborResponse struct {
-}
-
-func (m *ResetNeighborResponse) Reset() { *m = ResetNeighborResponse{} }
-func (m *ResetNeighborResponse) String() string { return proto.CompactTextString(m) }
-func (*ResetNeighborResponse) ProtoMessage() {}
-func (*ResetNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
-
-type SoftResetNeighborRequest struct {
- Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
- Direction SoftResetNeighborRequest_SoftResetDirection `protobuf:"varint,2,opt,name=direction,enum=gobgpapi.SoftResetNeighborRequest_SoftResetDirection" json:"direction,omitempty"`
+ return Resource_GLOBAL
}
-func (m *SoftResetNeighborRequest) Reset() { *m = SoftResetNeighborRequest{} }
-func (m *SoftResetNeighborRequest) String() string { return proto.CompactTextString(m) }
-func (*SoftResetNeighborRequest) ProtoMessage() {}
-func (*SoftResetNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
-
-func (m *SoftResetNeighborRequest) GetAddress() string {
+func (m *AddPathRequest) GetVrfId() string {
if m != nil {
- return m.Address
+ return m.VrfId
}
return ""
}
-func (m *SoftResetNeighborRequest) GetDirection() SoftResetNeighborRequest_SoftResetDirection {
+func (m *AddPathRequest) GetPath() *Path {
if m != nil {
- return m.Direction
+ return m.Path
}
- return SoftResetNeighborRequest_IN
-}
-
-type SoftResetNeighborResponse struct {
+ return nil
}
-func (m *SoftResetNeighborResponse) Reset() { *m = SoftResetNeighborResponse{} }
-func (m *SoftResetNeighborResponse) String() string { return proto.CompactTextString(m) }
-func (*SoftResetNeighborResponse) ProtoMessage() {}
-func (*SoftResetNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
-
-type ShutdownNeighborRequest struct {
- Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
- Communication string `protobuf:"bytes,2,opt,name=communication" json:"communication,omitempty"`
+type AddPathResponse struct {
+ Uuid []byte `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"`
}
-func (m *ShutdownNeighborRequest) Reset() { *m = ShutdownNeighborRequest{} }
-func (m *ShutdownNeighborRequest) String() string { return proto.CompactTextString(m) }
-func (*ShutdownNeighborRequest) ProtoMessage() {}
-func (*ShutdownNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
-
-func (m *ShutdownNeighborRequest) GetAddress() string {
- if m != nil {
- return m.Address
- }
- return ""
-}
+func (m *AddPathResponse) Reset() { *m = AddPathResponse{} }
+func (m *AddPathResponse) String() string { return proto.CompactTextString(m) }
+func (*AddPathResponse) ProtoMessage() {}
+func (*AddPathResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
-func (m *ShutdownNeighborRequest) GetCommunication() string {
+func (m *AddPathResponse) GetUuid() []byte {
if m != nil {
- return m.Communication
+ return m.Uuid
}
- return ""
-}
-
-type ShutdownNeighborResponse struct {
+ return nil
}
-func (m *ShutdownNeighborResponse) Reset() { *m = ShutdownNeighborResponse{} }
-func (m *ShutdownNeighborResponse) String() string { return proto.CompactTextString(m) }
-func (*ShutdownNeighborResponse) ProtoMessage() {}
-func (*ShutdownNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
-
-type EnableNeighborRequest struct {
- Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+type DeletePathRequest struct {
+ Resource Resource `protobuf:"varint,1,opt,name=resource,enum=gobgpapi.Resource" json:"resource,omitempty"`
+ VrfId string `protobuf:"bytes,2,opt,name=vrf_id,json=vrfId" json:"vrf_id,omitempty"`
+ Family uint32 `protobuf:"varint,3,opt,name=family" json:"family,omitempty"`
+ Path *Path `protobuf:"bytes,4,opt,name=path" json:"path,omitempty"`
+ Uuid []byte `protobuf:"bytes,5,opt,name=uuid,proto3" json:"uuid,omitempty"`
}
-func (m *EnableNeighborRequest) Reset() { *m = EnableNeighborRequest{} }
-func (m *EnableNeighborRequest) String() string { return proto.CompactTextString(m) }
-func (*EnableNeighborRequest) ProtoMessage() {}
-func (*EnableNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
+func (m *DeletePathRequest) Reset() { *m = DeletePathRequest{} }
+func (m *DeletePathRequest) String() string { return proto.CompactTextString(m) }
+func (*DeletePathRequest) ProtoMessage() {}
+func (*DeletePathRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
-func (m *EnableNeighborRequest) GetAddress() string {
+func (m *DeletePathRequest) GetResource() Resource {
if m != nil {
- return m.Address
+ return m.Resource
}
- return ""
-}
-
-type EnableNeighborResponse struct {
-}
-
-func (m *EnableNeighborResponse) Reset() { *m = EnableNeighborResponse{} }
-func (m *EnableNeighborResponse) String() string { return proto.CompactTextString(m) }
-func (*EnableNeighborResponse) ProtoMessage() {}
-func (*EnableNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
-
-type DisableNeighborRequest struct {
- Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
- Communication string `protobuf:"bytes,2,opt,name=communication" json:"communication,omitempty"`
+ return Resource_GLOBAL
}
-func (m *DisableNeighborRequest) Reset() { *m = DisableNeighborRequest{} }
-func (m *DisableNeighborRequest) String() string { return proto.CompactTextString(m) }
-func (*DisableNeighborRequest) ProtoMessage() {}
-func (*DisableNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }
-
-func (m *DisableNeighborRequest) GetAddress() string {
+func (m *DeletePathRequest) GetVrfId() string {
if m != nil {
- return m.Address
+ return m.VrfId
}
return ""
}
-func (m *DisableNeighborRequest) GetCommunication() string {
+func (m *DeletePathRequest) GetFamily() uint32 {
if m != nil {
- return m.Communication
+ return m.Family
}
- return ""
-}
-
-type DisableNeighborResponse struct {
-}
-
-func (m *DisableNeighborResponse) Reset() { *m = DisableNeighborResponse{} }
-func (m *DisableNeighborResponse) String() string { return proto.CompactTextString(m) }
-func (*DisableNeighborResponse) ProtoMessage() {}
-func (*DisableNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }
-
-type UpdatePolicyRequest struct {
- Sets []*DefinedSet `protobuf:"bytes,1,rep,name=sets" json:"sets,omitempty"`
- Policies []*Policy `protobuf:"bytes,2,rep,name=policies" json:"policies,omitempty"`
+ return 0
}
-func (m *UpdatePolicyRequest) Reset() { *m = UpdatePolicyRequest{} }
-func (m *UpdatePolicyRequest) String() string { return proto.CompactTextString(m) }
-func (*UpdatePolicyRequest) ProtoMessage() {}
-func (*UpdatePolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }
-
-func (m *UpdatePolicyRequest) GetSets() []*DefinedSet {
+func (m *DeletePathRequest) GetPath() *Path {
if m != nil {
- return m.Sets
+ return m.Path
}
return nil
}
-func (m *UpdatePolicyRequest) GetPolicies() []*Policy {
+func (m *DeletePathRequest) GetUuid() []byte {
if m != nil {
- return m.Policies
+ return m.Uuid
}
return nil
}
-type UpdatePolicyResponse struct {
-}
-
-func (m *UpdatePolicyResponse) Reset() { *m = UpdatePolicyResponse{} }
-func (m *UpdatePolicyResponse) String() string { return proto.CompactTextString(m) }
-func (*UpdatePolicyResponse) ProtoMessage() {}
-func (*UpdatePolicyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} }
-
-type EnableMrtRequest struct {
- DumpType int32 `protobuf:"varint,1,opt,name=dump_type,json=dumpType" json:"dump_type,omitempty"`
- Filename string `protobuf:"bytes,2,opt,name=filename" json:"filename,omitempty"`
- Interval uint64 `protobuf:"varint,3,opt,name=interval" json:"interval,omitempty"`
+type ListPathRequest struct {
+ Type Resource `protobuf:"varint,1,opt,name=type,enum=gobgpapi.Resource" json:"type,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
+ Family uint32 `protobuf:"varint,3,opt,name=family" json:"family,omitempty"`
+ Prefixes []*TableLookupPrefix `protobuf:"bytes,4,rep,name=prefixes" json:"prefixes,omitempty"`
}
-func (m *EnableMrtRequest) Reset() { *m = EnableMrtRequest{} }
-func (m *EnableMrtRequest) String() string { return proto.CompactTextString(m) }
-func (*EnableMrtRequest) ProtoMessage() {}
-func (*EnableMrtRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} }
+func (m *ListPathRequest) Reset() { *m = ListPathRequest{} }
+func (m *ListPathRequest) String() string { return proto.CompactTextString(m) }
+func (*ListPathRequest) ProtoMessage() {}
+func (*ListPathRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
-func (m *EnableMrtRequest) GetDumpType() int32 {
+func (m *ListPathRequest) GetType() Resource {
if m != nil {
- return m.DumpType
+ return m.Type
}
- return 0
+ return Resource_GLOBAL
}
-func (m *EnableMrtRequest) GetFilename() string {
+func (m *ListPathRequest) GetName() string {
if m != nil {
- return m.Filename
+ return m.Name
}
return ""
}
-func (m *EnableMrtRequest) GetInterval() uint64 {
+func (m *ListPathRequest) GetFamily() uint32 {
if m != nil {
- return m.Interval
+ return m.Family
}
return 0
}
-type EnableMrtResponse struct {
+func (m *ListPathRequest) GetPrefixes() []*TableLookupPrefix {
+ if m != nil {
+ return m.Prefixes
+ }
+ return nil
}
-func (m *EnableMrtResponse) Reset() { *m = EnableMrtResponse{} }
-func (m *EnableMrtResponse) String() string { return proto.CompactTextString(m) }
-func (*EnableMrtResponse) ProtoMessage() {}
-func (*EnableMrtResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} }
-
-type DisableMrtRequest struct {
+type ListPathResponse struct {
+ Destination *Destination `protobuf:"bytes,1,opt,name=destination" json:"destination,omitempty"`
}
-func (m *DisableMrtRequest) Reset() { *m = DisableMrtRequest{} }
-func (m *DisableMrtRequest) String() string { return proto.CompactTextString(m) }
-func (*DisableMrtRequest) ProtoMessage() {}
-func (*DisableMrtRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} }
+func (m *ListPathResponse) Reset() { *m = ListPathResponse{} }
+func (m *ListPathResponse) String() string { return proto.CompactTextString(m) }
+func (*ListPathResponse) ProtoMessage() {}
+func (*ListPathResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
-type DisableMrtResponse struct {
+func (m *ListPathResponse) GetDestination() *Destination {
+ if m != nil {
+ return m.Destination
+ }
+ return nil
}
-func (m *DisableMrtResponse) Reset() { *m = DisableMrtResponse{} }
-func (m *DisableMrtResponse) String() string { return proto.CompactTextString(m) }
-func (*DisableMrtResponse) ProtoMessage() {}
-func (*DisableMrtResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} }
-
-type InjectMrtRequest struct {
+type AddPathStreamRequest struct {
Resource Resource `protobuf:"varint,1,opt,name=resource,enum=gobgpapi.Resource" json:"resource,omitempty"`
VrfId string `protobuf:"bytes,2,opt,name=vrf_id,json=vrfId" json:"vrf_id,omitempty"`
Paths []*Path `protobuf:"bytes,3,rep,name=paths" json:"paths,omitempty"`
}
-func (m *InjectMrtRequest) Reset() { *m = InjectMrtRequest{} }
-func (m *InjectMrtRequest) String() string { return proto.CompactTextString(m) }
-func (*InjectMrtRequest) ProtoMessage() {}
-func (*InjectMrtRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} }
+func (m *AddPathStreamRequest) Reset() { *m = AddPathStreamRequest{} }
+func (m *AddPathStreamRequest) String() string { return proto.CompactTextString(m) }
+func (*AddPathStreamRequest) ProtoMessage() {}
+func (*AddPathStreamRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
-func (m *InjectMrtRequest) GetResource() Resource {
+func (m *AddPathStreamRequest) GetResource() Resource {
if m != nil {
return m.Resource
}
return Resource_GLOBAL
}
-func (m *InjectMrtRequest) GetVrfId() string {
+func (m *AddPathStreamRequest) GetVrfId() string {
if m != nil {
return m.VrfId
}
return ""
}
-func (m *InjectMrtRequest) GetPaths() []*Path {
+func (m *AddPathStreamRequest) GetPaths() []*Path {
if m != nil {
return m.Paths
}
return nil
}
-type InjectMrtResponse struct {
+type GetTableRequest struct {
+ Type Resource `protobuf:"varint,1,opt,name=type,enum=gobgpapi.Resource" json:"type,omitempty"`
+ Family uint32 `protobuf:"varint,2,opt,name=family" json:"family,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
}
-func (m *InjectMrtResponse) Reset() { *m = InjectMrtResponse{} }
-func (m *InjectMrtResponse) String() string { return proto.CompactTextString(m) }
-func (*InjectMrtResponse) ProtoMessage() {}
-func (*InjectMrtResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} }
+func (m *GetTableRequest) Reset() { *m = GetTableRequest{} }
+func (m *GetTableRequest) String() string { return proto.CompactTextString(m) }
+func (*GetTableRequest) ProtoMessage() {}
+func (*GetTableRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
-type AddBmpRequest struct {
- Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
- Port uint32 `protobuf:"varint,2,opt,name=port" json:"port,omitempty"`
- Type AddBmpRequest_MonitoringPolicy `protobuf:"varint,3,opt,name=type,enum=gobgpapi.AddBmpRequest_MonitoringPolicy" json:"type,omitempty"`
-}
-
-func (m *AddBmpRequest) Reset() { *m = AddBmpRequest{} }
-func (m *AddBmpRequest) String() string { return proto.CompactTextString(m) }
-func (*AddBmpRequest) ProtoMessage() {}
-func (*AddBmpRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} }
-
-func (m *AddBmpRequest) GetAddress() string {
+func (m *GetTableRequest) GetType() Resource {
if m != nil {
- return m.Address
+ return m.Type
}
- return ""
+ return Resource_GLOBAL
}
-func (m *AddBmpRequest) GetPort() uint32 {
+func (m *GetTableRequest) GetFamily() uint32 {
if m != nil {
- return m.Port
+ return m.Family
}
return 0
}
-func (m *AddBmpRequest) GetType() AddBmpRequest_MonitoringPolicy {
+func (m *GetTableRequest) GetName() string {
if m != nil {
- return m.Type
+ return m.Name
}
- return AddBmpRequest_PRE
-}
-
-type AddBmpResponse struct {
+ return ""
}
-func (m *AddBmpResponse) Reset() { *m = AddBmpResponse{} }
-func (m *AddBmpResponse) String() string { return proto.CompactTextString(m) }
-func (*AddBmpResponse) ProtoMessage() {}
-func (*AddBmpResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} }
-
-type DeleteBmpRequest struct {
- Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
- Port uint32 `protobuf:"varint,2,opt,name=port" json:"port,omitempty"`
+type GetTableResponse struct {
+ NumDestination uint64 `protobuf:"varint,4,opt,name=num_destination,json=numDestination" json:"num_destination,omitempty"`
+ NumPath uint64 `protobuf:"varint,5,opt,name=num_path,json=numPath" json:"num_path,omitempty"`
+ NumAccepted uint64 `protobuf:"varint,6,opt,name=num_accepted,json=numAccepted" json:"num_accepted,omitempty"`
}
-func (m *DeleteBmpRequest) Reset() { *m = DeleteBmpRequest{} }
-func (m *DeleteBmpRequest) String() string { return proto.CompactTextString(m) }
-func (*DeleteBmpRequest) ProtoMessage() {}
-func (*DeleteBmpRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} }
+func (m *GetTableResponse) Reset() { *m = GetTableResponse{} }
+func (m *GetTableResponse) String() string { return proto.CompactTextString(m) }
+func (*GetTableResponse) ProtoMessage() {}
+func (*GetTableResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
-func (m *DeleteBmpRequest) GetAddress() string {
+func (m *GetTableResponse) GetNumDestination() uint64 {
if m != nil {
- return m.Address
- }
- return ""
-}
-
-func (m *DeleteBmpRequest) GetPort() uint32 {
- if m != nil {
- return m.Port
+ return m.NumDestination
}
return 0
}
-type DeleteBmpResponse struct {
-}
-
-func (m *DeleteBmpResponse) Reset() { *m = DeleteBmpResponse{} }
-func (m *DeleteBmpResponse) String() string { return proto.CompactTextString(m) }
-func (*DeleteBmpResponse) ProtoMessage() {}
-func (*DeleteBmpResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} }
-
-type MonitorRibRequest struct {
- Table *Table `protobuf:"bytes,1,opt,name=table" json:"table,omitempty"`
- Current bool `protobuf:"varint,2,opt,name=current" json:"current,omitempty"`
-}
-
-func (m *MonitorRibRequest) Reset() { *m = MonitorRibRequest{} }
-func (m *MonitorRibRequest) String() string { return proto.CompactTextString(m) }
-func (*MonitorRibRequest) ProtoMessage() {}
-func (*MonitorRibRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} }
-
-func (m *MonitorRibRequest) GetTable() *Table {
+func (m *GetTableResponse) GetNumPath() uint64 {
if m != nil {
- return m.Table
+ return m.NumPath
}
- return nil
+ return 0
}
-func (m *MonitorRibRequest) GetCurrent() bool {
+func (m *GetTableResponse) GetNumAccepted() uint64 {
if m != nil {
- return m.Current
+ return m.NumAccepted
}
- return false
+ return 0
}
-type RPKIConf struct {
- Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
- RemotePort string `protobuf:"bytes,2,opt,name=remote_port,json=remotePort" json:"remote_port,omitempty"`
+type MonitorTableRequest struct {
+ Type Resource `protobuf:"varint,1,opt,name=type,enum=gobgpapi.Resource" json:"type,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
+ Family uint32 `protobuf:"varint,3,opt,name=family" json:"family,omitempty"`
+ Current bool `protobuf:"varint,4,opt,name=current" json:"current,omitempty"`
+ PostPolicy bool `protobuf:"varint,5,opt,name=post_policy,json=postPolicy" json:"post_policy,omitempty"`
}
-func (m *RPKIConf) Reset() { *m = RPKIConf{} }
-func (m *RPKIConf) String() string { return proto.CompactTextString(m) }
-func (*RPKIConf) ProtoMessage() {}
-func (*RPKIConf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} }
+func (m *MonitorTableRequest) Reset() { *m = MonitorTableRequest{} }
+func (m *MonitorTableRequest) String() string { return proto.CompactTextString(m) }
+func (*MonitorTableRequest) ProtoMessage() {}
+func (*MonitorTableRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }
-func (m *RPKIConf) GetAddress() string {
+func (m *MonitorTableRequest) GetType() Resource {
if m != nil {
- return m.Address
+ return m.Type
}
- return ""
+ return Resource_GLOBAL
}
-func (m *RPKIConf) GetRemotePort() string {
+func (m *MonitorTableRequest) GetName() string {
if m != nil {
- return m.RemotePort
+ return m.Name
}
return ""
}
-type RPKIState struct {
- Uptime int64 `protobuf:"varint,1,opt,name=uptime" json:"uptime,omitempty"`
- Downtime int64 `protobuf:"varint,2,opt,name=downtime" json:"downtime,omitempty"`
- Up bool `protobuf:"varint,3,opt,name=up" json:"up,omitempty"`
- RecordIpv4 uint32 `protobuf:"varint,4,opt,name=record_ipv4,json=recordIpv4" json:"record_ipv4,omitempty"`
- RecordIpv6 uint32 `protobuf:"varint,5,opt,name=record_ipv6,json=recordIpv6" json:"record_ipv6,omitempty"`
- PrefixIpv4 uint32 `protobuf:"varint,6,opt,name=prefix_ipv4,json=prefixIpv4" json:"prefix_ipv4,omitempty"`
- PrefixIpv6 uint32 `protobuf:"varint,7,opt,name=prefix_ipv6,json=prefixIpv6" json:"prefix_ipv6,omitempty"`
- Serial uint32 `protobuf:"varint,8,opt,name=serial" json:"serial,omitempty"`
- ReceivedIpv4 int64 `protobuf:"varint,9,opt,name=received_ipv4,json=receivedIpv4" json:"received_ipv4,omitempty"`
- ReceivedIpv6 int64 `protobuf:"varint,10,opt,name=received_ipv6,json=receivedIpv6" json:"received_ipv6,omitempty"`
- SerialNotify int64 `protobuf:"varint,11,opt,name=serial_notify,json=serialNotify" json:"serial_notify,omitempty"`
- CacheReset int64 `protobuf:"varint,12,opt,name=cache_reset,json=cacheReset" json:"cache_reset,omitempty"`
- CacheResponse int64 `protobuf:"varint,13,opt,name=cache_response,json=cacheResponse" json:"cache_response,omitempty"`
- EndOfData int64 `protobuf:"varint,14,opt,name=end_of_data,json=endOfData" json:"end_of_data,omitempty"`
- Error int64 `protobuf:"varint,15,opt,name=error" json:"error,omitempty"`
- SerialQuery int64 `protobuf:"varint,16,opt,name=serial_query,json=serialQuery" json:"serial_query,omitempty"`
- ResetQuery int64 `protobuf:"varint,17,opt,name=reset_query,json=resetQuery" json:"reset_query,omitempty"`
-}
-
-func (m *RPKIState) Reset() { *m = RPKIState{} }
-func (m *RPKIState) String() string { return proto.CompactTextString(m) }
-func (*RPKIState) ProtoMessage() {}
-func (*RPKIState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} }
-
-func (m *RPKIState) GetUptime() int64 {
+func (m *MonitorTableRequest) GetFamily() uint32 {
if m != nil {
- return m.Uptime
+ return m.Family
}
return 0
}
-func (m *RPKIState) GetDowntime() int64 {
+func (m *MonitorTableRequest) GetCurrent() bool {
if m != nil {
- return m.Downtime
+ return m.Current
}
- return 0
+ return false
}
-func (m *RPKIState) GetUp() bool {
+func (m *MonitorTableRequest) GetPostPolicy() bool {
if m != nil {
- return m.Up
+ return m.PostPolicy
}
return false
}
-func (m *RPKIState) GetRecordIpv4() uint32 {
- if m != nil {
- return m.RecordIpv4
- }
- return 0
+type MonitorTableResponse struct {
+ Path *Path `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"`
}
-func (m *RPKIState) GetRecordIpv6() uint32 {
- if m != nil {
- return m.RecordIpv6
- }
- return 0
-}
+func (m *MonitorTableResponse) Reset() { *m = MonitorTableResponse{} }
+func (m *MonitorTableResponse) String() string { return proto.CompactTextString(m) }
+func (*MonitorTableResponse) ProtoMessage() {}
+func (*MonitorTableResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }
-func (m *RPKIState) GetPrefixIpv4() uint32 {
+func (m *MonitorTableResponse) GetPath() *Path {
if m != nil {
- return m.PrefixIpv4
+ return m.Path
}
- return 0
+ return nil
}
-func (m *RPKIState) GetPrefixIpv6() uint32 {
- if m != nil {
- return m.PrefixIpv6
- }
- return 0
+type AddVrfRequest struct {
+ Vrf *Vrf `protobuf:"bytes,1,opt,name=vrf" json:"vrf,omitempty"`
}
-func (m *RPKIState) GetSerial() uint32 {
- if m != nil {
- return m.Serial
- }
- return 0
-}
+func (m *AddVrfRequest) Reset() { *m = AddVrfRequest{} }
+func (m *AddVrfRequest) String() string { return proto.CompactTextString(m) }
+func (*AddVrfRequest) ProtoMessage() {}
+func (*AddVrfRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }
-func (m *RPKIState) GetReceivedIpv4() int64 {
+func (m *AddVrfRequest) GetVrf() *Vrf {
if m != nil {
- return m.ReceivedIpv4
+ return m.Vrf
}
- return 0
+ return nil
}
-func (m *RPKIState) GetReceivedIpv6() int64 {
- if m != nil {
- return m.ReceivedIpv6
- }
- return 0
+type DeleteVrfRequest struct {
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}
-func (m *RPKIState) GetSerialNotify() int64 {
- if m != nil {
- return m.SerialNotify
- }
- return 0
-}
+func (m *DeleteVrfRequest) Reset() { *m = DeleteVrfRequest{} }
+func (m *DeleteVrfRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteVrfRequest) ProtoMessage() {}
+func (*DeleteVrfRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} }
-func (m *RPKIState) GetCacheReset() int64 {
+func (m *DeleteVrfRequest) GetName() string {
if m != nil {
- return m.CacheReset
+ return m.Name
}
- return 0
+ return ""
}
-func (m *RPKIState) GetCacheResponse() int64 {
- if m != nil {
- return m.CacheResponse
- }
- return 0
+type ListVrfRequest struct {
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}
-func (m *RPKIState) GetEndOfData() int64 {
- if m != nil {
- return m.EndOfData
- }
- return 0
-}
+func (m *ListVrfRequest) Reset() { *m = ListVrfRequest{} }
+func (m *ListVrfRequest) String() string { return proto.CompactTextString(m) }
+func (*ListVrfRequest) ProtoMessage() {}
+func (*ListVrfRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} }
-func (m *RPKIState) GetError() int64 {
+func (m *ListVrfRequest) GetName() string {
if m != nil {
- return m.Error
+ return m.Name
}
- return 0
+ return ""
}
-func (m *RPKIState) GetSerialQuery() int64 {
- if m != nil {
- return m.SerialQuery
- }
- return 0
+type ListVrfResponse struct {
+ Vrf *Vrf `protobuf:"bytes,1,opt,name=vrf" json:"vrf,omitempty"`
}
-func (m *RPKIState) GetResetQuery() int64 {
+func (m *ListVrfResponse) Reset() { *m = ListVrfResponse{} }
+func (m *ListVrfResponse) String() string { return proto.CompactTextString(m) }
+func (*ListVrfResponse) ProtoMessage() {}
+func (*ListVrfResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} }
+
+func (m *ListVrfResponse) GetVrf() *Vrf {
if m != nil {
- return m.ResetQuery
+ return m.Vrf
}
- return 0
+ return nil
}
-type Rpki struct {
- Conf *RPKIConf `protobuf:"bytes,1,opt,name=conf" json:"conf,omitempty"`
- State *RPKIState `protobuf:"bytes,2,opt,name=state" json:"state,omitempty"`
+type AddPolicyRequest struct {
+ Policy *Policy `protobuf:"bytes,1,opt,name=policy" json:"policy,omitempty"`
+ // if this flag is set, gobgpd won't define new statements
+ // but refer existing statements using statement's names in this arguments.
+ ReferExistingStatements bool `protobuf:"varint,2,opt,name=refer_existing_statements,json=referExistingStatements" json:"refer_existing_statements,omitempty"`
}
-func (m *Rpki) Reset() { *m = Rpki{} }
-func (m *Rpki) String() string { return proto.CompactTextString(m) }
-func (*Rpki) ProtoMessage() {}
-func (*Rpki) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} }
+func (m *AddPolicyRequest) Reset() { *m = AddPolicyRequest{} }
+func (m *AddPolicyRequest) String() string { return proto.CompactTextString(m) }
+func (*AddPolicyRequest) ProtoMessage() {}
+func (*AddPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} }
-func (m *Rpki) GetConf() *RPKIConf {
+func (m *AddPolicyRequest) GetPolicy() *Policy {
if m != nil {
- return m.Conf
+ return m.Policy
}
return nil
}
-func (m *Rpki) GetState() *RPKIState {
+func (m *AddPolicyRequest) GetReferExistingStatements() bool {
if m != nil {
- return m.State
+ return m.ReferExistingStatements
}
- return nil
+ return false
}
-type GetRpkiRequest struct {
- Family uint32 `protobuf:"varint,1,opt,name=family" json:"family,omitempty"`
+type DeletePolicyRequest struct {
+ Policy *Policy `protobuf:"bytes,1,opt,name=policy" json:"policy,omitempty"`
+ // if this flag is set, gobgpd won't delete any statements
+ // even if some statements get not used by any policy by this operation.
+ PreserveStatements bool `protobuf:"varint,2,opt,name=preserve_statements,json=preserveStatements" json:"preserve_statements,omitempty"`
+ All bool `protobuf:"varint,3,opt,name=all" json:"all,omitempty"`
}
-func (m *GetRpkiRequest) Reset() { *m = GetRpkiRequest{} }
-func (m *GetRpkiRequest) String() string { return proto.CompactTextString(m) }
-func (*GetRpkiRequest) ProtoMessage() {}
-func (*GetRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} }
+func (m *DeletePolicyRequest) Reset() { *m = DeletePolicyRequest{} }
+func (m *DeletePolicyRequest) String() string { return proto.CompactTextString(m) }
+func (*DeletePolicyRequest) ProtoMessage() {}
+func (*DeletePolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} }
-func (m *GetRpkiRequest) GetFamily() uint32 {
+func (m *DeletePolicyRequest) GetPolicy() *Policy {
if m != nil {
- return m.Family
+ return m.Policy
}
- return 0
+ return nil
}
-type GetRpkiResponse struct {
- Servers []*Rpki `protobuf:"bytes,1,rep,name=servers" json:"servers,omitempty"`
+func (m *DeletePolicyRequest) GetPreserveStatements() bool {
+ if m != nil {
+ return m.PreserveStatements
+ }
+ return false
}
-func (m *GetRpkiResponse) Reset() { *m = GetRpkiResponse{} }
-func (m *GetRpkiResponse) String() string { return proto.CompactTextString(m) }
-func (*GetRpkiResponse) ProtoMessage() {}
-func (*GetRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} }
-
-func (m *GetRpkiResponse) GetServers() []*Rpki {
+func (m *DeletePolicyRequest) GetAll() bool {
if m != nil {
- return m.Servers
+ return m.All
}
- return nil
+ return false
}
-type AddRpkiRequest struct {
- Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
- Port uint32 `protobuf:"varint,2,opt,name=port" json:"port,omitempty"`
- Lifetime int64 `protobuf:"varint,3,opt,name=lifetime" json:"lifetime,omitempty"`
+type ListPolicyRequest struct {
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}
-func (m *AddRpkiRequest) Reset() { *m = AddRpkiRequest{} }
-func (m *AddRpkiRequest) String() string { return proto.CompactTextString(m) }
-func (*AddRpkiRequest) ProtoMessage() {}
-func (*AddRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} }
+func (m *ListPolicyRequest) Reset() { *m = ListPolicyRequest{} }
+func (m *ListPolicyRequest) String() string { return proto.CompactTextString(m) }
+func (*ListPolicyRequest) ProtoMessage() {}
+func (*ListPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} }
-func (m *AddRpkiRequest) GetAddress() string {
+func (m *ListPolicyRequest) GetName() string {
if m != nil {
- return m.Address
+ return m.Name
}
return ""
}
-func (m *AddRpkiRequest) GetPort() uint32 {
- if m != nil {
- return m.Port
- }
- return 0
+type ListPolicyResponse struct {
+ Policy *Policy `protobuf:"bytes,1,opt,name=policy" json:"policy,omitempty"`
}
-func (m *AddRpkiRequest) GetLifetime() int64 {
+func (m *ListPolicyResponse) Reset() { *m = ListPolicyResponse{} }
+func (m *ListPolicyResponse) String() string { return proto.CompactTextString(m) }
+func (*ListPolicyResponse) ProtoMessage() {}
+func (*ListPolicyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} }
+
+func (m *ListPolicyResponse) GetPolicy() *Policy {
if m != nil {
- return m.Lifetime
+ return m.Policy
}
- return 0
-}
-
-type AddRpkiResponse struct {
+ return nil
}
-func (m *AddRpkiResponse) Reset() { *m = AddRpkiResponse{} }
-func (m *AddRpkiResponse) String() string { return proto.CompactTextString(m) }
-func (*AddRpkiResponse) ProtoMessage() {}
-func (*AddRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} }
-
-type DeleteRpkiRequest struct {
- Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
- Port uint32 `protobuf:"varint,2,opt,name=port" json:"port,omitempty"`
+type ReplacePolicyRequest struct {
+ Policy *Policy `protobuf:"bytes,1,opt,name=policy" json:"policy,omitempty"`
+ // if this flag is set, gobgpd won't define new statements
+ // but refer existing statements using statement's names in this arguments.
+ ReferExistingStatements bool `protobuf:"varint,2,opt,name=refer_existing_statements,json=referExistingStatements" json:"refer_existing_statements,omitempty"`
+ // if this flag is set, gobgpd won't delete any statements
+ // even if some statements get not used by any policy by this operation.
+ PreserveStatements bool `protobuf:"varint,3,opt,name=preserve_statements,json=preserveStatements" json:"preserve_statements,omitempty"`
}
-func (m *DeleteRpkiRequest) Reset() { *m = DeleteRpkiRequest{} }
-func (m *DeleteRpkiRequest) String() string { return proto.CompactTextString(m) }
-func (*DeleteRpkiRequest) ProtoMessage() {}
-func (*DeleteRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} }
+func (m *ReplacePolicyRequest) Reset() { *m = ReplacePolicyRequest{} }
+func (m *ReplacePolicyRequest) String() string { return proto.CompactTextString(m) }
+func (*ReplacePolicyRequest) ProtoMessage() {}
+func (*ReplacePolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} }
-func (m *DeleteRpkiRequest) GetAddress() string {
+func (m *ReplacePolicyRequest) GetPolicy() *Policy {
if m != nil {
- return m.Address
+ return m.Policy
}
- return ""
+ return nil
}
-func (m *DeleteRpkiRequest) GetPort() uint32 {
+func (m *ReplacePolicyRequest) GetReferExistingStatements() bool {
if m != nil {
- return m.Port
+ return m.ReferExistingStatements
}
- return 0
-}
-
-type DeleteRpkiResponse struct {
-}
-
-func (m *DeleteRpkiResponse) Reset() { *m = DeleteRpkiResponse{} }
-func (m *DeleteRpkiResponse) String() string { return proto.CompactTextString(m) }
-func (*DeleteRpkiResponse) ProtoMessage() {}
-func (*DeleteRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} }
-
-type EnableRpkiRequest struct {
- Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+ return false
}
-func (m *EnableRpkiRequest) Reset() { *m = EnableRpkiRequest{} }
-func (m *EnableRpkiRequest) String() string { return proto.CompactTextString(m) }
-func (*EnableRpkiRequest) ProtoMessage() {}
-func (*EnableRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} }
-
-func (m *EnableRpkiRequest) GetAddress() string {
+func (m *ReplacePolicyRequest) GetPreserveStatements() bool {
if m != nil {
- return m.Address
+ return m.PreserveStatements
}
- return ""
-}
-
-type EnableRpkiResponse struct {
+ return false
}
-func (m *EnableRpkiResponse) Reset() { *m = EnableRpkiResponse{} }
-func (m *EnableRpkiResponse) String() string { return proto.CompactTextString(m) }
-func (*EnableRpkiResponse) ProtoMessage() {}
-func (*EnableRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} }
-
-type DisableRpkiRequest struct {
- Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+type UpdatePolicyRequest struct {
+ Sets []*DefinedSet `protobuf:"bytes,1,rep,name=sets" json:"sets,omitempty"`
+ Policies []*Policy `protobuf:"bytes,2,rep,name=policies" json:"policies,omitempty"`
}
-func (m *DisableRpkiRequest) Reset() { *m = DisableRpkiRequest{} }
-func (m *DisableRpkiRequest) String() string { return proto.CompactTextString(m) }
-func (*DisableRpkiRequest) ProtoMessage() {}
-func (*DisableRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} }
+func (m *UpdatePolicyRequest) Reset() { *m = UpdatePolicyRequest{} }
+func (m *UpdatePolicyRequest) String() string { return proto.CompactTextString(m) }
+func (*UpdatePolicyRequest) ProtoMessage() {}
+func (*UpdatePolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} }
-func (m *DisableRpkiRequest) GetAddress() string {
+func (m *UpdatePolicyRequest) GetSets() []*DefinedSet {
if m != nil {
- return m.Address
+ return m.Sets
}
- return ""
-}
-
-type DisableRpkiResponse struct {
-}
-
-func (m *DisableRpkiResponse) Reset() { *m = DisableRpkiResponse{} }
-func (m *DisableRpkiResponse) String() string { return proto.CompactTextString(m) }
-func (*DisableRpkiResponse) ProtoMessage() {}
-func (*DisableRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} }
-
-type ResetRpkiRequest struct {
- Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+ return nil
}
-func (m *ResetRpkiRequest) Reset() { *m = ResetRpkiRequest{} }
-func (m *ResetRpkiRequest) String() string { return proto.CompactTextString(m) }
-func (*ResetRpkiRequest) ProtoMessage() {}
-func (*ResetRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57} }
-
-func (m *ResetRpkiRequest) GetAddress() string {
+func (m *UpdatePolicyRequest) GetPolicies() []*Policy {
if m != nil {
- return m.Address
+ return m.Policies
}
- return ""
-}
-
-type ResetRpkiResponse struct {
+ return nil
}
-func (m *ResetRpkiResponse) Reset() { *m = ResetRpkiResponse{} }
-func (m *ResetRpkiResponse) String() string { return proto.CompactTextString(m) }
-func (*ResetRpkiResponse) ProtoMessage() {}
-func (*ResetRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{58} }
-
-type SoftResetRpkiRequest struct {
- Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+type AddDefinedSetRequest struct {
+ Set *DefinedSet `protobuf:"bytes,1,opt,name=set" json:"set,omitempty"`
}
-func (m *SoftResetRpkiRequest) Reset() { *m = SoftResetRpkiRequest{} }
-func (m *SoftResetRpkiRequest) String() string { return proto.CompactTextString(m) }
-func (*SoftResetRpkiRequest) ProtoMessage() {}
-func (*SoftResetRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{59} }
+func (m *AddDefinedSetRequest) Reset() { *m = AddDefinedSetRequest{} }
+func (m *AddDefinedSetRequest) String() string { return proto.CompactTextString(m) }
+func (*AddDefinedSetRequest) ProtoMessage() {}
+func (*AddDefinedSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} }
-func (m *SoftResetRpkiRequest) GetAddress() string {
+func (m *AddDefinedSetRequest) GetSet() *DefinedSet {
if m != nil {
- return m.Address
+ return m.Set
}
- return ""
-}
-
-type SoftResetRpkiResponse struct {
+ return nil
}
-func (m *SoftResetRpkiResponse) Reset() { *m = SoftResetRpkiResponse{} }
-func (m *SoftResetRpkiResponse) String() string { return proto.CompactTextString(m) }
-func (*SoftResetRpkiResponse) ProtoMessage() {}
-func (*SoftResetRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{60} }
-
-type EnableZebraRequest struct {
- Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
- RouteTypes []string `protobuf:"bytes,2,rep,name=route_types,json=routeTypes" json:"route_types,omitempty"`
- Version uint32 `protobuf:"varint,3,opt,name=version" json:"version,omitempty"`
- NexthopTriggerEnable bool `protobuf:"varint,4,opt,name=nexthop_trigger_enable,json=nexthopTriggerEnable" json:"nexthop_trigger_enable,omitempty"`
- NexthopTriggerDelay uint32 `protobuf:"varint,5,opt,name=nexthop_trigger_delay,json=nexthopTriggerDelay" json:"nexthop_trigger_delay,omitempty"`
+type DeleteDefinedSetRequest struct {
+ Set *DefinedSet `protobuf:"bytes,1,opt,name=set" json:"set,omitempty"`
+ All bool `protobuf:"varint,2,opt,name=all" json:"all,omitempty"`
}
-func (m *EnableZebraRequest) Reset() { *m = EnableZebraRequest{} }
-func (m *EnableZebraRequest) String() string { return proto.CompactTextString(m) }
-func (*EnableZebraRequest) ProtoMessage() {}
-func (*EnableZebraRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{61} }
+func (m *DeleteDefinedSetRequest) Reset() { *m = DeleteDefinedSetRequest{} }
+func (m *DeleteDefinedSetRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteDefinedSetRequest) ProtoMessage() {}
+func (*DeleteDefinedSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} }
-func (m *EnableZebraRequest) GetUrl() string {
+func (m *DeleteDefinedSetRequest) GetSet() *DefinedSet {
if m != nil {
- return m.Url
+ return m.Set
}
- return ""
+ return nil
}
-func (m *EnableZebraRequest) GetRouteTypes() []string {
+func (m *DeleteDefinedSetRequest) GetAll() bool {
if m != nil {
- return m.RouteTypes
+ return m.All
}
- return nil
+ return false
}
-func (m *EnableZebraRequest) GetVersion() uint32 {
- if m != nil {
- return m.Version
- }
- return 0
+type ListDefinedSetRequest struct {
+ Type DefinedType `protobuf:"varint,1,opt,name=type,enum=gobgpapi.DefinedType" json:"type,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
}
-func (m *EnableZebraRequest) GetNexthopTriggerEnable() bool {
+func (m *ListDefinedSetRequest) Reset() { *m = ListDefinedSetRequest{} }
+func (m *ListDefinedSetRequest) String() string { return proto.CompactTextString(m) }
+func (*ListDefinedSetRequest) ProtoMessage() {}
+func (*ListDefinedSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} }
+
+func (m *ListDefinedSetRequest) GetType() DefinedType {
if m != nil {
- return m.NexthopTriggerEnable
+ return m.Type
}
- return false
+ return DefinedType_PREFIX
}
-func (m *EnableZebraRequest) GetNexthopTriggerDelay() uint32 {
+func (m *ListDefinedSetRequest) GetName() string {
if m != nil {
- return m.NexthopTriggerDelay
+ return m.Name
}
- return 0
+ return ""
}
-type EnableZebraResponse struct {
+type ListDefinedSetResponse struct {
+ Set *DefinedSet `protobuf:"bytes,1,opt,name=set" json:"set,omitempty"`
}
-func (m *EnableZebraResponse) Reset() { *m = EnableZebraResponse{} }
-func (m *EnableZebraResponse) String() string { return proto.CompactTextString(m) }
-func (*EnableZebraResponse) ProtoMessage() {}
-func (*EnableZebraResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{62} }
+func (m *ListDefinedSetResponse) Reset() { *m = ListDefinedSetResponse{} }
+func (m *ListDefinedSetResponse) String() string { return proto.CompactTextString(m) }
+func (*ListDefinedSetResponse) ProtoMessage() {}
+func (*ListDefinedSetResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} }
-type GetVrfRequest struct {
+func (m *ListDefinedSetResponse) GetSet() *DefinedSet {
+ if m != nil {
+ return m.Set
+ }
+ return nil
}
-func (m *GetVrfRequest) Reset() { *m = GetVrfRequest{} }
-func (m *GetVrfRequest) String() string { return proto.CompactTextString(m) }
-func (*GetVrfRequest) ProtoMessage() {}
-func (*GetVrfRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{63} }
-
-type GetVrfResponse struct {
- Vrfs []*Vrf `protobuf:"bytes,1,rep,name=vrfs" json:"vrfs,omitempty"`
+type ReplaceDefinedSetRequest struct {
+ Set *DefinedSet `protobuf:"bytes,1,opt,name=set" json:"set,omitempty"`
}
-func (m *GetVrfResponse) Reset() { *m = GetVrfResponse{} }
-func (m *GetVrfResponse) String() string { return proto.CompactTextString(m) }
-func (*GetVrfResponse) ProtoMessage() {}
-func (*GetVrfResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{64} }
+func (m *ReplaceDefinedSetRequest) Reset() { *m = ReplaceDefinedSetRequest{} }
+func (m *ReplaceDefinedSetRequest) String() string { return proto.CompactTextString(m) }
+func (*ReplaceDefinedSetRequest) ProtoMessage() {}
+func (*ReplaceDefinedSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} }
-func (m *GetVrfResponse) GetVrfs() []*Vrf {
+func (m *ReplaceDefinedSetRequest) GetSet() *DefinedSet {
if m != nil {
- return m.Vrfs
+ return m.Set
}
return nil
}
-type AddVrfRequest struct {
- Vrf *Vrf `protobuf:"bytes,1,opt,name=vrf" json:"vrf,omitempty"`
+type AddStatementRequest struct {
+ Statement *Statement `protobuf:"bytes,1,opt,name=statement" json:"statement,omitempty"`
}
-func (m *AddVrfRequest) Reset() { *m = AddVrfRequest{} }
-func (m *AddVrfRequest) String() string { return proto.CompactTextString(m) }
-func (*AddVrfRequest) ProtoMessage() {}
-func (*AddVrfRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{65} }
+func (m *AddStatementRequest) Reset() { *m = AddStatementRequest{} }
+func (m *AddStatementRequest) String() string { return proto.CompactTextString(m) }
+func (*AddStatementRequest) ProtoMessage() {}
+func (*AddStatementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} }
-func (m *AddVrfRequest) GetVrf() *Vrf {
+func (m *AddStatementRequest) GetStatement() *Statement {
if m != nil {
- return m.Vrf
+ return m.Statement
}
return nil
}
-type AddVrfResponse struct {
-}
-
-func (m *AddVrfResponse) Reset() { *m = AddVrfResponse{} }
-func (m *AddVrfResponse) String() string { return proto.CompactTextString(m) }
-func (*AddVrfResponse) ProtoMessage() {}
-func (*AddVrfResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{66} }
-
-type DeleteVrfRequest struct {
- Vrf *Vrf `protobuf:"bytes,1,opt,name=vrf" json:"vrf,omitempty"`
+type DeleteStatementRequest struct {
+ Statement *Statement `protobuf:"bytes,1,opt,name=statement" json:"statement,omitempty"`
+ All bool `protobuf:"varint,2,opt,name=all" json:"all,omitempty"`
}
-func (m *DeleteVrfRequest) Reset() { *m = DeleteVrfRequest{} }
-func (m *DeleteVrfRequest) String() string { return proto.CompactTextString(m) }
-func (*DeleteVrfRequest) ProtoMessage() {}
-func (*DeleteVrfRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{67} }
+func (m *DeleteStatementRequest) Reset() { *m = DeleteStatementRequest{} }
+func (m *DeleteStatementRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteStatementRequest) ProtoMessage() {}
+func (*DeleteStatementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} }
-func (m *DeleteVrfRequest) GetVrf() *Vrf {
+func (m *DeleteStatementRequest) GetStatement() *Statement {
if m != nil {
- return m.Vrf
+ return m.Statement
}
return nil
}
-type DeleteVrfResponse struct {
+func (m *DeleteStatementRequest) GetAll() bool {
+ if m != nil {
+ return m.All
+ }
+ return false
}
-func (m *DeleteVrfResponse) Reset() { *m = DeleteVrfResponse{} }
-func (m *DeleteVrfResponse) String() string { return proto.CompactTextString(m) }
-func (*DeleteVrfResponse) ProtoMessage() {}
-func (*DeleteVrfResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{68} }
-
-type GetDefinedSetRequest struct {
- Type DefinedType `protobuf:"varint,1,opt,name=type,enum=gobgpapi.DefinedType" json:"type,omitempty"`
- Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
+type ListStatementRequest struct {
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}
-func (m *GetDefinedSetRequest) Reset() { *m = GetDefinedSetRequest{} }
-func (m *GetDefinedSetRequest) String() string { return proto.CompactTextString(m) }
-func (*GetDefinedSetRequest) ProtoMessage() {}
-func (*GetDefinedSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{69} }
-
-func (m *GetDefinedSetRequest) GetType() DefinedType {
- if m != nil {
- return m.Type
- }
- return DefinedType_PREFIX
-}
+func (m *ListStatementRequest) Reset() { *m = ListStatementRequest{} }
+func (m *ListStatementRequest) String() string { return proto.CompactTextString(m) }
+func (*ListStatementRequest) ProtoMessage() {}
+func (*ListStatementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} }
-func (m *GetDefinedSetRequest) GetName() string {
+func (m *ListStatementRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
-type GetDefinedSetResponse struct {
- Sets []*DefinedSet `protobuf:"bytes,1,rep,name=sets" json:"sets,omitempty"`
+type ListStatementResponse struct {
+ Statement *Statement `protobuf:"bytes,1,opt,name=statement" json:"statement,omitempty"`
}
-func (m *GetDefinedSetResponse) Reset() { *m = GetDefinedSetResponse{} }
-func (m *GetDefinedSetResponse) String() string { return proto.CompactTextString(m) }
-func (*GetDefinedSetResponse) ProtoMessage() {}
-func (*GetDefinedSetResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{70} }
+func (m *ListStatementResponse) Reset() { *m = ListStatementResponse{} }
+func (m *ListStatementResponse) String() string { return proto.CompactTextString(m) }
+func (*ListStatementResponse) ProtoMessage() {}
+func (*ListStatementResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} }
-func (m *GetDefinedSetResponse) GetSets() []*DefinedSet {
+func (m *ListStatementResponse) GetStatement() *Statement {
if m != nil {
- return m.Sets
+ return m.Statement
}
return nil
}
-type AddDefinedSetRequest struct {
- Set *DefinedSet `protobuf:"bytes,1,opt,name=set" json:"set,omitempty"`
+type ReplaceStatementRequest struct {
+ Statement *Statement `protobuf:"bytes,1,opt,name=statement" json:"statement,omitempty"`
}
-func (m *AddDefinedSetRequest) Reset() { *m = AddDefinedSetRequest{} }
-func (m *AddDefinedSetRequest) String() string { return proto.CompactTextString(m) }
-func (*AddDefinedSetRequest) ProtoMessage() {}
-func (*AddDefinedSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{71} }
+func (m *ReplaceStatementRequest) Reset() { *m = ReplaceStatementRequest{} }
+func (m *ReplaceStatementRequest) String() string { return proto.CompactTextString(m) }
+func (*ReplaceStatementRequest) ProtoMessage() {}
+func (*ReplaceStatementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} }
-func (m *AddDefinedSetRequest) GetSet() *DefinedSet {
+func (m *ReplaceStatementRequest) GetStatement() *Statement {
if m != nil {
- return m.Set
+ return m.Statement
}
return nil
}
-type AddDefinedSetResponse struct {
+type AddPolicyAssignmentRequest struct {
+ Assignment *PolicyAssignment `protobuf:"bytes,1,opt,name=assignment" json:"assignment,omitempty"`
}
-func (m *AddDefinedSetResponse) Reset() { *m = AddDefinedSetResponse{} }
-func (m *AddDefinedSetResponse) String() string { return proto.CompactTextString(m) }
-func (*AddDefinedSetResponse) ProtoMessage() {}
-func (*AddDefinedSetResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{72} }
+func (m *AddPolicyAssignmentRequest) Reset() { *m = AddPolicyAssignmentRequest{} }
+func (m *AddPolicyAssignmentRequest) String() string { return proto.CompactTextString(m) }
+func (*AddPolicyAssignmentRequest) ProtoMessage() {}
+func (*AddPolicyAssignmentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} }
-type DeleteDefinedSetRequest struct {
- Set *DefinedSet `protobuf:"bytes,1,opt,name=set" json:"set,omitempty"`
- All bool `protobuf:"varint,2,opt,name=all" json:"all,omitempty"`
+func (m *AddPolicyAssignmentRequest) GetAssignment() *PolicyAssignment {
+ if m != nil {
+ return m.Assignment
+ }
+ return nil
}
-func (m *DeleteDefinedSetRequest) Reset() { *m = DeleteDefinedSetRequest{} }
-func (m *DeleteDefinedSetRequest) String() string { return proto.CompactTextString(m) }
-func (*DeleteDefinedSetRequest) ProtoMessage() {}
-func (*DeleteDefinedSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{73} }
+type DeletePolicyAssignmentRequest struct {
+ Assignment *PolicyAssignment `protobuf:"bytes,1,opt,name=assignment" json:"assignment,omitempty"`
+ All bool `protobuf:"varint,2,opt,name=all" json:"all,omitempty"`
+}
-func (m *DeleteDefinedSetRequest) GetSet() *DefinedSet {
+func (m *DeletePolicyAssignmentRequest) Reset() { *m = DeletePolicyAssignmentRequest{} }
+func (m *DeletePolicyAssignmentRequest) String() string { return proto.CompactTextString(m) }
+func (*DeletePolicyAssignmentRequest) ProtoMessage() {}
+func (*DeletePolicyAssignmentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} }
+
+func (m *DeletePolicyAssignmentRequest) GetAssignment() *PolicyAssignment {
if m != nil {
- return m.Set
+ return m.Assignment
}
return nil
}
-func (m *DeleteDefinedSetRequest) GetAll() bool {
+func (m *DeletePolicyAssignmentRequest) GetAll() bool {
if m != nil {
return m.All
}
return false
}
-type DeleteDefinedSetResponse struct {
-}
-
-func (m *DeleteDefinedSetResponse) Reset() { *m = DeleteDefinedSetResponse{} }
-func (m *DeleteDefinedSetResponse) String() string { return proto.CompactTextString(m) }
-func (*DeleteDefinedSetResponse) ProtoMessage() {}
-func (*DeleteDefinedSetResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{74} }
-
-type ReplaceDefinedSetRequest struct {
- Set *DefinedSet `protobuf:"bytes,1,opt,name=set" json:"set,omitempty"`
+type ListPolicyAssignmentRequest struct {
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+ Direction PolicyDirection `protobuf:"varint,2,opt,name=direction,enum=gobgpapi.PolicyDirection" json:"direction,omitempty"`
}
-func (m *ReplaceDefinedSetRequest) Reset() { *m = ReplaceDefinedSetRequest{} }
-func (m *ReplaceDefinedSetRequest) String() string { return proto.CompactTextString(m) }
-func (*ReplaceDefinedSetRequest) ProtoMessage() {}
-func (*ReplaceDefinedSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{75} }
+func (m *ListPolicyAssignmentRequest) Reset() { *m = ListPolicyAssignmentRequest{} }
+func (m *ListPolicyAssignmentRequest) String() string { return proto.CompactTextString(m) }
+func (*ListPolicyAssignmentRequest) ProtoMessage() {}
+func (*ListPolicyAssignmentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} }
-func (m *ReplaceDefinedSetRequest) GetSet() *DefinedSet {
+func (m *ListPolicyAssignmentRequest) GetName() string {
if m != nil {
- return m.Set
+ return m.Name
}
- return nil
-}
-
-type ReplaceDefinedSetResponse struct {
+ return ""
}
-func (m *ReplaceDefinedSetResponse) Reset() { *m = ReplaceDefinedSetResponse{} }
-func (m *ReplaceDefinedSetResponse) String() string { return proto.CompactTextString(m) }
-func (*ReplaceDefinedSetResponse) ProtoMessage() {}
-func (*ReplaceDefinedSetResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{76} }
-
-type GetStatementRequest struct {
+func (m *ListPolicyAssignmentRequest) GetDirection() PolicyDirection {
+ if m != nil {
+ return m.Direction
+ }
+ return PolicyDirection_UNKNOWN
}
-func (m *GetStatementRequest) Reset() { *m = GetStatementRequest{} }
-func (m *GetStatementRequest) String() string { return proto.CompactTextString(m) }
-func (*GetStatementRequest) ProtoMessage() {}
-func (*GetStatementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{77} }
-
-type GetStatementResponse struct {
- Statements []*Statement `protobuf:"bytes,1,rep,name=statements" json:"statements,omitempty"`
+type ListPolicyAssignmentResponse struct {
+ Assignment *PolicyAssignment `protobuf:"bytes,1,opt,name=assignment" json:"assignment,omitempty"`
}
-func (m *GetStatementResponse) Reset() { *m = GetStatementResponse{} }
-func (m *GetStatementResponse) String() string { return proto.CompactTextString(m) }
-func (*GetStatementResponse) ProtoMessage() {}
-func (*GetStatementResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{78} }
+func (m *ListPolicyAssignmentResponse) Reset() { *m = ListPolicyAssignmentResponse{} }
+func (m *ListPolicyAssignmentResponse) String() string { return proto.CompactTextString(m) }
+func (*ListPolicyAssignmentResponse) ProtoMessage() {}
+func (*ListPolicyAssignmentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} }
-func (m *GetStatementResponse) GetStatements() []*Statement {
+func (m *ListPolicyAssignmentResponse) GetAssignment() *PolicyAssignment {
if m != nil {
- return m.Statements
+ return m.Assignment
}
return nil
}
-type AddStatementRequest struct {
- Statement *Statement `protobuf:"bytes,1,opt,name=statement" json:"statement,omitempty"`
+type ReplacePolicyAssignmentRequest struct {
+ Assignment *PolicyAssignment `protobuf:"bytes,1,opt,name=assignment" json:"assignment,omitempty"`
}
-func (m *AddStatementRequest) Reset() { *m = AddStatementRequest{} }
-func (m *AddStatementRequest) String() string { return proto.CompactTextString(m) }
-func (*AddStatementRequest) ProtoMessage() {}
-func (*AddStatementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{79} }
+func (m *ReplacePolicyAssignmentRequest) Reset() { *m = ReplacePolicyAssignmentRequest{} }
+func (m *ReplacePolicyAssignmentRequest) String() string { return proto.CompactTextString(m) }
+func (*ReplacePolicyAssignmentRequest) ProtoMessage() {}
+func (*ReplacePolicyAssignmentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} }
-func (m *AddStatementRequest) GetStatement() *Statement {
+func (m *ReplacePolicyAssignmentRequest) GetAssignment() *PolicyAssignment {
if m != nil {
- return m.Statement
+ return m.Assignment
}
return nil
}
-type AddStatementResponse struct {
+type AddRpkiRequest struct {
+ Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+ Port uint32 `protobuf:"varint,2,opt,name=port" json:"port,omitempty"`
+ Lifetime int64 `protobuf:"varint,3,opt,name=lifetime" json:"lifetime,omitempty"`
}
-func (m *AddStatementResponse) Reset() { *m = AddStatementResponse{} }
-func (m *AddStatementResponse) String() string { return proto.CompactTextString(m) }
-func (*AddStatementResponse) ProtoMessage() {}
-func (*AddStatementResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{80} }
+func (m *AddRpkiRequest) Reset() { *m = AddRpkiRequest{} }
+func (m *AddRpkiRequest) String() string { return proto.CompactTextString(m) }
+func (*AddRpkiRequest) ProtoMessage() {}
+func (*AddRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} }
-type DeleteStatementRequest struct {
- Statement *Statement `protobuf:"bytes,1,opt,name=statement" json:"statement,omitempty"`
- All bool `protobuf:"varint,2,opt,name=all" json:"all,omitempty"`
+func (m *AddRpkiRequest) GetAddress() string {
+ if m != nil {
+ return m.Address
+ }
+ return ""
}
-func (m *DeleteStatementRequest) Reset() { *m = DeleteStatementRequest{} }
-func (m *DeleteStatementRequest) String() string { return proto.CompactTextString(m) }
-func (*DeleteStatementRequest) ProtoMessage() {}
-func (*DeleteStatementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{81} }
-
-func (m *DeleteStatementRequest) GetStatement() *Statement {
+func (m *AddRpkiRequest) GetPort() uint32 {
if m != nil {
- return m.Statement
+ return m.Port
}
- return nil
+ return 0
}
-func (m *DeleteStatementRequest) GetAll() bool {
+func (m *AddRpkiRequest) GetLifetime() int64 {
if m != nil {
- return m.All
+ return m.Lifetime
}
- return false
+ return 0
}
-type DeleteStatementResponse struct {
+type DeleteRpkiRequest struct {
+ Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+ Port uint32 `protobuf:"varint,2,opt,name=port" json:"port,omitempty"`
}
-func (m *DeleteStatementResponse) Reset() { *m = DeleteStatementResponse{} }
-func (m *DeleteStatementResponse) String() string { return proto.CompactTextString(m) }
-func (*DeleteStatementResponse) ProtoMessage() {}
-func (*DeleteStatementResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{82} }
+func (m *DeleteRpkiRequest) Reset() { *m = DeleteRpkiRequest{} }
+func (m *DeleteRpkiRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteRpkiRequest) ProtoMessage() {}
+func (*DeleteRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57} }
-type ReplaceStatementRequest struct {
- Statement *Statement `protobuf:"bytes,1,opt,name=statement" json:"statement,omitempty"`
+func (m *DeleteRpkiRequest) GetAddress() string {
+ if m != nil {
+ return m.Address
+ }
+ return ""
}
-func (m *ReplaceStatementRequest) Reset() { *m = ReplaceStatementRequest{} }
-func (m *ReplaceStatementRequest) String() string { return proto.CompactTextString(m) }
-func (*ReplaceStatementRequest) ProtoMessage() {}
-func (*ReplaceStatementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{83} }
-
-func (m *ReplaceStatementRequest) GetStatement() *Statement {
+func (m *DeleteRpkiRequest) GetPort() uint32 {
if m != nil {
- return m.Statement
+ return m.Port
}
- return nil
+ return 0
}
-type ReplaceStatementResponse struct {
+type ListRpkiRequest struct {
+ Family uint32 `protobuf:"varint,1,opt,name=family" json:"family,omitempty"`
}
-func (m *ReplaceStatementResponse) Reset() { *m = ReplaceStatementResponse{} }
-func (m *ReplaceStatementResponse) String() string { return proto.CompactTextString(m) }
-func (*ReplaceStatementResponse) ProtoMessage() {}
-func (*ReplaceStatementResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{84} }
+func (m *ListRpkiRequest) Reset() { *m = ListRpkiRequest{} }
+func (m *ListRpkiRequest) String() string { return proto.CompactTextString(m) }
+func (*ListRpkiRequest) ProtoMessage() {}
+func (*ListRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{58} }
-type GetPolicyRequest struct {
+func (m *ListRpkiRequest) GetFamily() uint32 {
+ if m != nil {
+ return m.Family
+ }
+ return 0
}
-func (m *GetPolicyRequest) Reset() { *m = GetPolicyRequest{} }
-func (m *GetPolicyRequest) String() string { return proto.CompactTextString(m) }
-func (*GetPolicyRequest) ProtoMessage() {}
-func (*GetPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{85} }
-
-type GetPolicyResponse struct {
- Policies []*Policy `protobuf:"bytes,1,rep,name=policies" json:"policies,omitempty"`
+type ListRpkiResponse struct {
+ Server *Rpki `protobuf:"bytes,1,opt,name=server" json:"server,omitempty"`
}
-func (m *GetPolicyResponse) Reset() { *m = GetPolicyResponse{} }
-func (m *GetPolicyResponse) String() string { return proto.CompactTextString(m) }
-func (*GetPolicyResponse) ProtoMessage() {}
-func (*GetPolicyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{86} }
+func (m *ListRpkiResponse) Reset() { *m = ListRpkiResponse{} }
+func (m *ListRpkiResponse) String() string { return proto.CompactTextString(m) }
+func (*ListRpkiResponse) ProtoMessage() {}
+func (*ListRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{59} }
-func (m *GetPolicyResponse) GetPolicies() []*Policy {
+func (m *ListRpkiResponse) GetServer() *Rpki {
if m != nil {
- return m.Policies
+ return m.Server
}
return nil
}
-type AddPolicyRequest struct {
- Policy *Policy `protobuf:"bytes,1,opt,name=policy" json:"policy,omitempty"`
- // if this flag is set, gobgpd won't define new statements
- // but refer existing statements using statement's names in this arguments.
- ReferExistingStatements bool `protobuf:"varint,2,opt,name=refer_existing_statements,json=referExistingStatements" json:"refer_existing_statements,omitempty"`
+type EnableRpkiRequest struct {
+ Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+ Port uint32 `protobuf:"varint,2,opt,name=port" json:"port,omitempty"`
}
-func (m *AddPolicyRequest) Reset() { *m = AddPolicyRequest{} }
-func (m *AddPolicyRequest) String() string { return proto.CompactTextString(m) }
-func (*AddPolicyRequest) ProtoMessage() {}
-func (*AddPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{87} }
+func (m *EnableRpkiRequest) Reset() { *m = EnableRpkiRequest{} }
+func (m *EnableRpkiRequest) String() string { return proto.CompactTextString(m) }
+func (*EnableRpkiRequest) ProtoMessage() {}
+func (*EnableRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{60} }
-func (m *AddPolicyRequest) GetPolicy() *Policy {
+func (m *EnableRpkiRequest) GetAddress() string {
if m != nil {
- return m.Policy
+ return m.Address
}
- return nil
+ return ""
}
-func (m *AddPolicyRequest) GetReferExistingStatements() bool {
+func (m *EnableRpkiRequest) GetPort() uint32 {
if m != nil {
- return m.ReferExistingStatements
+ return m.Port
}
- return false
-}
-
-type AddPolicyResponse struct {
+ return 0
}
-func (m *AddPolicyResponse) Reset() { *m = AddPolicyResponse{} }
-func (m *AddPolicyResponse) String() string { return proto.CompactTextString(m) }
-func (*AddPolicyResponse) ProtoMessage() {}
-func (*AddPolicyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{88} }
-
-type DeletePolicyRequest struct {
- Policy *Policy `protobuf:"bytes,1,opt,name=policy" json:"policy,omitempty"`
- // if this flag is set, gobgpd won't delete any statements
- // even if some statements get not used by any policy by this operation.
- PreserveStatements bool `protobuf:"varint,2,opt,name=preserve_statements,json=preserveStatements" json:"preserve_statements,omitempty"`
- All bool `protobuf:"varint,3,opt,name=all" json:"all,omitempty"`
+type DisableRpkiRequest struct {
+ Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+ Port uint32 `protobuf:"varint,2,opt,name=port" json:"port,omitempty"`
}
-func (m *DeletePolicyRequest) Reset() { *m = DeletePolicyRequest{} }
-func (m *DeletePolicyRequest) String() string { return proto.CompactTextString(m) }
-func (*DeletePolicyRequest) ProtoMessage() {}
-func (*DeletePolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{89} }
-
-func (m *DeletePolicyRequest) GetPolicy() *Policy {
- if m != nil {
- return m.Policy
- }
- return nil
-}
+func (m *DisableRpkiRequest) Reset() { *m = DisableRpkiRequest{} }
+func (m *DisableRpkiRequest) String() string { return proto.CompactTextString(m) }
+func (*DisableRpkiRequest) ProtoMessage() {}
+func (*DisableRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{61} }
-func (m *DeletePolicyRequest) GetPreserveStatements() bool {
+func (m *DisableRpkiRequest) GetAddress() string {
if m != nil {
- return m.PreserveStatements
+ return m.Address
}
- return false
+ return ""
}
-func (m *DeletePolicyRequest) GetAll() bool {
+func (m *DisableRpkiRequest) GetPort() uint32 {
if m != nil {
- return m.All
+ return m.Port
}
- return false
-}
-
-type DeletePolicyResponse struct {
+ return 0
}
-func (m *DeletePolicyResponse) Reset() { *m = DeletePolicyResponse{} }
-func (m *DeletePolicyResponse) String() string { return proto.CompactTextString(m) }
-func (*DeletePolicyResponse) ProtoMessage() {}
-func (*DeletePolicyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{90} }
-
-type ReplacePolicyRequest struct {
- Policy *Policy `protobuf:"bytes,1,opt,name=policy" json:"policy,omitempty"`
- // if this flag is set, gobgpd won't define new statements
- // but refer existing statements using statement's names in this arguments.
- ReferExistingStatements bool `protobuf:"varint,2,opt,name=refer_existing_statements,json=referExistingStatements" json:"refer_existing_statements,omitempty"`
- // if this flag is set, gobgpd won't delete any statements
- // even if some statements get not used by any policy by this operation.
- PreserveStatements bool `protobuf:"varint,3,opt,name=preserve_statements,json=preserveStatements" json:"preserve_statements,omitempty"`
+type ResetRpkiRequest struct {
+ Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+ Port uint32 `protobuf:"varint,2,opt,name=port" json:"port,omitempty"`
+ Soft bool `protobuf:"varint,3,opt,name=soft" json:"soft,omitempty"`
}
-func (m *ReplacePolicyRequest) Reset() { *m = ReplacePolicyRequest{} }
-func (m *ReplacePolicyRequest) String() string { return proto.CompactTextString(m) }
-func (*ReplacePolicyRequest) ProtoMessage() {}
-func (*ReplacePolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{91} }
+func (m *ResetRpkiRequest) Reset() { *m = ResetRpkiRequest{} }
+func (m *ResetRpkiRequest) String() string { return proto.CompactTextString(m) }
+func (*ResetRpkiRequest) ProtoMessage() {}
+func (*ResetRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{62} }
-func (m *ReplacePolicyRequest) GetPolicy() *Policy {
+func (m *ResetRpkiRequest) GetAddress() string {
if m != nil {
- return m.Policy
+ return m.Address
}
- return nil
+ return ""
}
-func (m *ReplacePolicyRequest) GetReferExistingStatements() bool {
+func (m *ResetRpkiRequest) GetPort() uint32 {
if m != nil {
- return m.ReferExistingStatements
+ return m.Port
}
- return false
+ return 0
}
-func (m *ReplacePolicyRequest) GetPreserveStatements() bool {
+func (m *ResetRpkiRequest) GetSoft() bool {
if m != nil {
- return m.PreserveStatements
+ return m.Soft
}
return false
}
-type ReplacePolicyResponse struct {
-}
-
-func (m *ReplacePolicyResponse) Reset() { *m = ReplacePolicyResponse{} }
-func (m *ReplacePolicyResponse) String() string { return proto.CompactTextString(m) }
-func (*ReplacePolicyResponse) ProtoMessage() {}
-func (*ReplacePolicyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{92} }
-
-type GetPolicyAssignmentRequest struct {
- Assignment *PolicyAssignment `protobuf:"bytes,1,opt,name=assignment" json:"assignment,omitempty"`
+type ListRpkiTableRequest struct {
+ Family uint32 `protobuf:"varint,1,opt,name=family" json:"family,omitempty"`
}
-func (m *GetPolicyAssignmentRequest) Reset() { *m = GetPolicyAssignmentRequest{} }
-func (m *GetPolicyAssignmentRequest) String() string { return proto.CompactTextString(m) }
-func (*GetPolicyAssignmentRequest) ProtoMessage() {}
-func (*GetPolicyAssignmentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{93} }
+func (m *ListRpkiTableRequest) Reset() { *m = ListRpkiTableRequest{} }
+func (m *ListRpkiTableRequest) String() string { return proto.CompactTextString(m) }
+func (*ListRpkiTableRequest) ProtoMessage() {}
+func (*ListRpkiTableRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{63} }
-func (m *GetPolicyAssignmentRequest) GetAssignment() *PolicyAssignment {
+func (m *ListRpkiTableRequest) GetFamily() uint32 {
if m != nil {
- return m.Assignment
+ return m.Family
}
- return nil
+ return 0
}
-type GetPolicyAssignmentResponse struct {
- Assignment *PolicyAssignment `protobuf:"bytes,1,opt,name=assignment" json:"assignment,omitempty"`
+type ListRpkiTableResponse struct {
+ Roa *Roa `protobuf:"bytes,1,opt,name=roa" json:"roa,omitempty"`
}
-func (m *GetPolicyAssignmentResponse) Reset() { *m = GetPolicyAssignmentResponse{} }
-func (m *GetPolicyAssignmentResponse) String() string { return proto.CompactTextString(m) }
-func (*GetPolicyAssignmentResponse) ProtoMessage() {}
-func (*GetPolicyAssignmentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{94} }
+func (m *ListRpkiTableResponse) Reset() { *m = ListRpkiTableResponse{} }
+func (m *ListRpkiTableResponse) String() string { return proto.CompactTextString(m) }
+func (*ListRpkiTableResponse) ProtoMessage() {}
+func (*ListRpkiTableResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{64} }
-func (m *GetPolicyAssignmentResponse) GetAssignment() *PolicyAssignment {
+func (m *ListRpkiTableResponse) GetRoa() *Roa {
if m != nil {
- return m.Assignment
+ return m.Roa
}
return nil
}
-type AddPolicyAssignmentRequest struct {
- Assignment *PolicyAssignment `protobuf:"bytes,1,opt,name=assignment" json:"assignment,omitempty"`
+type EnableZebraRequest struct {
+ Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+ RouteTypes []string `protobuf:"bytes,2,rep,name=route_types,json=routeTypes" json:"route_types,omitempty"`
+ Version uint32 `protobuf:"varint,3,opt,name=version" json:"version,omitempty"`
+ NexthopTriggerEnable bool `protobuf:"varint,4,opt,name=nexthop_trigger_enable,json=nexthopTriggerEnable" json:"nexthop_trigger_enable,omitempty"`
+ NexthopTriggerDelay uint32 `protobuf:"varint,5,opt,name=nexthop_trigger_delay,json=nexthopTriggerDelay" json:"nexthop_trigger_delay,omitempty"`
}
-func (m *AddPolicyAssignmentRequest) Reset() { *m = AddPolicyAssignmentRequest{} }
-func (m *AddPolicyAssignmentRequest) String() string { return proto.CompactTextString(m) }
-func (*AddPolicyAssignmentRequest) ProtoMessage() {}
-func (*AddPolicyAssignmentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{95} }
+func (m *EnableZebraRequest) Reset() { *m = EnableZebraRequest{} }
+func (m *EnableZebraRequest) String() string { return proto.CompactTextString(m) }
+func (*EnableZebraRequest) ProtoMessage() {}
+func (*EnableZebraRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{65} }
-func (m *AddPolicyAssignmentRequest) GetAssignment() *PolicyAssignment {
+func (m *EnableZebraRequest) GetUrl() string {
if m != nil {
- return m.Assignment
+ return m.Url
}
- return nil
-}
-
-type AddPolicyAssignmentResponse struct {
+ return ""
}
-func (m *AddPolicyAssignmentResponse) Reset() { *m = AddPolicyAssignmentResponse{} }
-func (m *AddPolicyAssignmentResponse) String() string { return proto.CompactTextString(m) }
-func (*AddPolicyAssignmentResponse) ProtoMessage() {}
-func (*AddPolicyAssignmentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{96} }
-
-type DeletePolicyAssignmentRequest struct {
- Assignment *PolicyAssignment `protobuf:"bytes,1,opt,name=assignment" json:"assignment,omitempty"`
- All bool `protobuf:"varint,2,opt,name=all" json:"all,omitempty"`
+func (m *EnableZebraRequest) GetRouteTypes() []string {
+ if m != nil {
+ return m.RouteTypes
+ }
+ return nil
}
-func (m *DeletePolicyAssignmentRequest) Reset() { *m = DeletePolicyAssignmentRequest{} }
-func (m *DeletePolicyAssignmentRequest) String() string { return proto.CompactTextString(m) }
-func (*DeletePolicyAssignmentRequest) ProtoMessage() {}
-func (*DeletePolicyAssignmentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{97} }
-
-func (m *DeletePolicyAssignmentRequest) GetAssignment() *PolicyAssignment {
+func (m *EnableZebraRequest) GetVersion() uint32 {
if m != nil {
- return m.Assignment
+ return m.Version
}
- return nil
+ return 0
}
-func (m *DeletePolicyAssignmentRequest) GetAll() bool {
+func (m *EnableZebraRequest) GetNexthopTriggerEnable() bool {
if m != nil {
- return m.All
+ return m.NexthopTriggerEnable
}
return false
}
-type DeletePolicyAssignmentResponse struct {
+func (m *EnableZebraRequest) GetNexthopTriggerDelay() uint32 {
+ if m != nil {
+ return m.NexthopTriggerDelay
+ }
+ return 0
}
-func (m *DeletePolicyAssignmentResponse) Reset() { *m = DeletePolicyAssignmentResponse{} }
-func (m *DeletePolicyAssignmentResponse) String() string { return proto.CompactTextString(m) }
-func (*DeletePolicyAssignmentResponse) ProtoMessage() {}
-func (*DeletePolicyAssignmentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{98} }
-
-type ReplacePolicyAssignmentRequest struct {
- Assignment *PolicyAssignment `protobuf:"bytes,1,opt,name=assignment" json:"assignment,omitempty"`
+type EnableMrtRequest struct {
+ DumpType int32 `protobuf:"varint,1,opt,name=dump_type,json=dumpType" json:"dump_type,omitempty"`
+ Filename string `protobuf:"bytes,2,opt,name=filename" json:"filename,omitempty"`
+ Interval uint64 `protobuf:"varint,3,opt,name=interval" json:"interval,omitempty"`
}
-func (m *ReplacePolicyAssignmentRequest) Reset() { *m = ReplacePolicyAssignmentRequest{} }
-func (m *ReplacePolicyAssignmentRequest) String() string { return proto.CompactTextString(m) }
-func (*ReplacePolicyAssignmentRequest) ProtoMessage() {}
-func (*ReplacePolicyAssignmentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{99} }
+func (m *EnableMrtRequest) Reset() { *m = EnableMrtRequest{} }
+func (m *EnableMrtRequest) String() string { return proto.CompactTextString(m) }
+func (*EnableMrtRequest) ProtoMessage() {}
+func (*EnableMrtRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{66} }
-func (m *ReplacePolicyAssignmentRequest) GetAssignment() *PolicyAssignment {
+func (m *EnableMrtRequest) GetDumpType() int32 {
if m != nil {
- return m.Assignment
+ return m.DumpType
}
- return nil
+ return 0
}
-type ReplacePolicyAssignmentResponse struct {
+func (m *EnableMrtRequest) GetFilename() string {
+ if m != nil {
+ return m.Filename
+ }
+ return ""
}
-func (m *ReplacePolicyAssignmentResponse) Reset() { *m = ReplacePolicyAssignmentResponse{} }
-func (m *ReplacePolicyAssignmentResponse) String() string { return proto.CompactTextString(m) }
-func (*ReplacePolicyAssignmentResponse) ProtoMessage() {}
-func (*ReplacePolicyAssignmentResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor0, []int{100}
+func (m *EnableMrtRequest) GetInterval() uint64 {
+ if m != nil {
+ return m.Interval
+ }
+ return 0
}
-type GetServerRequest struct {
+type DisableMrtRequest struct {
}
-func (m *GetServerRequest) Reset() { *m = GetServerRequest{} }
-func (m *GetServerRequest) String() string { return proto.CompactTextString(m) }
-func (*GetServerRequest) ProtoMessage() {}
-func (*GetServerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{101} }
+func (m *DisableMrtRequest) Reset() { *m = DisableMrtRequest{} }
+func (m *DisableMrtRequest) String() string { return proto.CompactTextString(m) }
+func (*DisableMrtRequest) ProtoMessage() {}
+func (*DisableMrtRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{67} }
-type GetServerResponse struct {
- Global *Global `protobuf:"bytes,1,opt,name=global" json:"global,omitempty"`
+type AddBmpRequest struct {
+ Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+ Port uint32 `protobuf:"varint,2,opt,name=port" json:"port,omitempty"`
+ Type AddBmpRequest_MonitoringPolicy `protobuf:"varint,3,opt,name=type,enum=gobgpapi.AddBmpRequest_MonitoringPolicy" json:"type,omitempty"`
}
-func (m *GetServerResponse) Reset() { *m = GetServerResponse{} }
-func (m *GetServerResponse) String() string { return proto.CompactTextString(m) }
-func (*GetServerResponse) ProtoMessage() {}
-func (*GetServerResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{102} }
+func (m *AddBmpRequest) Reset() { *m = AddBmpRequest{} }
+func (m *AddBmpRequest) String() string { return proto.CompactTextString(m) }
+func (*AddBmpRequest) ProtoMessage() {}
+func (*AddBmpRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{68} }
-func (m *GetServerResponse) GetGlobal() *Global {
+func (m *AddBmpRequest) GetAddress() string {
if m != nil {
- return m.Global
+ return m.Address
}
- return nil
+ return ""
}
-type StartServerRequest struct {
- Global *Global `protobuf:"bytes,1,opt,name=global" json:"global,omitempty"`
+func (m *AddBmpRequest) GetPort() uint32 {
+ if m != nil {
+ return m.Port
+ }
+ return 0
}
-func (m *StartServerRequest) Reset() { *m = StartServerRequest{} }
-func (m *StartServerRequest) String() string { return proto.CompactTextString(m) }
-func (*StartServerRequest) ProtoMessage() {}
-func (*StartServerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{103} }
-
-func (m *StartServerRequest) GetGlobal() *Global {
+func (m *AddBmpRequest) GetType() AddBmpRequest_MonitoringPolicy {
if m != nil {
- return m.Global
+ return m.Type
}
- return nil
+ return AddBmpRequest_PRE
}
-type StartServerResponse struct {
+type DeleteBmpRequest struct {
+ Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+ Port uint32 `protobuf:"varint,2,opt,name=port" json:"port,omitempty"`
}
-func (m *StartServerResponse) Reset() { *m = StartServerResponse{} }
-func (m *StartServerResponse) String() string { return proto.CompactTextString(m) }
-func (*StartServerResponse) ProtoMessage() {}
-func (*StartServerResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{104} }
+func (m *DeleteBmpRequest) Reset() { *m = DeleteBmpRequest{} }
+func (m *DeleteBmpRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteBmpRequest) ProtoMessage() {}
+func (*DeleteBmpRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{69} }
-type StopServerRequest struct {
+func (m *DeleteBmpRequest) GetAddress() string {
+ if m != nil {
+ return m.Address
+ }
+ return ""
}
-func (m *StopServerRequest) Reset() { *m = StopServerRequest{} }
-func (m *StopServerRequest) String() string { return proto.CompactTextString(m) }
-func (*StopServerRequest) ProtoMessage() {}
-func (*StopServerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{105} }
-
-type StopServerResponse struct {
+func (m *DeleteBmpRequest) GetPort() uint32 {
+ if m != nil {
+ return m.Port
+ }
+ return 0
}
-func (m *StopServerResponse) Reset() { *m = StopServerResponse{} }
-func (m *StopServerResponse) String() string { return proto.CompactTextString(m) }
-func (*StopServerResponse) ProtoMessage() {}
-func (*StopServerResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{106} }
-
type RPKIValidation struct {
State RPKIValidation_State `protobuf:"varint,1,opt,name=state,enum=gobgpapi.RPKIValidation_State" json:"state,omitempty"`
Reason RPKIValidation_Reason `protobuf:"varint,2,opt,name=reason,enum=gobgpapi.RPKIValidation_Reason" json:"reason,omitempty"`
@@ -2711,7 +2424,7 @@ type RPKIValidation struct {
func (m *RPKIValidation) Reset() { *m = RPKIValidation{} }
func (m *RPKIValidation) String() string { return proto.CompactTextString(m) }
func (*RPKIValidation) ProtoMessage() {}
-func (*RPKIValidation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{107} }
+func (*RPKIValidation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{70} }
func (m *RPKIValidation) GetState() RPKIValidation_State {
if m != nil {
@@ -2791,7 +2504,7 @@ type Path struct {
func (m *Path) Reset() { *m = Path{} }
func (m *Path) String() string { return proto.CompactTextString(m) }
func (*Path) ProtoMessage() {}
-func (*Path) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{108} }
+func (*Path) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{71} }
func (m *Path) GetNlri() []byte {
if m != nil {
@@ -2941,16 +2654,14 @@ func (m *Path) GetAnyPattrs() []*google_protobuf.Any {
}
type Destination struct {
- Prefix string `protobuf:"bytes,1,opt,name=prefix" json:"prefix,omitempty"`
- Paths []*Path `protobuf:"bytes,2,rep,name=paths" json:"paths,omitempty"`
- LongerPrefixes bool `protobuf:"varint,3,opt,name=longer_prefixes,json=longerPrefixes" json:"longer_prefixes,omitempty"`
- ShorterPrefixes bool `protobuf:"varint,4,opt,name=shorter_prefixes,json=shorterPrefixes" json:"shorter_prefixes,omitempty"`
+ Prefix string `protobuf:"bytes,1,opt,name=prefix" json:"prefix,omitempty"`
+ Paths []*Path `protobuf:"bytes,2,rep,name=paths" json:"paths,omitempty"`
}
func (m *Destination) Reset() { *m = Destination{} }
func (m *Destination) String() string { return proto.CompactTextString(m) }
func (*Destination) ProtoMessage() {}
-func (*Destination) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{109} }
+func (*Destination) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{72} }
func (m *Destination) GetPrefix() string {
if m != nil {
@@ -2966,100 +2677,6 @@ func (m *Destination) GetPaths() []*Path {
return nil
}
-func (m *Destination) GetLongerPrefixes() bool {
- if m != nil {
- return m.LongerPrefixes
- }
- return false
-}
-
-func (m *Destination) GetShorterPrefixes() bool {
- if m != nil {
- return m.ShorterPrefixes
- }
- return false
-}
-
-type Table struct {
- Type Resource `protobuf:"varint,1,opt,name=type,enum=gobgpapi.Resource" json:"type,omitempty"`
- Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
- Family uint32 `protobuf:"varint,3,opt,name=family" json:"family,omitempty"`
- Destinations []*Destination `protobuf:"bytes,4,rep,name=destinations" json:"destinations,omitempty"`
- PostPolicy bool `protobuf:"varint,5,opt,name=post_policy,json=postPolicy" json:"post_policy,omitempty"`
-}
-
-func (m *Table) Reset() { *m = Table{} }
-func (m *Table) String() string { return proto.CompactTextString(m) }
-func (*Table) ProtoMessage() {}
-func (*Table) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{110} }
-
-func (m *Table) GetType() Resource {
- if m != nil {
- return m.Type
- }
- return Resource_GLOBAL
-}
-
-func (m *Table) GetName() string {
- if m != nil {
- return m.Name
- }
- return ""
-}
-
-func (m *Table) GetFamily() uint32 {
- if m != nil {
- return m.Family
- }
- return 0
-}
-
-func (m *Table) GetDestinations() []*Destination {
- if m != nil {
- return m.Destinations
- }
- return nil
-}
-
-func (m *Table) GetPostPolicy() bool {
- if m != nil {
- return m.PostPolicy
- }
- return false
-}
-
-type GetRibRequest struct {
- Table *Table `protobuf:"bytes,1,opt,name=table" json:"table,omitempty"`
-}
-
-func (m *GetRibRequest) Reset() { *m = GetRibRequest{} }
-func (m *GetRibRequest) String() string { return proto.CompactTextString(m) }
-func (*GetRibRequest) ProtoMessage() {}
-func (*GetRibRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{111} }
-
-func (m *GetRibRequest) GetTable() *Table {
- if m != nil {
- return m.Table
- }
- return nil
-}
-
-type GetRibResponse struct {
- Table *Table `protobuf:"bytes,1,opt,name=table" json:"table,omitempty"`
-}
-
-func (m *GetRibResponse) Reset() { *m = GetRibResponse{} }
-func (m *GetRibResponse) String() string { return proto.CompactTextString(m) }
-func (*GetRibResponse) ProtoMessage() {}
-func (*GetRibResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{112} }
-
-func (m *GetRibResponse) GetTable() *Table {
- if m != nil {
- return m.Table
- }
- return nil
-}
-
// API representation of table.LookupPrefix
type TableLookupPrefix struct {
Prefix string `protobuf:"bytes,1,opt,name=prefix" json:"prefix,omitempty"`
@@ -3069,7 +2686,7 @@ type TableLookupPrefix struct {
func (m *TableLookupPrefix) Reset() { *m = TableLookupPrefix{} }
func (m *TableLookupPrefix) String() string { return proto.CompactTextString(m) }
func (*TableLookupPrefix) ProtoMessage() {}
-func (*TableLookupPrefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{113} }
+func (*TableLookupPrefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{73} }
func (m *TableLookupPrefix) GetPrefix() string {
if m != nil {
@@ -3085,86 +2702,6 @@ func (m *TableLookupPrefix) GetLookupOption() TableLookupOption {
return TableLookupOption_LOOKUP_EXACT
}
-type GetPathRequest struct {
- Type Resource `protobuf:"varint,1,opt,name=type,enum=gobgpapi.Resource" json:"type,omitempty"`
- Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
- Family uint32 `protobuf:"varint,3,opt,name=family" json:"family,omitempty"`
- Prefixes []*TableLookupPrefix `protobuf:"bytes,4,rep,name=prefixes" json:"prefixes,omitempty"`
-}
-
-func (m *GetPathRequest) Reset() { *m = GetPathRequest{} }
-func (m *GetPathRequest) String() string { return proto.CompactTextString(m) }
-func (*GetPathRequest) ProtoMessage() {}
-func (*GetPathRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{114} }
-
-func (m *GetPathRequest) GetType() Resource {
- if m != nil {
- return m.Type
- }
- return Resource_GLOBAL
-}
-
-func (m *GetPathRequest) GetName() string {
- if m != nil {
- return m.Name
- }
- return ""
-}
-
-func (m *GetPathRequest) GetFamily() uint32 {
- if m != nil {
- return m.Family
- }
- return 0
-}
-
-func (m *GetPathRequest) GetPrefixes() []*TableLookupPrefix {
- if m != nil {
- return m.Prefixes
- }
- return nil
-}
-
-type ValidateRibRequest struct {
- Type Resource `protobuf:"varint,1,opt,name=type,enum=gobgpapi.Resource" json:"type,omitempty"`
- Family uint32 `protobuf:"varint,2,opt,name=family" json:"family,omitempty"`
- Prefix string `protobuf:"bytes,3,opt,name=prefix" json:"prefix,omitempty"`
-}
-
-func (m *ValidateRibRequest) Reset() { *m = ValidateRibRequest{} }
-func (m *ValidateRibRequest) String() string { return proto.CompactTextString(m) }
-func (*ValidateRibRequest) ProtoMessage() {}
-func (*ValidateRibRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{115} }
-
-func (m *ValidateRibRequest) GetType() Resource {
- if m != nil {
- return m.Type
- }
- return Resource_GLOBAL
-}
-
-func (m *ValidateRibRequest) GetFamily() uint32 {
- if m != nil {
- return m.Family
- }
- return 0
-}
-
-func (m *ValidateRibRequest) GetPrefix() string {
- if m != nil {
- return m.Prefix
- }
- return ""
-}
-
-type ValidateRibResponse struct {
-}
-
-func (m *ValidateRibResponse) Reset() { *m = ValidateRibResponse{} }
-func (m *ValidateRibResponse) String() string { return proto.CompactTextString(m) }
-func (*ValidateRibResponse) ProtoMessage() {}
-func (*ValidateRibResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{116} }
-
type Peer struct {
// Note: Regarding to the consistency with OpenConfig model, a list of
// address family should be removed from here, and should be configured with
@@ -3174,7 +2711,7 @@ type Peer struct {
Conf *PeerConf `protobuf:"bytes,3,opt,name=conf" json:"conf,omitempty"`
EbgpMultihop *EbgpMultihop `protobuf:"bytes,4,opt,name=ebgp_multihop,json=ebgpMultihop" json:"ebgp_multihop,omitempty"`
RouteReflector *RouteReflector `protobuf:"bytes,5,opt,name=route_reflector,json=routeReflector" json:"route_reflector,omitempty"`
- Info *PeerState `protobuf:"bytes,6,opt,name=info" json:"info,omitempty"`
+ State *PeerState `protobuf:"bytes,6,opt,name=state" json:"state,omitempty"`
Timers *Timers `protobuf:"bytes,7,opt,name=timers" json:"timers,omitempty"`
Transport *Transport `protobuf:"bytes,8,opt,name=transport" json:"transport,omitempty"`
RouteServer *RouteServer `protobuf:"bytes,9,opt,name=route_server,json=routeServer" json:"route_server,omitempty"`
@@ -3186,7 +2723,7 @@ type Peer struct {
func (m *Peer) Reset() { *m = Peer{} }
func (m *Peer) String() string { return proto.CompactTextString(m) }
func (*Peer) ProtoMessage() {}
-func (*Peer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{117} }
+func (*Peer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{74} }
func (m *Peer) GetFamilies() []uint32 {
if m != nil {
@@ -3223,9 +2760,9 @@ func (m *Peer) GetRouteReflector() *RouteReflector {
return nil
}
-func (m *Peer) GetInfo() *PeerState {
+func (m *Peer) GetState() *PeerState {
if m != nil {
- return m.Info
+ return m.State
}
return nil
}
@@ -3293,7 +2830,7 @@ type PeerGroup struct {
func (m *PeerGroup) Reset() { *m = PeerGroup{} }
func (m *PeerGroup) String() string { return proto.CompactTextString(m) }
func (*PeerGroup) ProtoMessage() {}
-func (*PeerGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{118} }
+func (*PeerGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{75} }
func (m *PeerGroup) GetFamilies() []uint32 {
if m != nil {
@@ -3387,7 +2924,7 @@ type DynamicNeighbor struct {
func (m *DynamicNeighbor) Reset() { *m = DynamicNeighbor{} }
func (m *DynamicNeighbor) String() string { return proto.CompactTextString(m) }
func (*DynamicNeighbor) ProtoMessage() {}
-func (*DynamicNeighbor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{119} }
+func (*DynamicNeighbor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{76} }
func (m *DynamicNeighbor) GetPrefix() string {
if m != nil {
@@ -3412,7 +2949,7 @@ type ApplyPolicy struct {
func (m *ApplyPolicy) Reset() { *m = ApplyPolicy{} }
func (m *ApplyPolicy) String() string { return proto.CompactTextString(m) }
func (*ApplyPolicy) ProtoMessage() {}
-func (*ApplyPolicy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{120} }
+func (*ApplyPolicy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{77} }
func (m *ApplyPolicy) GetInPolicy() *PolicyAssignment {
if m != nil {
@@ -3444,7 +2981,7 @@ type PrefixLimit struct {
func (m *PrefixLimit) Reset() { *m = PrefixLimit{} }
func (m *PrefixLimit) String() string { return proto.CompactTextString(m) }
func (*PrefixLimit) ProtoMessage() {}
-func (*PrefixLimit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{121} }
+func (*PrefixLimit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{78} }
func (m *PrefixLimit) GetFamily() uint32 {
if m != nil {
@@ -3497,7 +3034,7 @@ type PeerConf struct {
func (m *PeerConf) Reset() { *m = PeerConf{} }
func (m *PeerConf) String() string { return proto.CompactTextString(m) }
func (*PeerConf) ProtoMessage() {}
-func (*PeerConf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{122} }
+func (*PeerConf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{79} }
func (m *PeerConf) GetAuthPassword() string {
if m != nil {
@@ -3647,7 +3184,7 @@ type PeerGroupConf struct {
func (m *PeerGroupConf) Reset() { *m = PeerGroupConf{} }
func (m *PeerGroupConf) String() string { return proto.CompactTextString(m) }
func (*PeerGroupConf) ProtoMessage() {}
-func (*PeerGroupConf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{123} }
+func (*PeerGroupConf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{80} }
func (m *PeerGroupConf) GetAuthPassword() string {
if m != nil {
@@ -3729,7 +3266,7 @@ type PeerGroupState struct {
func (m *PeerGroupState) Reset() { *m = PeerGroupState{} }
func (m *PeerGroupState) String() string { return proto.CompactTextString(m) }
func (*PeerGroupState) ProtoMessage() {}
-func (*PeerGroupState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{124} }
+func (*PeerGroupState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{81} }
func (m *PeerGroupState) GetAuthPassword() string {
if m != nil {
@@ -3816,7 +3353,7 @@ type EbgpMultihop struct {
func (m *EbgpMultihop) Reset() { *m = EbgpMultihop{} }
func (m *EbgpMultihop) String() string { return proto.CompactTextString(m) }
func (*EbgpMultihop) ProtoMessage() {}
-func (*EbgpMultihop) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{125} }
+func (*EbgpMultihop) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{82} }
func (m *EbgpMultihop) GetEnabled() bool {
if m != nil {
@@ -3840,7 +3377,7 @@ type RouteReflector struct {
func (m *RouteReflector) Reset() { *m = RouteReflector{} }
func (m *RouteReflector) String() string { return proto.CompactTextString(m) }
func (*RouteReflector) ProtoMessage() {}
-func (*RouteReflector) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{126} }
+func (*RouteReflector) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{83} }
func (m *RouteReflector) GetRouteReflectorClient() bool {
if m != nil {
@@ -3857,33 +3394,32 @@ func (m *RouteReflector) GetRouteReflectorClusterId() string {
}
type PeerState struct {
- AuthPassword string `protobuf:"bytes,1,opt,name=auth_password,json=authPassword" json:"auth_password,omitempty"`
- Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
- LocalAs uint32 `protobuf:"varint,3,opt,name=local_as,json=localAs" json:"local_as,omitempty"`
- Messages *Messages `protobuf:"bytes,4,opt,name=messages" json:"messages,omitempty"`
- NeighborAddress string `protobuf:"bytes,5,opt,name=neighbor_address,json=neighborAddress" json:"neighbor_address,omitempty"`
- PeerAs uint32 `protobuf:"varint,6,opt,name=peer_as,json=peerAs" json:"peer_as,omitempty"`
- PeerGroup string `protobuf:"bytes,7,opt,name=peer_group,json=peerGroup" json:"peer_group,omitempty"`
- PeerType uint32 `protobuf:"varint,8,opt,name=peer_type,json=peerType" json:"peer_type,omitempty"`
- Queues *Queues `protobuf:"bytes,9,opt,name=queues" json:"queues,omitempty"`
- RemovePrivateAs uint32 `protobuf:"varint,10,opt,name=remove_private_as,json=removePrivateAs" json:"remove_private_as,omitempty"`
- RouteFlapDamping bool `protobuf:"varint,11,opt,name=route_flap_damping,json=routeFlapDamping" json:"route_flap_damping,omitempty"`
- SendCommunity uint32 `protobuf:"varint,12,opt,name=send_community,json=sendCommunity" json:"send_community,omitempty"`
- SessionState uint32 `protobuf:"varint,13,opt,name=session_state,json=sessionState" json:"session_state,omitempty"`
- SupportedCapabilities []string `protobuf:"bytes,14,rep,name=supported_capabilities,json=supportedCapabilities" json:"supported_capabilities,omitempty"`
- BgpState string `protobuf:"bytes,15,opt,name=bgp_state,json=bgpState" json:"bgp_state,omitempty"`
- AdminState PeerState_AdminState `protobuf:"varint,16,opt,name=admin_state,json=adminState,enum=gobgpapi.PeerState_AdminState" json:"admin_state,omitempty"`
- Received uint32 `protobuf:"varint,17,opt,name=received" json:"received,omitempty"`
- Accepted uint32 `protobuf:"varint,18,opt,name=accepted" json:"accepted,omitempty"`
- Advertised uint32 `protobuf:"varint,19,opt,name=advertised" json:"advertised,omitempty"`
- OutQ uint32 `protobuf:"varint,20,opt,name=out_q,json=outQ" json:"out_q,omitempty"`
- Flops uint32 `protobuf:"varint,21,opt,name=flops" json:"flops,omitempty"`
+ AuthPassword string `protobuf:"bytes,1,opt,name=auth_password,json=authPassword" json:"auth_password,omitempty"`
+ Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
+ LocalAs uint32 `protobuf:"varint,3,opt,name=local_as,json=localAs" json:"local_as,omitempty"`
+ Messages *Messages `protobuf:"bytes,4,opt,name=messages" json:"messages,omitempty"`
+ NeighborAddress string `protobuf:"bytes,5,opt,name=neighbor_address,json=neighborAddress" json:"neighbor_address,omitempty"`
+ PeerAs uint32 `protobuf:"varint,6,opt,name=peer_as,json=peerAs" json:"peer_as,omitempty"`
+ PeerGroup string `protobuf:"bytes,7,opt,name=peer_group,json=peerGroup" json:"peer_group,omitempty"`
+ PeerType uint32 `protobuf:"varint,8,opt,name=peer_type,json=peerType" json:"peer_type,omitempty"`
+ Queues *Queues `protobuf:"bytes,9,opt,name=queues" json:"queues,omitempty"`
+ RemovePrivateAs uint32 `protobuf:"varint,10,opt,name=remove_private_as,json=removePrivateAs" json:"remove_private_as,omitempty"`
+ RouteFlapDamping bool `protobuf:"varint,11,opt,name=route_flap_damping,json=routeFlapDamping" json:"route_flap_damping,omitempty"`
+ SendCommunity uint32 `protobuf:"varint,12,opt,name=send_community,json=sendCommunity" json:"send_community,omitempty"`
+ SessionState PeerState_SessionState `protobuf:"varint,13,opt,name=session_state,json=sessionState,enum=gobgpapi.PeerState_SessionState" json:"session_state,omitempty"`
+ SupportedCapabilities []string `protobuf:"bytes,14,rep,name=supported_capabilities,json=supportedCapabilities" json:"supported_capabilities,omitempty"`
+ AdminState PeerState_AdminState `protobuf:"varint,15,opt,name=admin_state,json=adminState,enum=gobgpapi.PeerState_AdminState" json:"admin_state,omitempty"`
+ Received uint32 `protobuf:"varint,16,opt,name=received" json:"received,omitempty"`
+ Accepted uint32 `protobuf:"varint,17,opt,name=accepted" json:"accepted,omitempty"`
+ Advertised uint32 `protobuf:"varint,18,opt,name=advertised" json:"advertised,omitempty"`
+ OutQ uint32 `protobuf:"varint,19,opt,name=out_q,json=outQ" json:"out_q,omitempty"`
+ Flops uint32 `protobuf:"varint,20,opt,name=flops" json:"flops,omitempty"`
}
func (m *PeerState) Reset() { *m = PeerState{} }
func (m *PeerState) String() string { return proto.CompactTextString(m) }
func (*PeerState) ProtoMessage() {}
-func (*PeerState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{127} }
+func (*PeerState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{84} }
func (m *PeerState) GetAuthPassword() string {
if m != nil {
@@ -3969,11 +3505,11 @@ func (m *PeerState) GetSendCommunity() uint32 {
return 0
}
-func (m *PeerState) GetSessionState() uint32 {
+func (m *PeerState) GetSessionState() PeerState_SessionState {
if m != nil {
return m.SessionState
}
- return 0
+ return PeerState_UNKNOWN
}
func (m *PeerState) GetSupportedCapabilities() []string {
@@ -3983,13 +3519,6 @@ func (m *PeerState) GetSupportedCapabilities() []string {
return nil
}
-func (m *PeerState) GetBgpState() string {
- if m != nil {
- return m.BgpState
- }
- return ""
-}
-
func (m *PeerState) GetAdminState() PeerState_AdminState {
if m != nil {
return m.AdminState
@@ -4040,7 +3569,7 @@ type Messages struct {
func (m *Messages) Reset() { *m = Messages{} }
func (m *Messages) String() string { return proto.CompactTextString(m) }
func (*Messages) ProtoMessage() {}
-func (*Messages) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{128} }
+func (*Messages) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{85} }
func (m *Messages) GetReceived() *Message {
if m != nil {
@@ -4057,65 +3586,65 @@ func (m *Messages) GetSent() *Message {
}
type Message struct {
- NOTIFICATION uint64 `protobuf:"varint,1,opt,name=NOTIFICATION" json:"NOTIFICATION,omitempty"`
- UPDATE uint64 `protobuf:"varint,2,opt,name=UPDATE" json:"UPDATE,omitempty"`
- OPEN uint64 `protobuf:"varint,3,opt,name=OPEN" json:"OPEN,omitempty"`
- KEEPALIVE uint64 `protobuf:"varint,4,opt,name=KEEPALIVE" json:"KEEPALIVE,omitempty"`
- REFRESH uint64 `protobuf:"varint,5,opt,name=REFRESH" json:"REFRESH,omitempty"`
- DISCARDED uint64 `protobuf:"varint,6,opt,name=DISCARDED" json:"DISCARDED,omitempty"`
- TOTAL uint64 `protobuf:"varint,7,opt,name=TOTAL" json:"TOTAL,omitempty"`
+ Notification uint64 `protobuf:"varint,1,opt,name=notification" json:"notification,omitempty"`
+ Update uint64 `protobuf:"varint,2,opt,name=update" json:"update,omitempty"`
+ Open uint64 `protobuf:"varint,3,opt,name=open" json:"open,omitempty"`
+ Keepalive uint64 `protobuf:"varint,4,opt,name=keepalive" json:"keepalive,omitempty"`
+ Refresh uint64 `protobuf:"varint,5,opt,name=refresh" json:"refresh,omitempty"`
+ Discarded uint64 `protobuf:"varint,6,opt,name=discarded" json:"discarded,omitempty"`
+ Total uint64 `protobuf:"varint,7,opt,name=total" json:"total,omitempty"`
}
func (m *Message) Reset() { *m = Message{} }
func (m *Message) String() string { return proto.CompactTextString(m) }
func (*Message) ProtoMessage() {}
-func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{129} }
+func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{86} }
-func (m *Message) GetNOTIFICATION() uint64 {
+func (m *Message) GetNotification() uint64 {
if m != nil {
- return m.NOTIFICATION
+ return m.Notification
}
return 0
}
-func (m *Message) GetUPDATE() uint64 {
+func (m *Message) GetUpdate() uint64 {
if m != nil {
- return m.UPDATE
+ return m.Update
}
return 0
}
-func (m *Message) GetOPEN() uint64 {
+func (m *Message) GetOpen() uint64 {
if m != nil {
- return m.OPEN
+ return m.Open
}
return 0
}
-func (m *Message) GetKEEPALIVE() uint64 {
+func (m *Message) GetKeepalive() uint64 {
if m != nil {
- return m.KEEPALIVE
+ return m.Keepalive
}
return 0
}
-func (m *Message) GetREFRESH() uint64 {
+func (m *Message) GetRefresh() uint64 {
if m != nil {
- return m.REFRESH
+ return m.Refresh
}
return 0
}
-func (m *Message) GetDISCARDED() uint64 {
+func (m *Message) GetDiscarded() uint64 {
if m != nil {
- return m.DISCARDED
+ return m.Discarded
}
return 0
}
-func (m *Message) GetTOTAL() uint64 {
+func (m *Message) GetTotal() uint64 {
if m != nil {
- return m.TOTAL
+ return m.Total
}
return 0
}
@@ -4128,7 +3657,7 @@ type Queues struct {
func (m *Queues) Reset() { *m = Queues{} }
func (m *Queues) String() string { return proto.CompactTextString(m) }
func (*Queues) ProtoMessage() {}
-func (*Queues) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{130} }
+func (*Queues) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{87} }
func (m *Queues) GetInput() uint32 {
if m != nil {
@@ -4152,7 +3681,7 @@ type Timers struct {
func (m *Timers) Reset() { *m = Timers{} }
func (m *Timers) String() string { return proto.CompactTextString(m) }
func (*Timers) ProtoMessage() {}
-func (*Timers) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{131} }
+func (*Timers) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{88} }
func (m *Timers) GetConfig() *TimersConfig {
if m != nil {
@@ -4178,7 +3707,7 @@ type TimersConfig struct {
func (m *TimersConfig) Reset() { *m = TimersConfig{} }
func (m *TimersConfig) String() string { return proto.CompactTextString(m) }
func (*TimersConfig) ProtoMessage() {}
-func (*TimersConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{132} }
+func (*TimersConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{89} }
func (m *TimersConfig) GetConnectRetry() uint64 {
if m != nil {
@@ -4221,7 +3750,7 @@ type TimersState struct {
func (m *TimersState) Reset() { *m = TimersState{} }
func (m *TimersState) String() string { return proto.CompactTextString(m) }
func (*TimersState) ProtoMessage() {}
-func (*TimersState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{133} }
+func (*TimersState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{90} }
func (m *TimersState) GetConnectRetry() uint64 {
if m != nil {
@@ -4285,7 +3814,7 @@ type Transport struct {
func (m *Transport) Reset() { *m = Transport{} }
func (m *Transport) String() string { return proto.CompactTextString(m) }
func (*Transport) ProtoMessage() {}
-func (*Transport) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{134} }
+func (*Transport) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{91} }
func (m *Transport) GetLocalAddress() string {
if m != nil {
@@ -4343,7 +3872,7 @@ type RouteServer struct {
func (m *RouteServer) Reset() { *m = RouteServer{} }
func (m *RouteServer) String() string { return proto.CompactTextString(m) }
func (*RouteServer) ProtoMessage() {}
-func (*RouteServer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{135} }
+func (*RouteServer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{92} }
func (m *RouteServer) GetRouteServerClient() bool {
if m != nil {
@@ -4369,7 +3898,7 @@ type GracefulRestart struct {
func (m *GracefulRestart) Reset() { *m = GracefulRestart{} }
func (m *GracefulRestart) String() string { return proto.CompactTextString(m) }
func (*GracefulRestart) ProtoMessage() {}
-func (*GracefulRestart) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{136} }
+func (*GracefulRestart) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{93} }
func (m *GracefulRestart) GetEnabled() bool {
if m != nil {
@@ -4455,7 +3984,7 @@ type MpGracefulRestartConfig struct {
func (m *MpGracefulRestartConfig) Reset() { *m = MpGracefulRestartConfig{} }
func (m *MpGracefulRestartConfig) String() string { return proto.CompactTextString(m) }
func (*MpGracefulRestartConfig) ProtoMessage() {}
-func (*MpGracefulRestartConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{137} }
+func (*MpGracefulRestartConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{94} }
func (m *MpGracefulRestartConfig) GetEnabled() bool {
if m != nil {
@@ -4475,7 +4004,7 @@ type MpGracefulRestartState struct {
func (m *MpGracefulRestartState) Reset() { *m = MpGracefulRestartState{} }
func (m *MpGracefulRestartState) String() string { return proto.CompactTextString(m) }
func (*MpGracefulRestartState) ProtoMessage() {}
-func (*MpGracefulRestartState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{138} }
+func (*MpGracefulRestartState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{95} }
func (m *MpGracefulRestartState) GetEnabled() bool {
if m != nil {
@@ -4520,7 +4049,7 @@ type MpGracefulRestart struct {
func (m *MpGracefulRestart) Reset() { *m = MpGracefulRestart{} }
func (m *MpGracefulRestart) String() string { return proto.CompactTextString(m) }
func (*MpGracefulRestart) ProtoMessage() {}
-func (*MpGracefulRestart) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{139} }
+func (*MpGracefulRestart) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{96} }
func (m *MpGracefulRestart) GetConfig() *MpGracefulRestartConfig {
if m != nil {
@@ -4544,7 +4073,7 @@ type AfiSafiConfig struct {
func (m *AfiSafiConfig) Reset() { *m = AfiSafiConfig{} }
func (m *AfiSafiConfig) String() string { return proto.CompactTextString(m) }
func (*AfiSafiConfig) ProtoMessage() {}
-func (*AfiSafiConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{140} }
+func (*AfiSafiConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{97} }
func (m *AfiSafiConfig) GetFamily() uint32 {
if m != nil {
@@ -4570,7 +4099,7 @@ type AfiSafiState struct {
func (m *AfiSafiState) Reset() { *m = AfiSafiState{} }
func (m *AfiSafiState) String() string { return proto.CompactTextString(m) }
func (*AfiSafiState) ProtoMessage() {}
-func (*AfiSafiState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{141} }
+func (*AfiSafiState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{98} }
func (m *AfiSafiState) GetFamily() uint32 {
if m != nil {
@@ -4613,7 +4142,7 @@ type RouteSelectionOptionsConfig struct {
func (m *RouteSelectionOptionsConfig) Reset() { *m = RouteSelectionOptionsConfig{} }
func (m *RouteSelectionOptionsConfig) String() string { return proto.CompactTextString(m) }
func (*RouteSelectionOptionsConfig) ProtoMessage() {}
-func (*RouteSelectionOptionsConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{142} }
+func (*RouteSelectionOptionsConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{99} }
func (m *RouteSelectionOptionsConfig) GetAlwaysCompareMed() bool {
if m != nil {
@@ -4677,7 +4206,7 @@ type RouteSelectionOptionsState struct {
func (m *RouteSelectionOptionsState) Reset() { *m = RouteSelectionOptionsState{} }
func (m *RouteSelectionOptionsState) String() string { return proto.CompactTextString(m) }
func (*RouteSelectionOptionsState) ProtoMessage() {}
-func (*RouteSelectionOptionsState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{143} }
+func (*RouteSelectionOptionsState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{100} }
func (m *RouteSelectionOptionsState) GetAlwaysCompareMed() bool {
if m != nil {
@@ -4736,7 +4265,7 @@ type RouteSelectionOptions struct {
func (m *RouteSelectionOptions) Reset() { *m = RouteSelectionOptions{} }
func (m *RouteSelectionOptions) String() string { return proto.CompactTextString(m) }
func (*RouteSelectionOptions) ProtoMessage() {}
-func (*RouteSelectionOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{144} }
+func (*RouteSelectionOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{101} }
func (m *RouteSelectionOptions) GetConfig() *RouteSelectionOptionsConfig {
if m != nil {
@@ -4759,7 +4288,7 @@ type UseMultiplePathsConfig struct {
func (m *UseMultiplePathsConfig) Reset() { *m = UseMultiplePathsConfig{} }
func (m *UseMultiplePathsConfig) String() string { return proto.CompactTextString(m) }
func (*UseMultiplePathsConfig) ProtoMessage() {}
-func (*UseMultiplePathsConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{145} }
+func (*UseMultiplePathsConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{102} }
func (m *UseMultiplePathsConfig) GetEnabled() bool {
if m != nil {
@@ -4775,7 +4304,7 @@ type UseMultiplePathsState struct {
func (m *UseMultiplePathsState) Reset() { *m = UseMultiplePathsState{} }
func (m *UseMultiplePathsState) String() string { return proto.CompactTextString(m) }
func (*UseMultiplePathsState) ProtoMessage() {}
-func (*UseMultiplePathsState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{146} }
+func (*UseMultiplePathsState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{103} }
func (m *UseMultiplePathsState) GetEnabled() bool {
if m != nil {
@@ -4792,7 +4321,7 @@ type EbgpConfig struct {
func (m *EbgpConfig) Reset() { *m = EbgpConfig{} }
func (m *EbgpConfig) String() string { return proto.CompactTextString(m) }
func (*EbgpConfig) ProtoMessage() {}
-func (*EbgpConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{147} }
+func (*EbgpConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{104} }
func (m *EbgpConfig) GetAllowMultipleAs() bool {
if m != nil {
@@ -4816,7 +4345,7 @@ type EbgpState struct {
func (m *EbgpState) Reset() { *m = EbgpState{} }
func (m *EbgpState) String() string { return proto.CompactTextString(m) }
func (*EbgpState) ProtoMessage() {}
-func (*EbgpState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{148} }
+func (*EbgpState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{105} }
func (m *EbgpState) GetAllowMultipleAs() bool {
if m != nil {
@@ -4840,7 +4369,7 @@ type Ebgp struct {
func (m *Ebgp) Reset() { *m = Ebgp{} }
func (m *Ebgp) String() string { return proto.CompactTextString(m) }
func (*Ebgp) ProtoMessage() {}
-func (*Ebgp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{149} }
+func (*Ebgp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{106} }
func (m *Ebgp) GetConfig() *EbgpConfig {
if m != nil {
@@ -4863,7 +4392,7 @@ type IbgpConfig struct {
func (m *IbgpConfig) Reset() { *m = IbgpConfig{} }
func (m *IbgpConfig) String() string { return proto.CompactTextString(m) }
func (*IbgpConfig) ProtoMessage() {}
-func (*IbgpConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{150} }
+func (*IbgpConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{107} }
func (m *IbgpConfig) GetMaximumPaths() uint32 {
if m != nil {
@@ -4879,7 +4408,7 @@ type IbgpState struct {
func (m *IbgpState) Reset() { *m = IbgpState{} }
func (m *IbgpState) String() string { return proto.CompactTextString(m) }
func (*IbgpState) ProtoMessage() {}
-func (*IbgpState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{151} }
+func (*IbgpState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{108} }
func (m *IbgpState) GetMaximumPaths() uint32 {
if m != nil {
@@ -4896,7 +4425,7 @@ type Ibgp struct {
func (m *Ibgp) Reset() { *m = Ibgp{} }
func (m *Ibgp) String() string { return proto.CompactTextString(m) }
func (*Ibgp) ProtoMessage() {}
-func (*Ibgp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{152} }
+func (*Ibgp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{109} }
func (m *Ibgp) GetConfig() *IbgpConfig {
if m != nil {
@@ -4922,7 +4451,7 @@ type UseMultiplePaths struct {
func (m *UseMultiplePaths) Reset() { *m = UseMultiplePaths{} }
func (m *UseMultiplePaths) String() string { return proto.CompactTextString(m) }
func (*UseMultiplePaths) ProtoMessage() {}
-func (*UseMultiplePaths) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{153} }
+func (*UseMultiplePaths) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{110} }
func (m *UseMultiplePaths) GetConfig() *UseMultiplePathsConfig {
if m != nil {
@@ -4959,7 +4488,7 @@ type RouteTargetMembershipConfig struct {
func (m *RouteTargetMembershipConfig) Reset() { *m = RouteTargetMembershipConfig{} }
func (m *RouteTargetMembershipConfig) String() string { return proto.CompactTextString(m) }
func (*RouteTargetMembershipConfig) ProtoMessage() {}
-func (*RouteTargetMembershipConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{154} }
+func (*RouteTargetMembershipConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{111} }
func (m *RouteTargetMembershipConfig) GetDeferralTime() uint32 {
if m != nil {
@@ -4975,7 +4504,7 @@ type RouteTargetMembershipState struct {
func (m *RouteTargetMembershipState) Reset() { *m = RouteTargetMembershipState{} }
func (m *RouteTargetMembershipState) String() string { return proto.CompactTextString(m) }
func (*RouteTargetMembershipState) ProtoMessage() {}
-func (*RouteTargetMembershipState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{155} }
+func (*RouteTargetMembershipState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{112} }
func (m *RouteTargetMembershipState) GetDeferralTime() uint32 {
if m != nil {
@@ -4992,7 +4521,7 @@ type RouteTargetMembership struct {
func (m *RouteTargetMembership) Reset() { *m = RouteTargetMembership{} }
func (m *RouteTargetMembership) String() string { return proto.CompactTextString(m) }
func (*RouteTargetMembership) ProtoMessage() {}
-func (*RouteTargetMembership) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{156} }
+func (*RouteTargetMembership) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{113} }
func (m *RouteTargetMembership) GetConfig() *RouteTargetMembershipConfig {
if m != nil {
@@ -5017,7 +4546,7 @@ func (m *LongLivedGracefulRestartConfig) Reset() { *m = LongLivedGracefu
func (m *LongLivedGracefulRestartConfig) String() string { return proto.CompactTextString(m) }
func (*LongLivedGracefulRestartConfig) ProtoMessage() {}
func (*LongLivedGracefulRestartConfig) Descriptor() ([]byte, []int) {
- return fileDescriptor0, []int{157}
+ return fileDescriptor0, []int{114}
}
func (m *LongLivedGracefulRestartConfig) GetEnabled() bool {
@@ -5045,7 +4574,7 @@ type LongLivedGracefulRestartState struct {
func (m *LongLivedGracefulRestartState) Reset() { *m = LongLivedGracefulRestartState{} }
func (m *LongLivedGracefulRestartState) String() string { return proto.CompactTextString(m) }
func (*LongLivedGracefulRestartState) ProtoMessage() {}
-func (*LongLivedGracefulRestartState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{158} }
+func (*LongLivedGracefulRestartState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{115} }
func (m *LongLivedGracefulRestartState) GetEnabled() bool {
if m != nil {
@@ -5090,7 +4619,7 @@ type LongLivedGracefulRestart struct {
func (m *LongLivedGracefulRestart) Reset() { *m = LongLivedGracefulRestart{} }
func (m *LongLivedGracefulRestart) String() string { return proto.CompactTextString(m) }
func (*LongLivedGracefulRestart) ProtoMessage() {}
-func (*LongLivedGracefulRestart) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{159} }
+func (*LongLivedGracefulRestart) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{116} }
func (m *LongLivedGracefulRestart) GetConfig() *LongLivedGracefulRestartConfig {
if m != nil {
@@ -5133,7 +4662,7 @@ type AfiSafi struct {
func (m *AfiSafi) Reset() { *m = AfiSafi{} }
func (m *AfiSafi) String() string { return proto.CompactTextString(m) }
func (*AfiSafi) ProtoMessage() {}
-func (*AfiSafi) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{160} }
+func (*AfiSafi) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{117} }
func (m *AfiSafi) GetMpGracefulRestart() *MpGracefulRestart {
if m != nil {
@@ -5206,7 +4735,7 @@ type AddPathsConfig struct {
func (m *AddPathsConfig) Reset() { *m = AddPathsConfig{} }
func (m *AddPathsConfig) String() string { return proto.CompactTextString(m) }
func (*AddPathsConfig) ProtoMessage() {}
-func (*AddPathsConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{161} }
+func (*AddPathsConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{118} }
func (m *AddPathsConfig) GetReceive() bool {
if m != nil {
@@ -5230,7 +4759,7 @@ type AddPathsState struct {
func (m *AddPathsState) Reset() { *m = AddPathsState{} }
func (m *AddPathsState) String() string { return proto.CompactTextString(m) }
func (*AddPathsState) ProtoMessage() {}
-func (*AddPathsState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{162} }
+func (*AddPathsState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{119} }
func (m *AddPathsState) GetReceive() bool {
if m != nil {
@@ -5254,7 +4783,7 @@ type AddPaths struct {
func (m *AddPaths) Reset() { *m = AddPaths{} }
func (m *AddPaths) String() string { return proto.CompactTextString(m) }
func (*AddPaths) ProtoMessage() {}
-func (*AddPaths) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{163} }
+func (*AddPaths) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{120} }
func (m *AddPaths) GetConfig() *AddPathsConfig {
if m != nil {
@@ -5279,7 +4808,7 @@ type Prefix struct {
func (m *Prefix) Reset() { *m = Prefix{} }
func (m *Prefix) String() string { return proto.CompactTextString(m) }
func (*Prefix) ProtoMessage() {}
-func (*Prefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{164} }
+func (*Prefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{121} }
func (m *Prefix) GetIpPrefix() string {
if m != nil {
@@ -5312,7 +4841,7 @@ type DefinedSet struct {
func (m *DefinedSet) Reset() { *m = DefinedSet{} }
func (m *DefinedSet) String() string { return proto.CompactTextString(m) }
func (*DefinedSet) ProtoMessage() {}
-func (*DefinedSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{165} }
+func (*DefinedSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{122} }
func (m *DefinedSet) GetType() DefinedType {
if m != nil {
@@ -5350,7 +4879,7 @@ type MatchSet struct {
func (m *MatchSet) Reset() { *m = MatchSet{} }
func (m *MatchSet) String() string { return proto.CompactTextString(m) }
func (*MatchSet) ProtoMessage() {}
-func (*MatchSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{166} }
+func (*MatchSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{123} }
func (m *MatchSet) GetType() MatchType {
if m != nil {
@@ -5374,7 +4903,7 @@ type AsPathLength struct {
func (m *AsPathLength) Reset() { *m = AsPathLength{} }
func (m *AsPathLength) String() string { return proto.CompactTextString(m) }
func (*AsPathLength) ProtoMessage() {}
-func (*AsPathLength) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{167} }
+func (*AsPathLength) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{124} }
func (m *AsPathLength) GetType() AsPathLengthType {
if m != nil {
@@ -5407,7 +4936,7 @@ type Conditions struct {
func (m *Conditions) Reset() { *m = Conditions{} }
func (m *Conditions) String() string { return proto.CompactTextString(m) }
func (*Conditions) ProtoMessage() {}
-func (*Conditions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{168} }
+func (*Conditions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{125} }
func (m *Conditions) GetPrefixSet() *MatchSet {
if m != nil {
@@ -5494,7 +5023,7 @@ type CommunityAction struct {
func (m *CommunityAction) Reset() { *m = CommunityAction{} }
func (m *CommunityAction) String() string { return proto.CompactTextString(m) }
func (*CommunityAction) ProtoMessage() {}
-func (*CommunityAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{169} }
+func (*CommunityAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{126} }
func (m *CommunityAction) GetType() CommunityActionType {
if m != nil {
@@ -5518,7 +5047,7 @@ type MedAction struct {
func (m *MedAction) Reset() { *m = MedAction{} }
func (m *MedAction) String() string { return proto.CompactTextString(m) }
func (*MedAction) ProtoMessage() {}
-func (*MedAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{170} }
+func (*MedAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{127} }
func (m *MedAction) GetType() MedActionType {
if m != nil {
@@ -5543,7 +5072,7 @@ type AsPrependAction struct {
func (m *AsPrependAction) Reset() { *m = AsPrependAction{} }
func (m *AsPrependAction) String() string { return proto.CompactTextString(m) }
func (*AsPrependAction) ProtoMessage() {}
-func (*AsPrependAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{171} }
+func (*AsPrependAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{128} }
func (m *AsPrependAction) GetAsn() uint32 {
if m != nil {
@@ -5574,7 +5103,7 @@ type NexthopAction struct {
func (m *NexthopAction) Reset() { *m = NexthopAction{} }
func (m *NexthopAction) String() string { return proto.CompactTextString(m) }
func (*NexthopAction) ProtoMessage() {}
-func (*NexthopAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{172} }
+func (*NexthopAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{129} }
func (m *NexthopAction) GetAddress() string {
if m != nil {
@@ -5597,7 +5126,7 @@ type LocalPrefAction struct {
func (m *LocalPrefAction) Reset() { *m = LocalPrefAction{} }
func (m *LocalPrefAction) String() string { return proto.CompactTextString(m) }
func (*LocalPrefAction) ProtoMessage() {}
-func (*LocalPrefAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{173} }
+func (*LocalPrefAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{130} }
func (m *LocalPrefAction) GetValue() uint32 {
if m != nil {
@@ -5620,7 +5149,7 @@ type Actions struct {
func (m *Actions) Reset() { *m = Actions{} }
func (m *Actions) String() string { return proto.CompactTextString(m) }
func (*Actions) ProtoMessage() {}
-func (*Actions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{174} }
+func (*Actions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{131} }
func (m *Actions) GetRouteAction() RouteAction {
if m != nil {
@@ -5687,7 +5216,7 @@ type Statement struct {
func (m *Statement) Reset() { *m = Statement{} }
func (m *Statement) String() string { return proto.CompactTextString(m) }
func (*Statement) ProtoMessage() {}
-func (*Statement) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{175} }
+func (*Statement) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{132} }
func (m *Statement) GetName() string {
if m != nil {
@@ -5718,7 +5247,7 @@ type Policy struct {
func (m *Policy) Reset() { *m = Policy{} }
func (m *Policy) String() string { return proto.CompactTextString(m) }
func (*Policy) ProtoMessage() {}
-func (*Policy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{176} }
+func (*Policy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{133} }
func (m *Policy) GetName() string {
if m != nil {
@@ -5735,23 +5264,23 @@ func (m *Policy) GetStatements() []*Statement {
}
type PolicyAssignment struct {
- Type PolicyType `protobuf:"varint,1,opt,name=type,enum=gobgpapi.PolicyType" json:"type,omitempty"`
- Resource Resource `protobuf:"varint,2,opt,name=resource,enum=gobgpapi.Resource" json:"resource,omitempty"`
- Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
- Policies []*Policy `protobuf:"bytes,4,rep,name=policies" json:"policies,omitempty"`
- Default RouteAction `protobuf:"varint,5,opt,name=default,enum=gobgpapi.RouteAction" json:"default,omitempty"`
+ Type PolicyDirection `protobuf:"varint,1,opt,name=type,enum=gobgpapi.PolicyDirection" json:"type,omitempty"`
+ Resource Resource `protobuf:"varint,2,opt,name=resource,enum=gobgpapi.Resource" json:"resource,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
+ Policies []*Policy `protobuf:"bytes,4,rep,name=policies" json:"policies,omitempty"`
+ Default RouteAction `protobuf:"varint,5,opt,name=default,enum=gobgpapi.RouteAction" json:"default,omitempty"`
}
func (m *PolicyAssignment) Reset() { *m = PolicyAssignment{} }
func (m *PolicyAssignment) String() string { return proto.CompactTextString(m) }
func (*PolicyAssignment) ProtoMessage() {}
-func (*PolicyAssignment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{177} }
+func (*PolicyAssignment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{134} }
-func (m *PolicyAssignment) GetType() PolicyType {
+func (m *PolicyAssignment) GetType() PolicyDirection {
if m != nil {
return m.Type
}
- return PolicyType_IN
+ return PolicyDirection_UNKNOWN
}
func (m *PolicyAssignment) GetResource() Resource {
@@ -5790,7 +5319,7 @@ type RoutingPolicy struct {
func (m *RoutingPolicy) Reset() { *m = RoutingPolicy{} }
func (m *RoutingPolicy) String() string { return proto.CompactTextString(m) }
func (*RoutingPolicy) ProtoMessage() {}
-func (*RoutingPolicy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{178} }
+func (*RoutingPolicy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{135} }
func (m *RoutingPolicy) GetDefinedSet() []*DefinedSet {
if m != nil {
@@ -5817,7 +5346,7 @@ type Roa struct {
func (m *Roa) Reset() { *m = Roa{} }
func (m *Roa) String() string { return proto.CompactTextString(m) }
func (*Roa) ProtoMessage() {}
-func (*Roa) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{179} }
+func (*Roa) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{136} }
func (m *Roa) GetAs() uint32 {
if m != nil {
@@ -5854,38 +5383,6 @@ func (m *Roa) GetConf() *RPKIConf {
return nil
}
-type GetRoaRequest struct {
- Family uint32 `protobuf:"varint,1,opt,name=family" json:"family,omitempty"`
-}
-
-func (m *GetRoaRequest) Reset() { *m = GetRoaRequest{} }
-func (m *GetRoaRequest) String() string { return proto.CompactTextString(m) }
-func (*GetRoaRequest) ProtoMessage() {}
-func (*GetRoaRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{180} }
-
-func (m *GetRoaRequest) GetFamily() uint32 {
- if m != nil {
- return m.Family
- }
- return 0
-}
-
-type GetRoaResponse struct {
- Roas []*Roa `protobuf:"bytes,1,rep,name=roas" json:"roas,omitempty"`
-}
-
-func (m *GetRoaResponse) Reset() { *m = GetRoaResponse{} }
-func (m *GetRoaResponse) String() string { return proto.CompactTextString(m) }
-func (*GetRoaResponse) ProtoMessage() {}
-func (*GetRoaResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{181} }
-
-func (m *GetRoaResponse) GetRoas() []*Roa {
- if m != nil {
- return m.Roas
- }
- return nil
-}
-
type Vrf struct {
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
// Route Distinguisher must be one of
@@ -5909,7 +5406,7 @@ type Vrf struct {
func (m *Vrf) Reset() { *m = Vrf{} }
func (m *Vrf) String() string { return proto.CompactTextString(m) }
func (*Vrf) ProtoMessage() {}
-func (*Vrf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{182} }
+func (*Vrf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{137} }
func (m *Vrf) GetName() string {
if m != nil {
@@ -5954,7 +5451,7 @@ type DefaultRouteDistance struct {
func (m *DefaultRouteDistance) Reset() { *m = DefaultRouteDistance{} }
func (m *DefaultRouteDistance) String() string { return proto.CompactTextString(m) }
func (*DefaultRouteDistance) ProtoMessage() {}
-func (*DefaultRouteDistance) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{183} }
+func (*DefaultRouteDistance) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{138} }
func (m *DefaultRouteDistance) GetExternalRouteDistance() uint32 {
if m != nil {
@@ -5987,7 +5484,7 @@ type Global struct {
func (m *Global) Reset() { *m = Global{} }
func (m *Global) String() string { return proto.CompactTextString(m) }
func (*Global) ProtoMessage() {}
-func (*Global) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{184} }
+func (*Global) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{139} }
func (m *Global) GetAs() uint32 {
if m != nil {
@@ -6075,7 +5572,7 @@ type Confederation struct {
func (m *Confederation) Reset() { *m = Confederation{} }
func (m *Confederation) String() string { return proto.CompactTextString(m) }
func (*Confederation) ProtoMessage() {}
-func (*Confederation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{185} }
+func (*Confederation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{140} }
func (m *Confederation) GetEnabled() bool {
if m != nil {
@@ -6098,268 +5595,273 @@ func (m *Confederation) GetMemberAsList() []uint32 {
return nil
}
-type TableInfo struct {
- Type Resource `protobuf:"varint,1,opt,name=type,enum=gobgpapi.Resource" json:"type,omitempty"`
- Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
- Family uint32 `protobuf:"varint,3,opt,name=family" json:"family,omitempty"`
- NumDestination uint64 `protobuf:"varint,4,opt,name=num_destination,json=numDestination" json:"num_destination,omitempty"`
- NumPath uint64 `protobuf:"varint,5,opt,name=num_path,json=numPath" json:"num_path,omitempty"`
- NumAccepted uint64 `protobuf:"varint,6,opt,name=num_accepted,json=numAccepted" json:"num_accepted,omitempty"`
+type RPKIConf struct {
+ Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
+ RemotePort uint32 `protobuf:"varint,2,opt,name=remote_port,json=remotePort" json:"remote_port,omitempty"`
}
-func (m *TableInfo) Reset() { *m = TableInfo{} }
-func (m *TableInfo) String() string { return proto.CompactTextString(m) }
-func (*TableInfo) ProtoMessage() {}
-func (*TableInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{186} }
+func (m *RPKIConf) Reset() { *m = RPKIConf{} }
+func (m *RPKIConf) String() string { return proto.CompactTextString(m) }
+func (*RPKIConf) ProtoMessage() {}
+func (*RPKIConf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{141} }
-func (m *TableInfo) GetType() Resource {
+func (m *RPKIConf) GetAddress() string {
if m != nil {
- return m.Type
+ return m.Address
}
- return Resource_GLOBAL
+ return ""
}
-func (m *TableInfo) GetName() string {
+func (m *RPKIConf) GetRemotePort() uint32 {
if m != nil {
- return m.Name
+ return m.RemotePort
}
- return ""
+ return 0
+}
+
+type RPKIState struct {
+ Uptime int64 `protobuf:"varint,1,opt,name=uptime" json:"uptime,omitempty"`
+ Downtime int64 `protobuf:"varint,2,opt,name=downtime" json:"downtime,omitempty"`
+ Up bool `protobuf:"varint,3,opt,name=up" json:"up,omitempty"`
+ RecordIpv4 uint32 `protobuf:"varint,4,opt,name=record_ipv4,json=recordIpv4" json:"record_ipv4,omitempty"`
+ RecordIpv6 uint32 `protobuf:"varint,5,opt,name=record_ipv6,json=recordIpv6" json:"record_ipv6,omitempty"`
+ PrefixIpv4 uint32 `protobuf:"varint,6,opt,name=prefix_ipv4,json=prefixIpv4" json:"prefix_ipv4,omitempty"`
+ PrefixIpv6 uint32 `protobuf:"varint,7,opt,name=prefix_ipv6,json=prefixIpv6" json:"prefix_ipv6,omitempty"`
+ Serial uint32 `protobuf:"varint,8,opt,name=serial" json:"serial,omitempty"`
+ ReceivedIpv4 int64 `protobuf:"varint,9,opt,name=received_ipv4,json=receivedIpv4" json:"received_ipv4,omitempty"`
+ ReceivedIpv6 int64 `protobuf:"varint,10,opt,name=received_ipv6,json=receivedIpv6" json:"received_ipv6,omitempty"`
+ SerialNotify int64 `protobuf:"varint,11,opt,name=serial_notify,json=serialNotify" json:"serial_notify,omitempty"`
+ CacheReset int64 `protobuf:"varint,12,opt,name=cache_reset,json=cacheReset" json:"cache_reset,omitempty"`
+ CacheResponse int64 `protobuf:"varint,13,opt,name=cache_response,json=cacheResponse" json:"cache_response,omitempty"`
+ EndOfData int64 `protobuf:"varint,14,opt,name=end_of_data,json=endOfData" json:"end_of_data,omitempty"`
+ Error int64 `protobuf:"varint,15,opt,name=error" json:"error,omitempty"`
+ SerialQuery int64 `protobuf:"varint,16,opt,name=serial_query,json=serialQuery" json:"serial_query,omitempty"`
+ ResetQuery int64 `protobuf:"varint,17,opt,name=reset_query,json=resetQuery" json:"reset_query,omitempty"`
}
-func (m *TableInfo) GetFamily() uint32 {
+func (m *RPKIState) Reset() { *m = RPKIState{} }
+func (m *RPKIState) String() string { return proto.CompactTextString(m) }
+func (*RPKIState) ProtoMessage() {}
+func (*RPKIState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{142} }
+
+func (m *RPKIState) GetUptime() int64 {
if m != nil {
- return m.Family
+ return m.Uptime
}
return 0
}
-func (m *TableInfo) GetNumDestination() uint64 {
+func (m *RPKIState) GetDowntime() int64 {
if m != nil {
- return m.NumDestination
+ return m.Downtime
}
return 0
}
-func (m *TableInfo) GetNumPath() uint64 {
+func (m *RPKIState) GetUp() bool {
if m != nil {
- return m.NumPath
+ return m.Up
}
- return 0
+ return false
}
-func (m *TableInfo) GetNumAccepted() uint64 {
+func (m *RPKIState) GetRecordIpv4() uint32 {
if m != nil {
- return m.NumAccepted
+ return m.RecordIpv4
}
return 0
}
-type GetRibInfoRequest struct {
- Info *TableInfo `protobuf:"bytes,1,opt,name=info" json:"info,omitempty"`
+func (m *RPKIState) GetRecordIpv6() uint32 {
+ if m != nil {
+ return m.RecordIpv6
+ }
+ return 0
}
-func (m *GetRibInfoRequest) Reset() { *m = GetRibInfoRequest{} }
-func (m *GetRibInfoRequest) String() string { return proto.CompactTextString(m) }
-func (*GetRibInfoRequest) ProtoMessage() {}
-func (*GetRibInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{187} }
+func (m *RPKIState) GetPrefixIpv4() uint32 {
+ if m != nil {
+ return m.PrefixIpv4
+ }
+ return 0
+}
-func (m *GetRibInfoRequest) GetInfo() *TableInfo {
+func (m *RPKIState) GetPrefixIpv6() uint32 {
if m != nil {
- return m.Info
+ return m.PrefixIpv6
}
- return nil
+ return 0
}
-type GetRibInfoResponse struct {
- Info *TableInfo `protobuf:"bytes,1,opt,name=info" json:"info,omitempty"`
+func (m *RPKIState) GetSerial() uint32 {
+ if m != nil {
+ return m.Serial
+ }
+ return 0
}
-func (m *GetRibInfoResponse) Reset() { *m = GetRibInfoResponse{} }
-func (m *GetRibInfoResponse) String() string { return proto.CompactTextString(m) }
-func (*GetRibInfoResponse) ProtoMessage() {}
-func (*GetRibInfoResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{188} }
+func (m *RPKIState) GetReceivedIpv4() int64 {
+ if m != nil {
+ return m.ReceivedIpv4
+ }
+ return 0
+}
-func (m *GetRibInfoResponse) GetInfo() *TableInfo {
+func (m *RPKIState) GetReceivedIpv6() int64 {
if m != nil {
- return m.Info
+ return m.ReceivedIpv6
}
- return nil
+ return 0
}
-type AddCollectorRequest struct {
- Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
- DbName string `protobuf:"bytes,2,opt,name=db_name,json=dbName" json:"db_name,omitempty"`
- TableDumpInterval uint64 `protobuf:"varint,3,opt,name=table_dump_interval,json=tableDumpInterval" json:"table_dump_interval,omitempty"`
+func (m *RPKIState) GetSerialNotify() int64 {
+ if m != nil {
+ return m.SerialNotify
+ }
+ return 0
}
-func (m *AddCollectorRequest) Reset() { *m = AddCollectorRequest{} }
-func (m *AddCollectorRequest) String() string { return proto.CompactTextString(m) }
-func (*AddCollectorRequest) ProtoMessage() {}
-func (*AddCollectorRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{189} }
+func (m *RPKIState) GetCacheReset() int64 {
+ if m != nil {
+ return m.CacheReset
+ }
+ return 0
+}
-func (m *AddCollectorRequest) GetUrl() string {
+func (m *RPKIState) GetCacheResponse() int64 {
if m != nil {
- return m.Url
+ return m.CacheResponse
}
- return ""
+ return 0
}
-func (m *AddCollectorRequest) GetDbName() string {
+func (m *RPKIState) GetEndOfData() int64 {
if m != nil {
- return m.DbName
+ return m.EndOfData
}
- return ""
+ return 0
}
-func (m *AddCollectorRequest) GetTableDumpInterval() uint64 {
+func (m *RPKIState) GetError() int64 {
if m != nil {
- return m.TableDumpInterval
+ return m.Error
}
return 0
}
-type AddCollectorResponse struct {
+func (m *RPKIState) GetSerialQuery() int64 {
+ if m != nil {
+ return m.SerialQuery
+ }
+ return 0
}
-func (m *AddCollectorResponse) Reset() { *m = AddCollectorResponse{} }
-func (m *AddCollectorResponse) String() string { return proto.CompactTextString(m) }
-func (*AddCollectorResponse) ProtoMessage() {}
-func (*AddCollectorResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{190} }
+func (m *RPKIState) GetResetQuery() int64 {
+ if m != nil {
+ return m.ResetQuery
+ }
+ return 0
+}
-type ShutdownRequest struct {
+type Rpki struct {
+ Conf *RPKIConf `protobuf:"bytes,1,opt,name=conf" json:"conf,omitempty"`
+ State *RPKIState `protobuf:"bytes,2,opt,name=state" json:"state,omitempty"`
}
-func (m *ShutdownRequest) Reset() { *m = ShutdownRequest{} }
-func (m *ShutdownRequest) String() string { return proto.CompactTextString(m) }
-func (*ShutdownRequest) ProtoMessage() {}
-func (*ShutdownRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{191} }
+func (m *Rpki) Reset() { *m = Rpki{} }
+func (m *Rpki) String() string { return proto.CompactTextString(m) }
+func (*Rpki) ProtoMessage() {}
+func (*Rpki) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{143} }
-type ShutdownResponse struct {
+func (m *Rpki) GetConf() *RPKIConf {
+ if m != nil {
+ return m.Conf
+ }
+ return nil
}
-func (m *ShutdownResponse) Reset() { *m = ShutdownResponse{} }
-func (m *ShutdownResponse) String() string { return proto.CompactTextString(m) }
-func (*ShutdownResponse) ProtoMessage() {}
-func (*ShutdownResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{192} }
+func (m *Rpki) GetState() *RPKIState {
+ if m != nil {
+ return m.State
+ }
+ return nil
+}
func init() {
- proto.RegisterType((*GetNeighborRequest)(nil), "gobgpapi.GetNeighborRequest")
- proto.RegisterType((*GetNeighborResponse)(nil), "gobgpapi.GetNeighborResponse")
- proto.RegisterType((*Arguments)(nil), "gobgpapi.Arguments")
- proto.RegisterType((*AddPathRequest)(nil), "gobgpapi.AddPathRequest")
- proto.RegisterType((*AddPathResponse)(nil), "gobgpapi.AddPathResponse")
- proto.RegisterType((*DeletePathRequest)(nil), "gobgpapi.DeletePathRequest")
- proto.RegisterType((*DeletePathResponse)(nil), "gobgpapi.DeletePathResponse")
- proto.RegisterType((*AddNeighborRequest)(nil), "gobgpapi.AddNeighborRequest")
- proto.RegisterType((*AddNeighborResponse)(nil), "gobgpapi.AddNeighborResponse")
- proto.RegisterType((*DeleteNeighborRequest)(nil), "gobgpapi.DeleteNeighborRequest")
- proto.RegisterType((*DeleteNeighborResponse)(nil), "gobgpapi.DeleteNeighborResponse")
- proto.RegisterType((*UpdateNeighborRequest)(nil), "gobgpapi.UpdateNeighborRequest")
- proto.RegisterType((*UpdateNeighborResponse)(nil), "gobgpapi.UpdateNeighborResponse")
+ proto.RegisterType((*StartBgpRequest)(nil), "gobgpapi.StartBgpRequest")
+ proto.RegisterType((*StopBgpRequest)(nil), "gobgpapi.StopBgpRequest")
+ proto.RegisterType((*GetBgpRequest)(nil), "gobgpapi.GetBgpRequest")
+ proto.RegisterType((*GetBgpResponse)(nil), "gobgpapi.GetBgpResponse")
+ proto.RegisterType((*AddPeerRequest)(nil), "gobgpapi.AddPeerRequest")
+ proto.RegisterType((*DeletePeerRequest)(nil), "gobgpapi.DeletePeerRequest")
+ proto.RegisterType((*ListPeerRequest)(nil), "gobgpapi.ListPeerRequest")
+ proto.RegisterType((*ListPeerResponse)(nil), "gobgpapi.ListPeerResponse")
+ proto.RegisterType((*UpdatePeerRequest)(nil), "gobgpapi.UpdatePeerRequest")
+ proto.RegisterType((*UpdatePeerResponse)(nil), "gobgpapi.UpdatePeerResponse")
+ proto.RegisterType((*ResetPeerRequest)(nil), "gobgpapi.ResetPeerRequest")
+ proto.RegisterType((*ShutdownPeerRequest)(nil), "gobgpapi.ShutdownPeerRequest")
+ proto.RegisterType((*EnablePeerRequest)(nil), "gobgpapi.EnablePeerRequest")
+ proto.RegisterType((*DisablePeerRequest)(nil), "gobgpapi.DisablePeerRequest")
+ proto.RegisterType((*MonitorPeerRequest)(nil), "gobgpapi.MonitorPeerRequest")
+ proto.RegisterType((*MonitorPeerResponse)(nil), "gobgpapi.MonitorPeerResponse")
proto.RegisterType((*AddPeerGroupRequest)(nil), "gobgpapi.AddPeerGroupRequest")
- proto.RegisterType((*AddPeerGroupResponse)(nil), "gobgpapi.AddPeerGroupResponse")
proto.RegisterType((*DeletePeerGroupRequest)(nil), "gobgpapi.DeletePeerGroupRequest")
- proto.RegisterType((*DeletePeerGroupResponse)(nil), "gobgpapi.DeletePeerGroupResponse")
proto.RegisterType((*UpdatePeerGroupRequest)(nil), "gobgpapi.UpdatePeerGroupRequest")
proto.RegisterType((*UpdatePeerGroupResponse)(nil), "gobgpapi.UpdatePeerGroupResponse")
proto.RegisterType((*AddDynamicNeighborRequest)(nil), "gobgpapi.AddDynamicNeighborRequest")
- proto.RegisterType((*AddDynamicNeighborResponse)(nil), "gobgpapi.AddDynamicNeighborResponse")
- proto.RegisterType((*ResetNeighborRequest)(nil), "gobgpapi.ResetNeighborRequest")
- proto.RegisterType((*ResetNeighborResponse)(nil), "gobgpapi.ResetNeighborResponse")
- proto.RegisterType((*SoftResetNeighborRequest)(nil), "gobgpapi.SoftResetNeighborRequest")
- proto.RegisterType((*SoftResetNeighborResponse)(nil), "gobgpapi.SoftResetNeighborResponse")
- proto.RegisterType((*ShutdownNeighborRequest)(nil), "gobgpapi.ShutdownNeighborRequest")
- proto.RegisterType((*ShutdownNeighborResponse)(nil), "gobgpapi.ShutdownNeighborResponse")
- proto.RegisterType((*EnableNeighborRequest)(nil), "gobgpapi.EnableNeighborRequest")
- proto.RegisterType((*EnableNeighborResponse)(nil), "gobgpapi.EnableNeighborResponse")
- proto.RegisterType((*DisableNeighborRequest)(nil), "gobgpapi.DisableNeighborRequest")
- proto.RegisterType((*DisableNeighborResponse)(nil), "gobgpapi.DisableNeighborResponse")
- proto.RegisterType((*UpdatePolicyRequest)(nil), "gobgpapi.UpdatePolicyRequest")
- proto.RegisterType((*UpdatePolicyResponse)(nil), "gobgpapi.UpdatePolicyResponse")
- proto.RegisterType((*EnableMrtRequest)(nil), "gobgpapi.EnableMrtRequest")
- proto.RegisterType((*EnableMrtResponse)(nil), "gobgpapi.EnableMrtResponse")
- proto.RegisterType((*DisableMrtRequest)(nil), "gobgpapi.DisableMrtRequest")
- proto.RegisterType((*DisableMrtResponse)(nil), "gobgpapi.DisableMrtResponse")
- proto.RegisterType((*InjectMrtRequest)(nil), "gobgpapi.InjectMrtRequest")
- proto.RegisterType((*InjectMrtResponse)(nil), "gobgpapi.InjectMrtResponse")
- proto.RegisterType((*AddBmpRequest)(nil), "gobgpapi.AddBmpRequest")
- proto.RegisterType((*AddBmpResponse)(nil), "gobgpapi.AddBmpResponse")
- proto.RegisterType((*DeleteBmpRequest)(nil), "gobgpapi.DeleteBmpRequest")
- proto.RegisterType((*DeleteBmpResponse)(nil), "gobgpapi.DeleteBmpResponse")
- proto.RegisterType((*MonitorRibRequest)(nil), "gobgpapi.MonitorRibRequest")
- proto.RegisterType((*RPKIConf)(nil), "gobgpapi.RPKIConf")
- proto.RegisterType((*RPKIState)(nil), "gobgpapi.RPKIState")
- proto.RegisterType((*Rpki)(nil), "gobgpapi.Rpki")
- proto.RegisterType((*GetRpkiRequest)(nil), "gobgpapi.GetRpkiRequest")
- proto.RegisterType((*GetRpkiResponse)(nil), "gobgpapi.GetRpkiResponse")
- proto.RegisterType((*AddRpkiRequest)(nil), "gobgpapi.AddRpkiRequest")
- proto.RegisterType((*AddRpkiResponse)(nil), "gobgpapi.AddRpkiResponse")
- proto.RegisterType((*DeleteRpkiRequest)(nil), "gobgpapi.DeleteRpkiRequest")
- proto.RegisterType((*DeleteRpkiResponse)(nil), "gobgpapi.DeleteRpkiResponse")
- proto.RegisterType((*EnableRpkiRequest)(nil), "gobgpapi.EnableRpkiRequest")
- proto.RegisterType((*EnableRpkiResponse)(nil), "gobgpapi.EnableRpkiResponse")
- proto.RegisterType((*DisableRpkiRequest)(nil), "gobgpapi.DisableRpkiRequest")
- proto.RegisterType((*DisableRpkiResponse)(nil), "gobgpapi.DisableRpkiResponse")
- proto.RegisterType((*ResetRpkiRequest)(nil), "gobgpapi.ResetRpkiRequest")
- proto.RegisterType((*ResetRpkiResponse)(nil), "gobgpapi.ResetRpkiResponse")
- proto.RegisterType((*SoftResetRpkiRequest)(nil), "gobgpapi.SoftResetRpkiRequest")
- proto.RegisterType((*SoftResetRpkiResponse)(nil), "gobgpapi.SoftResetRpkiResponse")
- proto.RegisterType((*EnableZebraRequest)(nil), "gobgpapi.EnableZebraRequest")
- proto.RegisterType((*EnableZebraResponse)(nil), "gobgpapi.EnableZebraResponse")
- proto.RegisterType((*GetVrfRequest)(nil), "gobgpapi.GetVrfRequest")
- proto.RegisterType((*GetVrfResponse)(nil), "gobgpapi.GetVrfResponse")
+ proto.RegisterType((*AddPathRequest)(nil), "gobgpapi.AddPathRequest")
+ proto.RegisterType((*AddPathResponse)(nil), "gobgpapi.AddPathResponse")
+ proto.RegisterType((*DeletePathRequest)(nil), "gobgpapi.DeletePathRequest")
+ proto.RegisterType((*ListPathRequest)(nil), "gobgpapi.ListPathRequest")
+ proto.RegisterType((*ListPathResponse)(nil), "gobgpapi.ListPathResponse")
+ proto.RegisterType((*AddPathStreamRequest)(nil), "gobgpapi.AddPathStreamRequest")
+ proto.RegisterType((*GetTableRequest)(nil), "gobgpapi.GetTableRequest")
+ proto.RegisterType((*GetTableResponse)(nil), "gobgpapi.GetTableResponse")
+ proto.RegisterType((*MonitorTableRequest)(nil), "gobgpapi.MonitorTableRequest")
+ proto.RegisterType((*MonitorTableResponse)(nil), "gobgpapi.MonitorTableResponse")
proto.RegisterType((*AddVrfRequest)(nil), "gobgpapi.AddVrfRequest")
- proto.RegisterType((*AddVrfResponse)(nil), "gobgpapi.AddVrfResponse")
proto.RegisterType((*DeleteVrfRequest)(nil), "gobgpapi.DeleteVrfRequest")
- proto.RegisterType((*DeleteVrfResponse)(nil), "gobgpapi.DeleteVrfResponse")
- proto.RegisterType((*GetDefinedSetRequest)(nil), "gobgpapi.GetDefinedSetRequest")
- proto.RegisterType((*GetDefinedSetResponse)(nil), "gobgpapi.GetDefinedSetResponse")
+ proto.RegisterType((*ListVrfRequest)(nil), "gobgpapi.ListVrfRequest")
+ proto.RegisterType((*ListVrfResponse)(nil), "gobgpapi.ListVrfResponse")
+ proto.RegisterType((*AddPolicyRequest)(nil), "gobgpapi.AddPolicyRequest")
+ proto.RegisterType((*DeletePolicyRequest)(nil), "gobgpapi.DeletePolicyRequest")
+ proto.RegisterType((*ListPolicyRequest)(nil), "gobgpapi.ListPolicyRequest")
+ proto.RegisterType((*ListPolicyResponse)(nil), "gobgpapi.ListPolicyResponse")
+ proto.RegisterType((*ReplacePolicyRequest)(nil), "gobgpapi.ReplacePolicyRequest")
+ proto.RegisterType((*UpdatePolicyRequest)(nil), "gobgpapi.UpdatePolicyRequest")
proto.RegisterType((*AddDefinedSetRequest)(nil), "gobgpapi.AddDefinedSetRequest")
- proto.RegisterType((*AddDefinedSetResponse)(nil), "gobgpapi.AddDefinedSetResponse")
proto.RegisterType((*DeleteDefinedSetRequest)(nil), "gobgpapi.DeleteDefinedSetRequest")
- proto.RegisterType((*DeleteDefinedSetResponse)(nil), "gobgpapi.DeleteDefinedSetResponse")
+ proto.RegisterType((*ListDefinedSetRequest)(nil), "gobgpapi.ListDefinedSetRequest")
+ proto.RegisterType((*ListDefinedSetResponse)(nil), "gobgpapi.ListDefinedSetResponse")
proto.RegisterType((*ReplaceDefinedSetRequest)(nil), "gobgpapi.ReplaceDefinedSetRequest")
- proto.RegisterType((*ReplaceDefinedSetResponse)(nil), "gobgpapi.ReplaceDefinedSetResponse")
- proto.RegisterType((*GetStatementRequest)(nil), "gobgpapi.GetStatementRequest")
- proto.RegisterType((*GetStatementResponse)(nil), "gobgpapi.GetStatementResponse")
proto.RegisterType((*AddStatementRequest)(nil), "gobgpapi.AddStatementRequest")
- proto.RegisterType((*AddStatementResponse)(nil), "gobgpapi.AddStatementResponse")
proto.RegisterType((*DeleteStatementRequest)(nil), "gobgpapi.DeleteStatementRequest")
- proto.RegisterType((*DeleteStatementResponse)(nil), "gobgpapi.DeleteStatementResponse")
+ proto.RegisterType((*ListStatementRequest)(nil), "gobgpapi.ListStatementRequest")
+ proto.RegisterType((*ListStatementResponse)(nil), "gobgpapi.ListStatementResponse")
proto.RegisterType((*ReplaceStatementRequest)(nil), "gobgpapi.ReplaceStatementRequest")
- proto.RegisterType((*ReplaceStatementResponse)(nil), "gobgpapi.ReplaceStatementResponse")
- proto.RegisterType((*GetPolicyRequest)(nil), "gobgpapi.GetPolicyRequest")
- proto.RegisterType((*GetPolicyResponse)(nil), "gobgpapi.GetPolicyResponse")
- proto.RegisterType((*AddPolicyRequest)(nil), "gobgpapi.AddPolicyRequest")
- proto.RegisterType((*AddPolicyResponse)(nil), "gobgpapi.AddPolicyResponse")
- proto.RegisterType((*DeletePolicyRequest)(nil), "gobgpapi.DeletePolicyRequest")
- proto.RegisterType((*DeletePolicyResponse)(nil), "gobgpapi.DeletePolicyResponse")
- proto.RegisterType((*ReplacePolicyRequest)(nil), "gobgpapi.ReplacePolicyRequest")
- proto.RegisterType((*ReplacePolicyResponse)(nil), "gobgpapi.ReplacePolicyResponse")
- proto.RegisterType((*GetPolicyAssignmentRequest)(nil), "gobgpapi.GetPolicyAssignmentRequest")
- proto.RegisterType((*GetPolicyAssignmentResponse)(nil), "gobgpapi.GetPolicyAssignmentResponse")
proto.RegisterType((*AddPolicyAssignmentRequest)(nil), "gobgpapi.AddPolicyAssignmentRequest")
- proto.RegisterType((*AddPolicyAssignmentResponse)(nil), "gobgpapi.AddPolicyAssignmentResponse")
proto.RegisterType((*DeletePolicyAssignmentRequest)(nil), "gobgpapi.DeletePolicyAssignmentRequest")
- proto.RegisterType((*DeletePolicyAssignmentResponse)(nil), "gobgpapi.DeletePolicyAssignmentResponse")
+ proto.RegisterType((*ListPolicyAssignmentRequest)(nil), "gobgpapi.ListPolicyAssignmentRequest")
+ proto.RegisterType((*ListPolicyAssignmentResponse)(nil), "gobgpapi.ListPolicyAssignmentResponse")
proto.RegisterType((*ReplacePolicyAssignmentRequest)(nil), "gobgpapi.ReplacePolicyAssignmentRequest")
- proto.RegisterType((*ReplacePolicyAssignmentResponse)(nil), "gobgpapi.ReplacePolicyAssignmentResponse")
- proto.RegisterType((*GetServerRequest)(nil), "gobgpapi.GetServerRequest")
- proto.RegisterType((*GetServerResponse)(nil), "gobgpapi.GetServerResponse")
- proto.RegisterType((*StartServerRequest)(nil), "gobgpapi.StartServerRequest")
- proto.RegisterType((*StartServerResponse)(nil), "gobgpapi.StartServerResponse")
- proto.RegisterType((*StopServerRequest)(nil), "gobgpapi.StopServerRequest")
- proto.RegisterType((*StopServerResponse)(nil), "gobgpapi.StopServerResponse")
+ proto.RegisterType((*AddRpkiRequest)(nil), "gobgpapi.AddRpkiRequest")
+ proto.RegisterType((*DeleteRpkiRequest)(nil), "gobgpapi.DeleteRpkiRequest")
+ proto.RegisterType((*ListRpkiRequest)(nil), "gobgpapi.ListRpkiRequest")
+ proto.RegisterType((*ListRpkiResponse)(nil), "gobgpapi.ListRpkiResponse")
+ proto.RegisterType((*EnableRpkiRequest)(nil), "gobgpapi.EnableRpkiRequest")
+ proto.RegisterType((*DisableRpkiRequest)(nil), "gobgpapi.DisableRpkiRequest")
+ proto.RegisterType((*ResetRpkiRequest)(nil), "gobgpapi.ResetRpkiRequest")
+ proto.RegisterType((*ListRpkiTableRequest)(nil), "gobgpapi.ListRpkiTableRequest")
+ proto.RegisterType((*ListRpkiTableResponse)(nil), "gobgpapi.ListRpkiTableResponse")
+ proto.RegisterType((*EnableZebraRequest)(nil), "gobgpapi.EnableZebraRequest")
+ proto.RegisterType((*EnableMrtRequest)(nil), "gobgpapi.EnableMrtRequest")
+ proto.RegisterType((*DisableMrtRequest)(nil), "gobgpapi.DisableMrtRequest")
+ proto.RegisterType((*AddBmpRequest)(nil), "gobgpapi.AddBmpRequest")
+ proto.RegisterType((*DeleteBmpRequest)(nil), "gobgpapi.DeleteBmpRequest")
proto.RegisterType((*RPKIValidation)(nil), "gobgpapi.RPKIValidation")
proto.RegisterType((*Path)(nil), "gobgpapi.Path")
proto.RegisterType((*Destination)(nil), "gobgpapi.Destination")
- proto.RegisterType((*Table)(nil), "gobgpapi.Table")
- proto.RegisterType((*GetRibRequest)(nil), "gobgpapi.GetRibRequest")
- proto.RegisterType((*GetRibResponse)(nil), "gobgpapi.GetRibResponse")
proto.RegisterType((*TableLookupPrefix)(nil), "gobgpapi.TableLookupPrefix")
- proto.RegisterType((*GetPathRequest)(nil), "gobgpapi.GetPathRequest")
- proto.RegisterType((*ValidateRibRequest)(nil), "gobgpapi.ValidateRibRequest")
- proto.RegisterType((*ValidateRibResponse)(nil), "gobgpapi.ValidateRibResponse")
proto.RegisterType((*Peer)(nil), "gobgpapi.Peer")
proto.RegisterType((*PeerGroup)(nil), "gobgpapi.PeerGroup")
proto.RegisterType((*DynamicNeighbor)(nil), "gobgpapi.DynamicNeighbor")
@@ -6423,19 +5925,13 @@ func init() {
proto.RegisterType((*PolicyAssignment)(nil), "gobgpapi.PolicyAssignment")
proto.RegisterType((*RoutingPolicy)(nil), "gobgpapi.RoutingPolicy")
proto.RegisterType((*Roa)(nil), "gobgpapi.Roa")
- proto.RegisterType((*GetRoaRequest)(nil), "gobgpapi.GetRoaRequest")
- proto.RegisterType((*GetRoaResponse)(nil), "gobgpapi.GetRoaResponse")
proto.RegisterType((*Vrf)(nil), "gobgpapi.Vrf")
proto.RegisterType((*DefaultRouteDistance)(nil), "gobgpapi.DefaultRouteDistance")
proto.RegisterType((*Global)(nil), "gobgpapi.Global")
proto.RegisterType((*Confederation)(nil), "gobgpapi.Confederation")
- proto.RegisterType((*TableInfo)(nil), "gobgpapi.TableInfo")
- proto.RegisterType((*GetRibInfoRequest)(nil), "gobgpapi.GetRibInfoRequest")
- proto.RegisterType((*GetRibInfoResponse)(nil), "gobgpapi.GetRibInfoResponse")
- proto.RegisterType((*AddCollectorRequest)(nil), "gobgpapi.AddCollectorRequest")
- proto.RegisterType((*AddCollectorResponse)(nil), "gobgpapi.AddCollectorResponse")
- proto.RegisterType((*ShutdownRequest)(nil), "gobgpapi.ShutdownRequest")
- proto.RegisterType((*ShutdownResponse)(nil), "gobgpapi.ShutdownResponse")
+ proto.RegisterType((*RPKIConf)(nil), "gobgpapi.RPKIConf")
+ proto.RegisterType((*RPKIState)(nil), "gobgpapi.RPKIState")
+ proto.RegisterType((*Rpki)(nil), "gobgpapi.Rpki")
proto.RegisterEnum("gobgpapi.Family", Family_name, Family_value)
proto.RegisterEnum("gobgpapi.Resource", Resource_name, Resource_value)
proto.RegisterEnum("gobgpapi.TableLookupOption", TableLookupOption_name, TableLookupOption_value)
@@ -6445,14 +5941,15 @@ func init() {
proto.RegisterEnum("gobgpapi.RouteAction", RouteAction_name, RouteAction_value)
proto.RegisterEnum("gobgpapi.CommunityActionType", CommunityActionType_name, CommunityActionType_value)
proto.RegisterEnum("gobgpapi.MedActionType", MedActionType_name, MedActionType_value)
- proto.RegisterEnum("gobgpapi.PolicyType", PolicyType_name, PolicyType_value)
- proto.RegisterEnum("gobgpapi.SoftResetNeighborRequest_SoftResetDirection", SoftResetNeighborRequest_SoftResetDirection_name, SoftResetNeighborRequest_SoftResetDirection_value)
+ proto.RegisterEnum("gobgpapi.PolicyDirection", PolicyDirection_name, PolicyDirection_value)
+ proto.RegisterEnum("gobgpapi.ResetPeerRequest_SoftResetDirection", ResetPeerRequest_SoftResetDirection_name, ResetPeerRequest_SoftResetDirection_value)
proto.RegisterEnum("gobgpapi.AddBmpRequest_MonitoringPolicy", AddBmpRequest_MonitoringPolicy_name, AddBmpRequest_MonitoringPolicy_value)
proto.RegisterEnum("gobgpapi.RPKIValidation_State", RPKIValidation_State_name, RPKIValidation_State_value)
proto.RegisterEnum("gobgpapi.RPKIValidation_Reason", RPKIValidation_Reason_name, RPKIValidation_Reason_value)
proto.RegisterEnum("gobgpapi.PeerConf_RemovePrivateAs", PeerConf_RemovePrivateAs_name, PeerConf_RemovePrivateAs_value)
proto.RegisterEnum("gobgpapi.PeerGroupConf_RemovePrivateAs", PeerGroupConf_RemovePrivateAs_name, PeerGroupConf_RemovePrivateAs_value)
proto.RegisterEnum("gobgpapi.PeerGroupState_RemovePrivateAs", PeerGroupState_RemovePrivateAs_name, PeerGroupState_RemovePrivateAs_value)
+ proto.RegisterEnum("gobgpapi.PeerState_SessionState", PeerState_SessionState_name, PeerState_SessionState_value)
proto.RegisterEnum("gobgpapi.PeerState_AdminState", PeerState_AdminState_name, PeerState_AdminState_value)
proto.RegisterEnum("gobgpapi.Conditions_RouteType", Conditions_RouteType_name, Conditions_RouteType_value)
}
@@ -6468,66 +5965,60 @@ const _ = grpc.SupportPackageIsVersion4
// Client API for GobgpApi service
type GobgpApiClient interface {
- StartServer(ctx context.Context, in *StartServerRequest, opts ...grpc.CallOption) (*StartServerResponse, error)
- StopServer(ctx context.Context, in *StopServerRequest, opts ...grpc.CallOption) (*StopServerResponse, error)
- GetServer(ctx context.Context, in *GetServerRequest, opts ...grpc.CallOption) (*GetServerResponse, error)
- AddNeighbor(ctx context.Context, in *AddNeighborRequest, opts ...grpc.CallOption) (*AddNeighborResponse, error)
- DeleteNeighbor(ctx context.Context, in *DeleteNeighborRequest, opts ...grpc.CallOption) (*DeleteNeighborResponse, error)
- UpdateNeighbor(ctx context.Context, in *UpdateNeighborRequest, opts ...grpc.CallOption) (*UpdateNeighborResponse, error)
- GetNeighbor(ctx context.Context, in *GetNeighborRequest, opts ...grpc.CallOption) (*GetNeighborResponse, error)
- ResetNeighbor(ctx context.Context, in *ResetNeighborRequest, opts ...grpc.CallOption) (*ResetNeighborResponse, error)
- SoftResetNeighbor(ctx context.Context, in *SoftResetNeighborRequest, opts ...grpc.CallOption) (*SoftResetNeighborResponse, error)
- ShutdownNeighbor(ctx context.Context, in *ShutdownNeighborRequest, opts ...grpc.CallOption) (*ShutdownNeighborResponse, error)
- EnableNeighbor(ctx context.Context, in *EnableNeighborRequest, opts ...grpc.CallOption) (*EnableNeighborResponse, error)
- DisableNeighbor(ctx context.Context, in *DisableNeighborRequest, opts ...grpc.CallOption) (*DisableNeighborResponse, error)
- GetRib(ctx context.Context, in *GetRibRequest, opts ...grpc.CallOption) (*GetRibResponse, error)
- GetPath(ctx context.Context, in *GetPathRequest, opts ...grpc.CallOption) (GobgpApi_GetPathClient, error)
- ValidateRib(ctx context.Context, in *ValidateRibRequest, opts ...grpc.CallOption) (*ValidateRibResponse, error)
- AddPath(ctx context.Context, in *AddPathRequest, opts ...grpc.CallOption) (*AddPathResponse, error)
- DeletePath(ctx context.Context, in *DeletePathRequest, opts ...grpc.CallOption) (*DeletePathResponse, error)
- MonitorRib(ctx context.Context, in *MonitorRibRequest, opts ...grpc.CallOption) (GobgpApi_MonitorRibClient, error)
- MonitorPeerState(ctx context.Context, in *Arguments, opts ...grpc.CallOption) (GobgpApi_MonitorPeerStateClient, error)
- EnableMrt(ctx context.Context, in *EnableMrtRequest, opts ...grpc.CallOption) (*EnableMrtResponse, error)
- DisableMrt(ctx context.Context, in *DisableMrtRequest, opts ...grpc.CallOption) (*DisableMrtResponse, error)
- InjectMrt(ctx context.Context, opts ...grpc.CallOption) (GobgpApi_InjectMrtClient, error)
- AddBmp(ctx context.Context, in *AddBmpRequest, opts ...grpc.CallOption) (*AddBmpResponse, error)
- DeleteBmp(ctx context.Context, in *DeleteBmpRequest, opts ...grpc.CallOption) (*DeleteBmpResponse, error)
- GetRpki(ctx context.Context, in *GetRpkiRequest, opts ...grpc.CallOption) (*GetRpkiResponse, error)
- AddRpki(ctx context.Context, in *AddRpkiRequest, opts ...grpc.CallOption) (*AddRpkiResponse, error)
- DeleteRpki(ctx context.Context, in *DeleteRpkiRequest, opts ...grpc.CallOption) (*DeleteRpkiResponse, error)
- EnableRpki(ctx context.Context, in *EnableRpkiRequest, opts ...grpc.CallOption) (*EnableRpkiResponse, error)
- DisableRpki(ctx context.Context, in *DisableRpkiRequest, opts ...grpc.CallOption) (*DisableRpkiResponse, error)
- ResetRpki(ctx context.Context, in *ResetRpkiRequest, opts ...grpc.CallOption) (*ResetRpkiResponse, error)
- SoftResetRpki(ctx context.Context, in *SoftResetRpkiRequest, opts ...grpc.CallOption) (*SoftResetRpkiResponse, error)
- GetRoa(ctx context.Context, in *GetRoaRequest, opts ...grpc.CallOption) (*GetRoaResponse, error)
- EnableZebra(ctx context.Context, in *EnableZebraRequest, opts ...grpc.CallOption) (*EnableZebraResponse, error)
- AddVrf(ctx context.Context, in *AddVrfRequest, opts ...grpc.CallOption) (*AddVrfResponse, error)
- DeleteVrf(ctx context.Context, in *DeleteVrfRequest, opts ...grpc.CallOption) (*DeleteVrfResponse, error)
- GetVrf(ctx context.Context, in *GetVrfRequest, opts ...grpc.CallOption) (*GetVrfResponse, error)
- GetDefinedSet(ctx context.Context, in *GetDefinedSetRequest, opts ...grpc.CallOption) (*GetDefinedSetResponse, error)
- AddDefinedSet(ctx context.Context, in *AddDefinedSetRequest, opts ...grpc.CallOption) (*AddDefinedSetResponse, error)
- DeleteDefinedSet(ctx context.Context, in *DeleteDefinedSetRequest, opts ...grpc.CallOption) (*DeleteDefinedSetResponse, error)
- ReplaceDefinedSet(ctx context.Context, in *ReplaceDefinedSetRequest, opts ...grpc.CallOption) (*ReplaceDefinedSetResponse, error)
- GetStatement(ctx context.Context, in *GetStatementRequest, opts ...grpc.CallOption) (*GetStatementResponse, error)
- AddStatement(ctx context.Context, in *AddStatementRequest, opts ...grpc.CallOption) (*AddStatementResponse, error)
- DeleteStatement(ctx context.Context, in *DeleteStatementRequest, opts ...grpc.CallOption) (*DeleteStatementResponse, error)
- ReplaceStatement(ctx context.Context, in *ReplaceStatementRequest, opts ...grpc.CallOption) (*ReplaceStatementResponse, error)
- GetPolicy(ctx context.Context, in *GetPolicyRequest, opts ...grpc.CallOption) (*GetPolicyResponse, error)
- AddPolicy(ctx context.Context, in *AddPolicyRequest, opts ...grpc.CallOption) (*AddPolicyResponse, error)
- DeletePolicy(ctx context.Context, in *DeletePolicyRequest, opts ...grpc.CallOption) (*DeletePolicyResponse, error)
- ReplacePolicy(ctx context.Context, in *ReplacePolicyRequest, opts ...grpc.CallOption) (*ReplacePolicyResponse, error)
- UpdatePolicy(ctx context.Context, in *UpdatePolicyRequest, opts ...grpc.CallOption) (*UpdatePolicyResponse, error)
- GetPolicyAssignment(ctx context.Context, in *GetPolicyAssignmentRequest, opts ...grpc.CallOption) (*GetPolicyAssignmentResponse, error)
- AddPolicyAssignment(ctx context.Context, in *AddPolicyAssignmentRequest, opts ...grpc.CallOption) (*AddPolicyAssignmentResponse, error)
- DeletePolicyAssignment(ctx context.Context, in *DeletePolicyAssignmentRequest, opts ...grpc.CallOption) (*DeletePolicyAssignmentResponse, error)
- ReplacePolicyAssignment(ctx context.Context, in *ReplacePolicyAssignmentRequest, opts ...grpc.CallOption) (*ReplacePolicyAssignmentResponse, error)
- GetRibInfo(ctx context.Context, in *GetRibInfoRequest, opts ...grpc.CallOption) (*GetRibInfoResponse, error)
- AddPeerGroup(ctx context.Context, in *AddPeerGroupRequest, opts ...grpc.CallOption) (*AddPeerGroupResponse, error)
- DeletePeerGroup(ctx context.Context, in *DeletePeerGroupRequest, opts ...grpc.CallOption) (*DeletePeerGroupResponse, error)
+ StartBgp(ctx context.Context, in *StartBgpRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ StopBgp(ctx context.Context, in *StopBgpRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ GetBgp(ctx context.Context, in *GetBgpRequest, opts ...grpc.CallOption) (*GetBgpResponse, error)
+ AddPeer(ctx context.Context, in *AddPeerRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ DeletePeer(ctx context.Context, in *DeletePeerRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ ListPeer(ctx context.Context, in *ListPeerRequest, opts ...grpc.CallOption) (GobgpApi_ListPeerClient, error)
+ UpdatePeer(ctx context.Context, in *UpdatePeerRequest, opts ...grpc.CallOption) (*UpdatePeerResponse, error)
+ ResetPeer(ctx context.Context, in *ResetPeerRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ ShutdownPeer(ctx context.Context, in *ShutdownPeerRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ EnablePeer(ctx context.Context, in *EnablePeerRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ DisablePeer(ctx context.Context, in *DisablePeerRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ MonitorPeer(ctx context.Context, in *MonitorPeerRequest, opts ...grpc.CallOption) (GobgpApi_MonitorPeerClient, error)
+ AddPeerGroup(ctx context.Context, in *AddPeerGroupRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ DeletePeerGroup(ctx context.Context, in *DeletePeerGroupRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
UpdatePeerGroup(ctx context.Context, in *UpdatePeerGroupRequest, opts ...grpc.CallOption) (*UpdatePeerGroupResponse, error)
- AddDynamicNeighbor(ctx context.Context, in *AddDynamicNeighborRequest, opts ...grpc.CallOption) (*AddDynamicNeighborResponse, error)
- AddCollector(ctx context.Context, in *AddCollectorRequest, opts ...grpc.CallOption) (*AddCollectorResponse, error)
- Shutdown(ctx context.Context, in *ShutdownRequest, opts ...grpc.CallOption) (*ShutdownResponse, error)
+ AddDynamicNeighbor(ctx context.Context, in *AddDynamicNeighborRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ AddPath(ctx context.Context, in *AddPathRequest, opts ...grpc.CallOption) (*AddPathResponse, error)
+ DeletePath(ctx context.Context, in *DeletePathRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ ListPath(ctx context.Context, in *ListPathRequest, opts ...grpc.CallOption) (GobgpApi_ListPathClient, error)
+ AddPathStream(ctx context.Context, opts ...grpc.CallOption) (GobgpApi_AddPathStreamClient, error)
+ GetTable(ctx context.Context, in *GetTableRequest, opts ...grpc.CallOption) (*GetTableResponse, error)
+ MonitorTable(ctx context.Context, in *MonitorTableRequest, opts ...grpc.CallOption) (GobgpApi_MonitorTableClient, error)
+ AddVrf(ctx context.Context, in *AddVrfRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ DeleteVrf(ctx context.Context, in *DeleteVrfRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ ListVrf(ctx context.Context, in *ListVrfRequest, opts ...grpc.CallOption) (GobgpApi_ListVrfClient, error)
+ AddPolicy(ctx context.Context, in *AddPolicyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ DeletePolicy(ctx context.Context, in *DeletePolicyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ ListPolicy(ctx context.Context, in *ListPolicyRequest, opts ...grpc.CallOption) (GobgpApi_ListPolicyClient, error)
+ ReplacePolicy(ctx context.Context, in *ReplacePolicyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ UpdatePolicy(ctx context.Context, in *UpdatePolicyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ AddDefinedSet(ctx context.Context, in *AddDefinedSetRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ DeleteDefinedSet(ctx context.Context, in *DeleteDefinedSetRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ ListDefinedSet(ctx context.Context, in *ListDefinedSetRequest, opts ...grpc.CallOption) (GobgpApi_ListDefinedSetClient, error)
+ ReplaceDefinedSet(ctx context.Context, in *ReplaceDefinedSetRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ AddStatement(ctx context.Context, in *AddStatementRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ DeleteStatement(ctx context.Context, in *DeleteStatementRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ ListStatement(ctx context.Context, in *ListStatementRequest, opts ...grpc.CallOption) (GobgpApi_ListStatementClient, error)
+ ReplaceStatement(ctx context.Context, in *ReplaceStatementRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ AddPolicyAssignment(ctx context.Context, in *AddPolicyAssignmentRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ DeletePolicyAssignment(ctx context.Context, in *DeletePolicyAssignmentRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ ListPolicyAssignment(ctx context.Context, in *ListPolicyAssignmentRequest, opts ...grpc.CallOption) (GobgpApi_ListPolicyAssignmentClient, error)
+ ReplacePolicyAssignment(ctx context.Context, in *ReplacePolicyAssignmentRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ AddRpki(ctx context.Context, in *AddRpkiRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ DeleteRpki(ctx context.Context, in *DeleteRpkiRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ ListRpki(ctx context.Context, in *ListRpkiRequest, opts ...grpc.CallOption) (GobgpApi_ListRpkiClient, error)
+ EnableRpki(ctx context.Context, in *EnableRpkiRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ DisableRpki(ctx context.Context, in *DisableRpkiRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ ResetRpki(ctx context.Context, in *ResetRpkiRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ ListRpkiTable(ctx context.Context, in *ListRpkiTableRequest, opts ...grpc.CallOption) (GobgpApi_ListRpkiTableClient, error)
+ EnableZebra(ctx context.Context, in *EnableZebraRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ EnableMrt(ctx context.Context, in *EnableMrtRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ DisableMrt(ctx context.Context, in *DisableMrtRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ AddBmp(ctx context.Context, in *AddBmpRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+ DeleteBmp(ctx context.Context, in *DeleteBmpRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
}
type gobgpApiClient struct {
@@ -6538,129 +6029,134 @@ func NewGobgpApiClient(cc *grpc.ClientConn) GobgpApiClient {
return &gobgpApiClient{cc}
}
-func (c *gobgpApiClient) StartServer(ctx context.Context, in *StartServerRequest, opts ...grpc.CallOption) (*StartServerResponse, error) {
- out := new(StartServerResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/StartServer", in, out, c.cc, opts...)
+func (c *gobgpApiClient) StartBgp(ctx context.Context, in *StartBgpRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/StartBgp", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) StopServer(ctx context.Context, in *StopServerRequest, opts ...grpc.CallOption) (*StopServerResponse, error) {
- out := new(StopServerResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/StopServer", in, out, c.cc, opts...)
+func (c *gobgpApiClient) StopBgp(ctx context.Context, in *StopBgpRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/StopBgp", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) GetServer(ctx context.Context, in *GetServerRequest, opts ...grpc.CallOption) (*GetServerResponse, error) {
- out := new(GetServerResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/GetServer", in, out, c.cc, opts...)
+func (c *gobgpApiClient) GetBgp(ctx context.Context, in *GetBgpRequest, opts ...grpc.CallOption) (*GetBgpResponse, error) {
+ out := new(GetBgpResponse)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/GetBgp", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) AddNeighbor(ctx context.Context, in *AddNeighborRequest, opts ...grpc.CallOption) (*AddNeighborResponse, error) {
- out := new(AddNeighborResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddNeighbor", in, out, c.cc, opts...)
+func (c *gobgpApiClient) AddPeer(ctx context.Context, in *AddPeerRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddPeer", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) DeleteNeighbor(ctx context.Context, in *DeleteNeighborRequest, opts ...grpc.CallOption) (*DeleteNeighborResponse, error) {
- out := new(DeleteNeighborResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeleteNeighbor", in, out, c.cc, opts...)
+func (c *gobgpApiClient) DeletePeer(ctx context.Context, in *DeletePeerRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeletePeer", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) UpdateNeighbor(ctx context.Context, in *UpdateNeighborRequest, opts ...grpc.CallOption) (*UpdateNeighborResponse, error) {
- out := new(UpdateNeighborResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/UpdateNeighbor", in, out, c.cc, opts...)
+func (c *gobgpApiClient) ListPeer(ctx context.Context, in *ListPeerRequest, opts ...grpc.CallOption) (GobgpApi_ListPeerClient, error) {
+ stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[0], c.cc, "/gobgpapi.GobgpApi/ListPeer", opts...)
if err != nil {
return nil, err
}
- return out, nil
-}
-
-func (c *gobgpApiClient) GetNeighbor(ctx context.Context, in *GetNeighborRequest, opts ...grpc.CallOption) (*GetNeighborResponse, error) {
- out := new(GetNeighborResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/GetNeighbor", in, out, c.cc, opts...)
- if err != nil {
+ x := &gobgpApiListPeerClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
return nil, err
}
- return out, nil
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
}
-func (c *gobgpApiClient) ResetNeighbor(ctx context.Context, in *ResetNeighborRequest, opts ...grpc.CallOption) (*ResetNeighborResponse, error) {
- out := new(ResetNeighborResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/ResetNeighbor", in, out, c.cc, opts...)
- if err != nil {
+type GobgpApi_ListPeerClient interface {
+ Recv() (*ListPeerResponse, error)
+ grpc.ClientStream
+}
+
+type gobgpApiListPeerClient struct {
+ grpc.ClientStream
+}
+
+func (x *gobgpApiListPeerClient) Recv() (*ListPeerResponse, error) {
+ m := new(ListPeerResponse)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
- return out, nil
+ return m, nil
}
-func (c *gobgpApiClient) SoftResetNeighbor(ctx context.Context, in *SoftResetNeighborRequest, opts ...grpc.CallOption) (*SoftResetNeighborResponse, error) {
- out := new(SoftResetNeighborResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/SoftResetNeighbor", in, out, c.cc, opts...)
+func (c *gobgpApiClient) UpdatePeer(ctx context.Context, in *UpdatePeerRequest, opts ...grpc.CallOption) (*UpdatePeerResponse, error) {
+ out := new(UpdatePeerResponse)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/UpdatePeer", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) ShutdownNeighbor(ctx context.Context, in *ShutdownNeighborRequest, opts ...grpc.CallOption) (*ShutdownNeighborResponse, error) {
- out := new(ShutdownNeighborResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/ShutdownNeighbor", in, out, c.cc, opts...)
+func (c *gobgpApiClient) ResetPeer(ctx context.Context, in *ResetPeerRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/ResetPeer", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) EnableNeighbor(ctx context.Context, in *EnableNeighborRequest, opts ...grpc.CallOption) (*EnableNeighborResponse, error) {
- out := new(EnableNeighborResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/EnableNeighbor", in, out, c.cc, opts...)
+func (c *gobgpApiClient) ShutdownPeer(ctx context.Context, in *ShutdownPeerRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/ShutdownPeer", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) DisableNeighbor(ctx context.Context, in *DisableNeighborRequest, opts ...grpc.CallOption) (*DisableNeighborResponse, error) {
- out := new(DisableNeighborResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DisableNeighbor", in, out, c.cc, opts...)
+func (c *gobgpApiClient) EnablePeer(ctx context.Context, in *EnablePeerRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/EnablePeer", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) GetRib(ctx context.Context, in *GetRibRequest, opts ...grpc.CallOption) (*GetRibResponse, error) {
- out := new(GetRibResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/GetRib", in, out, c.cc, opts...)
+func (c *gobgpApiClient) DisablePeer(ctx context.Context, in *DisablePeerRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DisablePeer", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) GetPath(ctx context.Context, in *GetPathRequest, opts ...grpc.CallOption) (GobgpApi_GetPathClient, error) {
- stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[0], c.cc, "/gobgpapi.GobgpApi/GetPath", opts...)
+func (c *gobgpApiClient) MonitorPeer(ctx context.Context, in *MonitorPeerRequest, opts ...grpc.CallOption) (GobgpApi_MonitorPeerClient, error) {
+ stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[1], c.cc, "/gobgpapi.GobgpApi/MonitorPeer", opts...)
if err != nil {
return nil, err
}
- x := &gobgpApiGetPathClient{stream}
+ x := &gobgpApiMonitorPeerClient{stream}
if err := x.ClientStream.SendMsg(in); err != nil {
return nil, err
}
@@ -6670,26 +6166,53 @@ func (c *gobgpApiClient) GetPath(ctx context.Context, in *GetPathRequest, opts .
return x, nil
}
-type GobgpApi_GetPathClient interface {
- Recv() (*Path, error)
+type GobgpApi_MonitorPeerClient interface {
+ Recv() (*MonitorPeerResponse, error)
grpc.ClientStream
}
-type gobgpApiGetPathClient struct {
+type gobgpApiMonitorPeerClient struct {
grpc.ClientStream
}
-func (x *gobgpApiGetPathClient) Recv() (*Path, error) {
- m := new(Path)
+func (x *gobgpApiMonitorPeerClient) Recv() (*MonitorPeerResponse, error) {
+ m := new(MonitorPeerResponse)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
-func (c *gobgpApiClient) ValidateRib(ctx context.Context, in *ValidateRibRequest, opts ...grpc.CallOption) (*ValidateRibResponse, error) {
- out := new(ValidateRibResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/ValidateRib", in, out, c.cc, opts...)
+func (c *gobgpApiClient) AddPeerGroup(ctx context.Context, in *AddPeerGroupRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddPeerGroup", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *gobgpApiClient) DeletePeerGroup(ctx context.Context, in *DeletePeerGroupRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeletePeerGroup", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *gobgpApiClient) UpdatePeerGroup(ctx context.Context, in *UpdatePeerGroupRequest, opts ...grpc.CallOption) (*UpdatePeerGroupResponse, error) {
+ out := new(UpdatePeerGroupResponse)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/UpdatePeerGroup", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *gobgpApiClient) AddDynamicNeighbor(ctx context.Context, in *AddDynamicNeighborRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddDynamicNeighbor", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
@@ -6705,8 +6228,8 @@ func (c *gobgpApiClient) AddPath(ctx context.Context, in *AddPathRequest, opts .
return out, nil
}
-func (c *gobgpApiClient) DeletePath(ctx context.Context, in *DeletePathRequest, opts ...grpc.CallOption) (*DeletePathResponse, error) {
- out := new(DeletePathResponse)
+func (c *gobgpApiClient) DeletePath(ctx context.Context, in *DeletePathRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeletePath", in, out, c.cc, opts...)
if err != nil {
return nil, err
@@ -6714,12 +6237,12 @@ func (c *gobgpApiClient) DeletePath(ctx context.Context, in *DeletePathRequest,
return out, nil
}
-func (c *gobgpApiClient) MonitorRib(ctx context.Context, in *MonitorRibRequest, opts ...grpc.CallOption) (GobgpApi_MonitorRibClient, error) {
- stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[1], c.cc, "/gobgpapi.GobgpApi/MonitorRib", opts...)
+func (c *gobgpApiClient) ListPath(ctx context.Context, in *ListPathRequest, opts ...grpc.CallOption) (GobgpApi_ListPathClient, error) {
+ stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[2], c.cc, "/gobgpapi.GobgpApi/ListPath", opts...)
if err != nil {
return nil, err
}
- x := &gobgpApiMonitorRibClient{stream}
+ x := &gobgpApiListPathClient{stream}
if err := x.ClientStream.SendMsg(in); err != nil {
return nil, err
}
@@ -6729,443 +6252,541 @@ func (c *gobgpApiClient) MonitorRib(ctx context.Context, in *MonitorRibRequest,
return x, nil
}
-type GobgpApi_MonitorRibClient interface {
- Recv() (*Destination, error)
+type GobgpApi_ListPathClient interface {
+ Recv() (*ListPathResponse, error)
grpc.ClientStream
}
-type gobgpApiMonitorRibClient struct {
+type gobgpApiListPathClient struct {
grpc.ClientStream
}
-func (x *gobgpApiMonitorRibClient) Recv() (*Destination, error) {
- m := new(Destination)
+func (x *gobgpApiListPathClient) Recv() (*ListPathResponse, error) {
+ m := new(ListPathResponse)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
-func (c *gobgpApiClient) MonitorPeerState(ctx context.Context, in *Arguments, opts ...grpc.CallOption) (GobgpApi_MonitorPeerStateClient, error) {
- stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[2], c.cc, "/gobgpapi.GobgpApi/MonitorPeerState", opts...)
+func (c *gobgpApiClient) AddPathStream(ctx context.Context, opts ...grpc.CallOption) (GobgpApi_AddPathStreamClient, error) {
+ stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[3], c.cc, "/gobgpapi.GobgpApi/AddPathStream", opts...)
if err != nil {
return nil, err
}
- x := &gobgpApiMonitorPeerStateClient{stream}
- if err := x.ClientStream.SendMsg(in); err != nil {
- return nil, err
- }
- if err := x.ClientStream.CloseSend(); err != nil {
- return nil, err
- }
+ x := &gobgpApiAddPathStreamClient{stream}
return x, nil
}
-type GobgpApi_MonitorPeerStateClient interface {
- Recv() (*Peer, error)
+type GobgpApi_AddPathStreamClient interface {
+ Send(*AddPathStreamRequest) error
+ CloseAndRecv() (*google_protobuf1.Empty, error)
grpc.ClientStream
}
-type gobgpApiMonitorPeerStateClient struct {
+type gobgpApiAddPathStreamClient struct {
grpc.ClientStream
}
-func (x *gobgpApiMonitorPeerStateClient) Recv() (*Peer, error) {
- m := new(Peer)
+func (x *gobgpApiAddPathStreamClient) Send(m *AddPathStreamRequest) error {
+ return x.ClientStream.SendMsg(m)
+}
+
+func (x *gobgpApiAddPathStreamClient) CloseAndRecv() (*google_protobuf1.Empty, error) {
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ m := new(google_protobuf1.Empty)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
-func (c *gobgpApiClient) EnableMrt(ctx context.Context, in *EnableMrtRequest, opts ...grpc.CallOption) (*EnableMrtResponse, error) {
- out := new(EnableMrtResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/EnableMrt", in, out, c.cc, opts...)
+func (c *gobgpApiClient) GetTable(ctx context.Context, in *GetTableRequest, opts ...grpc.CallOption) (*GetTableResponse, error) {
+ out := new(GetTableResponse)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/GetTable", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) DisableMrt(ctx context.Context, in *DisableMrtRequest, opts ...grpc.CallOption) (*DisableMrtResponse, error) {
- out := new(DisableMrtResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DisableMrt", in, out, c.cc, opts...)
+func (c *gobgpApiClient) MonitorTable(ctx context.Context, in *MonitorTableRequest, opts ...grpc.CallOption) (GobgpApi_MonitorTableClient, error) {
+ stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[4], c.cc, "/gobgpapi.GobgpApi/MonitorTable", opts...)
if err != nil {
return nil, err
}
- return out, nil
-}
-
-func (c *gobgpApiClient) InjectMrt(ctx context.Context, opts ...grpc.CallOption) (GobgpApi_InjectMrtClient, error) {
- stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[3], c.cc, "/gobgpapi.GobgpApi/InjectMrt", opts...)
- if err != nil {
+ x := &gobgpApiMonitorTableClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
return nil, err
}
- x := &gobgpApiInjectMrtClient{stream}
return x, nil
}
-type GobgpApi_InjectMrtClient interface {
- Send(*InjectMrtRequest) error
- CloseAndRecv() (*InjectMrtResponse, error)
+type GobgpApi_MonitorTableClient interface {
+ Recv() (*MonitorTableResponse, error)
grpc.ClientStream
}
-type gobgpApiInjectMrtClient struct {
+type gobgpApiMonitorTableClient struct {
grpc.ClientStream
}
-func (x *gobgpApiInjectMrtClient) Send(m *InjectMrtRequest) error {
- return x.ClientStream.SendMsg(m)
-}
-
-func (x *gobgpApiInjectMrtClient) CloseAndRecv() (*InjectMrtResponse, error) {
- if err := x.ClientStream.CloseSend(); err != nil {
- return nil, err
- }
- m := new(InjectMrtResponse)
+func (x *gobgpApiMonitorTableClient) Recv() (*MonitorTableResponse, error) {
+ m := new(MonitorTableResponse)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
-func (c *gobgpApiClient) AddBmp(ctx context.Context, in *AddBmpRequest, opts ...grpc.CallOption) (*AddBmpResponse, error) {
- out := new(AddBmpResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddBmp", in, out, c.cc, opts...)
+func (c *gobgpApiClient) AddVrf(ctx context.Context, in *AddVrfRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddVrf", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) DeleteBmp(ctx context.Context, in *DeleteBmpRequest, opts ...grpc.CallOption) (*DeleteBmpResponse, error) {
- out := new(DeleteBmpResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeleteBmp", in, out, c.cc, opts...)
+func (c *gobgpApiClient) DeleteVrf(ctx context.Context, in *DeleteVrfRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeleteVrf", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) GetRpki(ctx context.Context, in *GetRpkiRequest, opts ...grpc.CallOption) (*GetRpkiResponse, error) {
- out := new(GetRpkiResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/GetRpki", in, out, c.cc, opts...)
+func (c *gobgpApiClient) ListVrf(ctx context.Context, in *ListVrfRequest, opts ...grpc.CallOption) (GobgpApi_ListVrfClient, error) {
+ stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[5], c.cc, "/gobgpapi.GobgpApi/ListVrf", opts...)
if err != nil {
return nil, err
}
- return out, nil
+ x := &gobgpApiListVrfClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
}
-func (c *gobgpApiClient) AddRpki(ctx context.Context, in *AddRpkiRequest, opts ...grpc.CallOption) (*AddRpkiResponse, error) {
- out := new(AddRpkiResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddRpki", in, out, c.cc, opts...)
- if err != nil {
+type GobgpApi_ListVrfClient interface {
+ Recv() (*ListVrfResponse, error)
+ grpc.ClientStream
+}
+
+type gobgpApiListVrfClient struct {
+ grpc.ClientStream
+}
+
+func (x *gobgpApiListVrfClient) Recv() (*ListVrfResponse, error) {
+ m := new(ListVrfResponse)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
- return out, nil
+ return m, nil
}
-func (c *gobgpApiClient) DeleteRpki(ctx context.Context, in *DeleteRpkiRequest, opts ...grpc.CallOption) (*DeleteRpkiResponse, error) {
- out := new(DeleteRpkiResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeleteRpki", in, out, c.cc, opts...)
+func (c *gobgpApiClient) AddPolicy(ctx context.Context, in *AddPolicyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddPolicy", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) EnableRpki(ctx context.Context, in *EnableRpkiRequest, opts ...grpc.CallOption) (*EnableRpkiResponse, error) {
- out := new(EnableRpkiResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/EnableRpki", in, out, c.cc, opts...)
+func (c *gobgpApiClient) DeletePolicy(ctx context.Context, in *DeletePolicyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeletePolicy", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) DisableRpki(ctx context.Context, in *DisableRpkiRequest, opts ...grpc.CallOption) (*DisableRpkiResponse, error) {
- out := new(DisableRpkiResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DisableRpki", in, out, c.cc, opts...)
+func (c *gobgpApiClient) ListPolicy(ctx context.Context, in *ListPolicyRequest, opts ...grpc.CallOption) (GobgpApi_ListPolicyClient, error) {
+ stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[6], c.cc, "/gobgpapi.GobgpApi/ListPolicy", opts...)
if err != nil {
return nil, err
}
- return out, nil
+ x := &gobgpApiListPolicyClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
}
-func (c *gobgpApiClient) ResetRpki(ctx context.Context, in *ResetRpkiRequest, opts ...grpc.CallOption) (*ResetRpkiResponse, error) {
- out := new(ResetRpkiResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/ResetRpki", in, out, c.cc, opts...)
- if err != nil {
+type GobgpApi_ListPolicyClient interface {
+ Recv() (*ListPolicyResponse, error)
+ grpc.ClientStream
+}
+
+type gobgpApiListPolicyClient struct {
+ grpc.ClientStream
+}
+
+func (x *gobgpApiListPolicyClient) Recv() (*ListPolicyResponse, error) {
+ m := new(ListPolicyResponse)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
- return out, nil
+ return m, nil
}
-func (c *gobgpApiClient) SoftResetRpki(ctx context.Context, in *SoftResetRpkiRequest, opts ...grpc.CallOption) (*SoftResetRpkiResponse, error) {
- out := new(SoftResetRpkiResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/SoftResetRpki", in, out, c.cc, opts...)
+func (c *gobgpApiClient) ReplacePolicy(ctx context.Context, in *ReplacePolicyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/ReplacePolicy", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) GetRoa(ctx context.Context, in *GetRoaRequest, opts ...grpc.CallOption) (*GetRoaResponse, error) {
- out := new(GetRoaResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/GetRoa", in, out, c.cc, opts...)
+func (c *gobgpApiClient) UpdatePolicy(ctx context.Context, in *UpdatePolicyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/UpdatePolicy", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) EnableZebra(ctx context.Context, in *EnableZebraRequest, opts ...grpc.CallOption) (*EnableZebraResponse, error) {
- out := new(EnableZebraResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/EnableZebra", in, out, c.cc, opts...)
+func (c *gobgpApiClient) AddDefinedSet(ctx context.Context, in *AddDefinedSetRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddDefinedSet", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) AddVrf(ctx context.Context, in *AddVrfRequest, opts ...grpc.CallOption) (*AddVrfResponse, error) {
- out := new(AddVrfResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddVrf", in, out, c.cc, opts...)
+func (c *gobgpApiClient) DeleteDefinedSet(ctx context.Context, in *DeleteDefinedSetRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeleteDefinedSet", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) DeleteVrf(ctx context.Context, in *DeleteVrfRequest, opts ...grpc.CallOption) (*DeleteVrfResponse, error) {
- out := new(DeleteVrfResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeleteVrf", in, out, c.cc, opts...)
+func (c *gobgpApiClient) ListDefinedSet(ctx context.Context, in *ListDefinedSetRequest, opts ...grpc.CallOption) (GobgpApi_ListDefinedSetClient, error) {
+ stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[7], c.cc, "/gobgpapi.GobgpApi/ListDefinedSet", opts...)
if err != nil {
return nil, err
}
- return out, nil
+ x := &gobgpApiListDefinedSetClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
}
-func (c *gobgpApiClient) GetVrf(ctx context.Context, in *GetVrfRequest, opts ...grpc.CallOption) (*GetVrfResponse, error) {
- out := new(GetVrfResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/GetVrf", in, out, c.cc, opts...)
- if err != nil {
+type GobgpApi_ListDefinedSetClient interface {
+ Recv() (*ListDefinedSetResponse, error)
+ grpc.ClientStream
+}
+
+type gobgpApiListDefinedSetClient struct {
+ grpc.ClientStream
+}
+
+func (x *gobgpApiListDefinedSetClient) Recv() (*ListDefinedSetResponse, error) {
+ m := new(ListDefinedSetResponse)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
- return out, nil
+ return m, nil
}
-func (c *gobgpApiClient) GetDefinedSet(ctx context.Context, in *GetDefinedSetRequest, opts ...grpc.CallOption) (*GetDefinedSetResponse, error) {
- out := new(GetDefinedSetResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/GetDefinedSet", in, out, c.cc, opts...)
+func (c *gobgpApiClient) ReplaceDefinedSet(ctx context.Context, in *ReplaceDefinedSetRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/ReplaceDefinedSet", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) AddDefinedSet(ctx context.Context, in *AddDefinedSetRequest, opts ...grpc.CallOption) (*AddDefinedSetResponse, error) {
- out := new(AddDefinedSetResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddDefinedSet", in, out, c.cc, opts...)
+func (c *gobgpApiClient) AddStatement(ctx context.Context, in *AddStatementRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddStatement", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) DeleteDefinedSet(ctx context.Context, in *DeleteDefinedSetRequest, opts ...grpc.CallOption) (*DeleteDefinedSetResponse, error) {
- out := new(DeleteDefinedSetResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeleteDefinedSet", in, out, c.cc, opts...)
+func (c *gobgpApiClient) DeleteStatement(ctx context.Context, in *DeleteStatementRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeleteStatement", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) ReplaceDefinedSet(ctx context.Context, in *ReplaceDefinedSetRequest, opts ...grpc.CallOption) (*ReplaceDefinedSetResponse, error) {
- out := new(ReplaceDefinedSetResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/ReplaceDefinedSet", in, out, c.cc, opts...)
+func (c *gobgpApiClient) ListStatement(ctx context.Context, in *ListStatementRequest, opts ...grpc.CallOption) (GobgpApi_ListStatementClient, error) {
+ stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[8], c.cc, "/gobgpapi.GobgpApi/ListStatement", opts...)
if err != nil {
return nil, err
}
- return out, nil
+ x := &gobgpApiListStatementClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
}
-func (c *gobgpApiClient) GetStatement(ctx context.Context, in *GetStatementRequest, opts ...grpc.CallOption) (*GetStatementResponse, error) {
- out := new(GetStatementResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/GetStatement", in, out, c.cc, opts...)
- if err != nil {
+type GobgpApi_ListStatementClient interface {
+ Recv() (*ListStatementResponse, error)
+ grpc.ClientStream
+}
+
+type gobgpApiListStatementClient struct {
+ grpc.ClientStream
+}
+
+func (x *gobgpApiListStatementClient) Recv() (*ListStatementResponse, error) {
+ m := new(ListStatementResponse)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
- return out, nil
+ return m, nil
}
-func (c *gobgpApiClient) AddStatement(ctx context.Context, in *AddStatementRequest, opts ...grpc.CallOption) (*AddStatementResponse, error) {
- out := new(AddStatementResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddStatement", in, out, c.cc, opts...)
+func (c *gobgpApiClient) ReplaceStatement(ctx context.Context, in *ReplaceStatementRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/ReplaceStatement", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) DeleteStatement(ctx context.Context, in *DeleteStatementRequest, opts ...grpc.CallOption) (*DeleteStatementResponse, error) {
- out := new(DeleteStatementResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeleteStatement", in, out, c.cc, opts...)
+func (c *gobgpApiClient) AddPolicyAssignment(ctx context.Context, in *AddPolicyAssignmentRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddPolicyAssignment", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) ReplaceStatement(ctx context.Context, in *ReplaceStatementRequest, opts ...grpc.CallOption) (*ReplaceStatementResponse, error) {
- out := new(ReplaceStatementResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/ReplaceStatement", in, out, c.cc, opts...)
+func (c *gobgpApiClient) DeletePolicyAssignment(ctx context.Context, in *DeletePolicyAssignmentRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeletePolicyAssignment", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) GetPolicy(ctx context.Context, in *GetPolicyRequest, opts ...grpc.CallOption) (*GetPolicyResponse, error) {
- out := new(GetPolicyResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/GetPolicy", in, out, c.cc, opts...)
+func (c *gobgpApiClient) ListPolicyAssignment(ctx context.Context, in *ListPolicyAssignmentRequest, opts ...grpc.CallOption) (GobgpApi_ListPolicyAssignmentClient, error) {
+ stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[9], c.cc, "/gobgpapi.GobgpApi/ListPolicyAssignment", opts...)
if err != nil {
return nil, err
}
- return out, nil
+ x := &gobgpApiListPolicyAssignmentClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
}
-func (c *gobgpApiClient) AddPolicy(ctx context.Context, in *AddPolicyRequest, opts ...grpc.CallOption) (*AddPolicyResponse, error) {
- out := new(AddPolicyResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddPolicy", in, out, c.cc, opts...)
- if err != nil {
+type GobgpApi_ListPolicyAssignmentClient interface {
+ Recv() (*ListPolicyAssignmentResponse, error)
+ grpc.ClientStream
+}
+
+type gobgpApiListPolicyAssignmentClient struct {
+ grpc.ClientStream
+}
+
+func (x *gobgpApiListPolicyAssignmentClient) Recv() (*ListPolicyAssignmentResponse, error) {
+ m := new(ListPolicyAssignmentResponse)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
- return out, nil
+ return m, nil
}
-func (c *gobgpApiClient) DeletePolicy(ctx context.Context, in *DeletePolicyRequest, opts ...grpc.CallOption) (*DeletePolicyResponse, error) {
- out := new(DeletePolicyResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeletePolicy", in, out, c.cc, opts...)
+func (c *gobgpApiClient) ReplacePolicyAssignment(ctx context.Context, in *ReplacePolicyAssignmentRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/ReplacePolicyAssignment", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) ReplacePolicy(ctx context.Context, in *ReplacePolicyRequest, opts ...grpc.CallOption) (*ReplacePolicyResponse, error) {
- out := new(ReplacePolicyResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/ReplacePolicy", in, out, c.cc, opts...)
+func (c *gobgpApiClient) AddRpki(ctx context.Context, in *AddRpkiRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddRpki", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) UpdatePolicy(ctx context.Context, in *UpdatePolicyRequest, opts ...grpc.CallOption) (*UpdatePolicyResponse, error) {
- out := new(UpdatePolicyResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/UpdatePolicy", in, out, c.cc, opts...)
+func (c *gobgpApiClient) DeleteRpki(ctx context.Context, in *DeleteRpkiRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeleteRpki", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) GetPolicyAssignment(ctx context.Context, in *GetPolicyAssignmentRequest, opts ...grpc.CallOption) (*GetPolicyAssignmentResponse, error) {
- out := new(GetPolicyAssignmentResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/GetPolicyAssignment", in, out, c.cc, opts...)
+func (c *gobgpApiClient) ListRpki(ctx context.Context, in *ListRpkiRequest, opts ...grpc.CallOption) (GobgpApi_ListRpkiClient, error) {
+ stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[10], c.cc, "/gobgpapi.GobgpApi/ListRpki", opts...)
if err != nil {
return nil, err
}
- return out, nil
+ x := &gobgpApiListRpkiClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
}
-func (c *gobgpApiClient) AddPolicyAssignment(ctx context.Context, in *AddPolicyAssignmentRequest, opts ...grpc.CallOption) (*AddPolicyAssignmentResponse, error) {
- out := new(AddPolicyAssignmentResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddPolicyAssignment", in, out, c.cc, opts...)
- if err != nil {
+type GobgpApi_ListRpkiClient interface {
+ Recv() (*ListRpkiResponse, error)
+ grpc.ClientStream
+}
+
+type gobgpApiListRpkiClient struct {
+ grpc.ClientStream
+}
+
+func (x *gobgpApiListRpkiClient) Recv() (*ListRpkiResponse, error) {
+ m := new(ListRpkiResponse)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
- return out, nil
+ return m, nil
}
-func (c *gobgpApiClient) DeletePolicyAssignment(ctx context.Context, in *DeletePolicyAssignmentRequest, opts ...grpc.CallOption) (*DeletePolicyAssignmentResponse, error) {
- out := new(DeletePolicyAssignmentResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeletePolicyAssignment", in, out, c.cc, opts...)
+func (c *gobgpApiClient) EnableRpki(ctx context.Context, in *EnableRpkiRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/EnableRpki", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) ReplacePolicyAssignment(ctx context.Context, in *ReplacePolicyAssignmentRequest, opts ...grpc.CallOption) (*ReplacePolicyAssignmentResponse, error) {
- out := new(ReplacePolicyAssignmentResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/ReplacePolicyAssignment", in, out, c.cc, opts...)
+func (c *gobgpApiClient) DisableRpki(ctx context.Context, in *DisableRpkiRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DisableRpki", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) GetRibInfo(ctx context.Context, in *GetRibInfoRequest, opts ...grpc.CallOption) (*GetRibInfoResponse, error) {
- out := new(GetRibInfoResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/GetRibInfo", in, out, c.cc, opts...)
+func (c *gobgpApiClient) ResetRpki(ctx context.Context, in *ResetRpkiRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/ResetRpki", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) AddPeerGroup(ctx context.Context, in *AddPeerGroupRequest, opts ...grpc.CallOption) (*AddPeerGroupResponse, error) {
- out := new(AddPeerGroupResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddPeerGroup", in, out, c.cc, opts...)
+func (c *gobgpApiClient) ListRpkiTable(ctx context.Context, in *ListRpkiTableRequest, opts ...grpc.CallOption) (GobgpApi_ListRpkiTableClient, error) {
+ stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[11], c.cc, "/gobgpapi.GobgpApi/ListRpkiTable", opts...)
if err != nil {
return nil, err
}
- return out, nil
+ x := &gobgpApiListRpkiTableClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
}
-func (c *gobgpApiClient) DeletePeerGroup(ctx context.Context, in *DeletePeerGroupRequest, opts ...grpc.CallOption) (*DeletePeerGroupResponse, error) {
- out := new(DeletePeerGroupResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeletePeerGroup", in, out, c.cc, opts...)
+type GobgpApi_ListRpkiTableClient interface {
+ Recv() (*ListRpkiTableResponse, error)
+ grpc.ClientStream
+}
+
+type gobgpApiListRpkiTableClient struct {
+ grpc.ClientStream
+}
+
+func (x *gobgpApiListRpkiTableClient) Recv() (*ListRpkiTableResponse, error) {
+ m := new(ListRpkiTableResponse)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
+func (c *gobgpApiClient) EnableZebra(ctx context.Context, in *EnableZebraRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/EnableZebra", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) UpdatePeerGroup(ctx context.Context, in *UpdatePeerGroupRequest, opts ...grpc.CallOption) (*UpdatePeerGroupResponse, error) {
- out := new(UpdatePeerGroupResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/UpdatePeerGroup", in, out, c.cc, opts...)
+func (c *gobgpApiClient) EnableMrt(ctx context.Context, in *EnableMrtRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/EnableMrt", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) AddDynamicNeighbor(ctx context.Context, in *AddDynamicNeighborRequest, opts ...grpc.CallOption) (*AddDynamicNeighborResponse, error) {
- out := new(AddDynamicNeighborResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddDynamicNeighbor", in, out, c.cc, opts...)
+func (c *gobgpApiClient) DisableMrt(ctx context.Context, in *DisableMrtRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DisableMrt", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) AddCollector(ctx context.Context, in *AddCollectorRequest, opts ...grpc.CallOption) (*AddCollectorResponse, error) {
- out := new(AddCollectorResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddCollector", in, out, c.cc, opts...)
+func (c *gobgpApiClient) AddBmp(ctx context.Context, in *AddBmpRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddBmp", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *gobgpApiClient) Shutdown(ctx context.Context, in *ShutdownRequest, opts ...grpc.CallOption) (*ShutdownResponse, error) {
- out := new(ShutdownResponse)
- err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/Shutdown", in, out, c.cc, opts...)
+func (c *gobgpApiClient) DeleteBmp(ctx context.Context, in *DeleteBmpRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+ out := new(google_protobuf1.Empty)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeleteBmp", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
@@ -7175,341 +6796,356 @@ func (c *gobgpApiClient) Shutdown(ctx context.Context, in *ShutdownRequest, opts
// Server API for GobgpApi service
type GobgpApiServer interface {
- StartServer(context.Context, *StartServerRequest) (*StartServerResponse, error)
- StopServer(context.Context, *StopServerRequest) (*StopServerResponse, error)
- GetServer(context.Context, *GetServerRequest) (*GetServerResponse, error)
- AddNeighbor(context.Context, *AddNeighborRequest) (*AddNeighborResponse, error)
- DeleteNeighbor(context.Context, *DeleteNeighborRequest) (*DeleteNeighborResponse, error)
- UpdateNeighbor(context.Context, *UpdateNeighborRequest) (*UpdateNeighborResponse, error)
- GetNeighbor(context.Context, *GetNeighborRequest) (*GetNeighborResponse, error)
- ResetNeighbor(context.Context, *ResetNeighborRequest) (*ResetNeighborResponse, error)
- SoftResetNeighbor(context.Context, *SoftResetNeighborRequest) (*SoftResetNeighborResponse, error)
- ShutdownNeighbor(context.Context, *ShutdownNeighborRequest) (*ShutdownNeighborResponse, error)
- EnableNeighbor(context.Context, *EnableNeighborRequest) (*EnableNeighborResponse, error)
- DisableNeighbor(context.Context, *DisableNeighborRequest) (*DisableNeighborResponse, error)
- GetRib(context.Context, *GetRibRequest) (*GetRibResponse, error)
- GetPath(*GetPathRequest, GobgpApi_GetPathServer) error
- ValidateRib(context.Context, *ValidateRibRequest) (*ValidateRibResponse, error)
- AddPath(context.Context, *AddPathRequest) (*AddPathResponse, error)
- DeletePath(context.Context, *DeletePathRequest) (*DeletePathResponse, error)
- MonitorRib(*MonitorRibRequest, GobgpApi_MonitorRibServer) error
- MonitorPeerState(*Arguments, GobgpApi_MonitorPeerStateServer) error
- EnableMrt(context.Context, *EnableMrtRequest) (*EnableMrtResponse, error)
- DisableMrt(context.Context, *DisableMrtRequest) (*DisableMrtResponse, error)
- InjectMrt(GobgpApi_InjectMrtServer) error
- AddBmp(context.Context, *AddBmpRequest) (*AddBmpResponse, error)
- DeleteBmp(context.Context, *DeleteBmpRequest) (*DeleteBmpResponse, error)
- GetRpki(context.Context, *GetRpkiRequest) (*GetRpkiResponse, error)
- AddRpki(context.Context, *AddRpkiRequest) (*AddRpkiResponse, error)
- DeleteRpki(context.Context, *DeleteRpkiRequest) (*DeleteRpkiResponse, error)
- EnableRpki(context.Context, *EnableRpkiRequest) (*EnableRpkiResponse, error)
- DisableRpki(context.Context, *DisableRpkiRequest) (*DisableRpkiResponse, error)
- ResetRpki(context.Context, *ResetRpkiRequest) (*ResetRpkiResponse, error)
- SoftResetRpki(context.Context, *SoftResetRpkiRequest) (*SoftResetRpkiResponse, error)
- GetRoa(context.Context, *GetRoaRequest) (*GetRoaResponse, error)
- EnableZebra(context.Context, *EnableZebraRequest) (*EnableZebraResponse, error)
- AddVrf(context.Context, *AddVrfRequest) (*AddVrfResponse, error)
- DeleteVrf(context.Context, *DeleteVrfRequest) (*DeleteVrfResponse, error)
- GetVrf(context.Context, *GetVrfRequest) (*GetVrfResponse, error)
- GetDefinedSet(context.Context, *GetDefinedSetRequest) (*GetDefinedSetResponse, error)
- AddDefinedSet(context.Context, *AddDefinedSetRequest) (*AddDefinedSetResponse, error)
- DeleteDefinedSet(context.Context, *DeleteDefinedSetRequest) (*DeleteDefinedSetResponse, error)
- ReplaceDefinedSet(context.Context, *ReplaceDefinedSetRequest) (*ReplaceDefinedSetResponse, error)
- GetStatement(context.Context, *GetStatementRequest) (*GetStatementResponse, error)
- AddStatement(context.Context, *AddStatementRequest) (*AddStatementResponse, error)
- DeleteStatement(context.Context, *DeleteStatementRequest) (*DeleteStatementResponse, error)
- ReplaceStatement(context.Context, *ReplaceStatementRequest) (*ReplaceStatementResponse, error)
- GetPolicy(context.Context, *GetPolicyRequest) (*GetPolicyResponse, error)
- AddPolicy(context.Context, *AddPolicyRequest) (*AddPolicyResponse, error)
- DeletePolicy(context.Context, *DeletePolicyRequest) (*DeletePolicyResponse, error)
- ReplacePolicy(context.Context, *ReplacePolicyRequest) (*ReplacePolicyResponse, error)
- UpdatePolicy(context.Context, *UpdatePolicyRequest) (*UpdatePolicyResponse, error)
- GetPolicyAssignment(context.Context, *GetPolicyAssignmentRequest) (*GetPolicyAssignmentResponse, error)
- AddPolicyAssignment(context.Context, *AddPolicyAssignmentRequest) (*AddPolicyAssignmentResponse, error)
- DeletePolicyAssignment(context.Context, *DeletePolicyAssignmentRequest) (*DeletePolicyAssignmentResponse, error)
- ReplacePolicyAssignment(context.Context, *ReplacePolicyAssignmentRequest) (*ReplacePolicyAssignmentResponse, error)
- GetRibInfo(context.Context, *GetRibInfoRequest) (*GetRibInfoResponse, error)
- AddPeerGroup(context.Context, *AddPeerGroupRequest) (*AddPeerGroupResponse, error)
- DeletePeerGroup(context.Context, *DeletePeerGroupRequest) (*DeletePeerGroupResponse, error)
+ StartBgp(context.Context, *StartBgpRequest) (*google_protobuf1.Empty, error)
+ StopBgp(context.Context, *StopBgpRequest) (*google_protobuf1.Empty, error)
+ GetBgp(context.Context, *GetBgpRequest) (*GetBgpResponse, error)
+ AddPeer(context.Context, *AddPeerRequest) (*google_protobuf1.Empty, error)
+ DeletePeer(context.Context, *DeletePeerRequest) (*google_protobuf1.Empty, error)
+ ListPeer(*ListPeerRequest, GobgpApi_ListPeerServer) error
+ UpdatePeer(context.Context, *UpdatePeerRequest) (*UpdatePeerResponse, error)
+ ResetPeer(context.Context, *ResetPeerRequest) (*google_protobuf1.Empty, error)
+ ShutdownPeer(context.Context, *ShutdownPeerRequest) (*google_protobuf1.Empty, error)
+ EnablePeer(context.Context, *EnablePeerRequest) (*google_protobuf1.Empty, error)
+ DisablePeer(context.Context, *DisablePeerRequest) (*google_protobuf1.Empty, error)
+ MonitorPeer(*MonitorPeerRequest, GobgpApi_MonitorPeerServer) error
+ AddPeerGroup(context.Context, *AddPeerGroupRequest) (*google_protobuf1.Empty, error)
+ DeletePeerGroup(context.Context, *DeletePeerGroupRequest) (*google_protobuf1.Empty, error)
UpdatePeerGroup(context.Context, *UpdatePeerGroupRequest) (*UpdatePeerGroupResponse, error)
- AddDynamicNeighbor(context.Context, *AddDynamicNeighborRequest) (*AddDynamicNeighborResponse, error)
- AddCollector(context.Context, *AddCollectorRequest) (*AddCollectorResponse, error)
- Shutdown(context.Context, *ShutdownRequest) (*ShutdownResponse, error)
+ AddDynamicNeighbor(context.Context, *AddDynamicNeighborRequest) (*google_protobuf1.Empty, error)
+ AddPath(context.Context, *AddPathRequest) (*AddPathResponse, error)
+ DeletePath(context.Context, *DeletePathRequest) (*google_protobuf1.Empty, error)
+ ListPath(*ListPathRequest, GobgpApi_ListPathServer) error
+ AddPathStream(GobgpApi_AddPathStreamServer) error
+ GetTable(context.Context, *GetTableRequest) (*GetTableResponse, error)
+ MonitorTable(*MonitorTableRequest, GobgpApi_MonitorTableServer) error
+ AddVrf(context.Context, *AddVrfRequest) (*google_protobuf1.Empty, error)
+ DeleteVrf(context.Context, *DeleteVrfRequest) (*google_protobuf1.Empty, error)
+ ListVrf(*ListVrfRequest, GobgpApi_ListVrfServer) error
+ AddPolicy(context.Context, *AddPolicyRequest) (*google_protobuf1.Empty, error)
+ DeletePolicy(context.Context, *DeletePolicyRequest) (*google_protobuf1.Empty, error)
+ ListPolicy(*ListPolicyRequest, GobgpApi_ListPolicyServer) error
+ ReplacePolicy(context.Context, *ReplacePolicyRequest) (*google_protobuf1.Empty, error)
+ UpdatePolicy(context.Context, *UpdatePolicyRequest) (*google_protobuf1.Empty, error)
+ AddDefinedSet(context.Context, *AddDefinedSetRequest) (*google_protobuf1.Empty, error)
+ DeleteDefinedSet(context.Context, *DeleteDefinedSetRequest) (*google_protobuf1.Empty, error)
+ ListDefinedSet(*ListDefinedSetRequest, GobgpApi_ListDefinedSetServer) error
+ ReplaceDefinedSet(context.Context, *ReplaceDefinedSetRequest) (*google_protobuf1.Empty, error)
+ AddStatement(context.Context, *AddStatementRequest) (*google_protobuf1.Empty, error)
+ DeleteStatement(context.Context, *DeleteStatementRequest) (*google_protobuf1.Empty, error)
+ ListStatement(*ListStatementRequest, GobgpApi_ListStatementServer) error
+ ReplaceStatement(context.Context, *ReplaceStatementRequest) (*google_protobuf1.Empty, error)
+ AddPolicyAssignment(context.Context, *AddPolicyAssignmentRequest) (*google_protobuf1.Empty, error)
+ DeletePolicyAssignment(context.Context, *DeletePolicyAssignmentRequest) (*google_protobuf1.Empty, error)
+ ListPolicyAssignment(*ListPolicyAssignmentRequest, GobgpApi_ListPolicyAssignmentServer) error
+ ReplacePolicyAssignment(context.Context, *ReplacePolicyAssignmentRequest) (*google_protobuf1.Empty, error)
+ AddRpki(context.Context, *AddRpkiRequest) (*google_protobuf1.Empty, error)
+ DeleteRpki(context.Context, *DeleteRpkiRequest) (*google_protobuf1.Empty, error)
+ ListRpki(*ListRpkiRequest, GobgpApi_ListRpkiServer) error
+ EnableRpki(context.Context, *EnableRpkiRequest) (*google_protobuf1.Empty, error)
+ DisableRpki(context.Context, *DisableRpkiRequest) (*google_protobuf1.Empty, error)
+ ResetRpki(context.Context, *ResetRpkiRequest) (*google_protobuf1.Empty, error)
+ ListRpkiTable(*ListRpkiTableRequest, GobgpApi_ListRpkiTableServer) error
+ EnableZebra(context.Context, *EnableZebraRequest) (*google_protobuf1.Empty, error)
+ EnableMrt(context.Context, *EnableMrtRequest) (*google_protobuf1.Empty, error)
+ DisableMrt(context.Context, *DisableMrtRequest) (*google_protobuf1.Empty, error)
+ AddBmp(context.Context, *AddBmpRequest) (*google_protobuf1.Empty, error)
+ DeleteBmp(context.Context, *DeleteBmpRequest) (*google_protobuf1.Empty, error)
}
func RegisterGobgpApiServer(s *grpc.Server, srv GobgpApiServer) {
s.RegisterService(&_GobgpApi_serviceDesc, srv)
}
-func _GobgpApi_StartServer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(StartServerRequest)
+func _GobgpApi_StartBgp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(StartBgpRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).StartServer(ctx, in)
+ return srv.(GobgpApiServer).StartBgp(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/StartServer",
+ FullMethod: "/gobgpapi.GobgpApi/StartBgp",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).StartServer(ctx, req.(*StartServerRequest))
+ return srv.(GobgpApiServer).StartBgp(ctx, req.(*StartBgpRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_StopServer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(StopServerRequest)
+func _GobgpApi_StopBgp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(StopBgpRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).StopServer(ctx, in)
+ return srv.(GobgpApiServer).StopBgp(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/StopServer",
+ FullMethod: "/gobgpapi.GobgpApi/StopBgp",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).StopServer(ctx, req.(*StopServerRequest))
+ return srv.(GobgpApiServer).StopBgp(ctx, req.(*StopBgpRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_GetServer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(GetServerRequest)
+func _GobgpApi_GetBgp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetBgpRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).GetServer(ctx, in)
+ return srv.(GobgpApiServer).GetBgp(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/GetServer",
+ FullMethod: "/gobgpapi.GobgpApi/GetBgp",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).GetServer(ctx, req.(*GetServerRequest))
+ return srv.(GobgpApiServer).GetBgp(ctx, req.(*GetBgpRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_AddNeighbor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(AddNeighborRequest)
+func _GobgpApi_AddPeer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AddPeerRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).AddNeighbor(ctx, in)
+ return srv.(GobgpApiServer).AddPeer(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/AddNeighbor",
+ FullMethod: "/gobgpapi.GobgpApi/AddPeer",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).AddNeighbor(ctx, req.(*AddNeighborRequest))
+ return srv.(GobgpApiServer).AddPeer(ctx, req.(*AddPeerRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_DeleteNeighbor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeleteNeighborRequest)
+func _GobgpApi_DeletePeer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeletePeerRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).DeleteNeighbor(ctx, in)
+ return srv.(GobgpApiServer).DeletePeer(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/DeleteNeighbor",
+ FullMethod: "/gobgpapi.GobgpApi/DeletePeer",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).DeleteNeighbor(ctx, req.(*DeleteNeighborRequest))
+ return srv.(GobgpApiServer).DeletePeer(ctx, req.(*DeletePeerRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_UpdateNeighbor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(UpdateNeighborRequest)
+func _GobgpApi_ListPeer_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(ListPeerRequest)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
+ }
+ return srv.(GobgpApiServer).ListPeer(m, &gobgpApiListPeerServer{stream})
+}
+
+type GobgpApi_ListPeerServer interface {
+ Send(*ListPeerResponse) error
+ grpc.ServerStream
+}
+
+type gobgpApiListPeerServer struct {
+ grpc.ServerStream
+}
+
+func (x *gobgpApiListPeerServer) Send(m *ListPeerResponse) error {
+ return x.ServerStream.SendMsg(m)
+}
+
+func _GobgpApi_UpdatePeer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(UpdatePeerRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).UpdateNeighbor(ctx, in)
+ return srv.(GobgpApiServer).UpdatePeer(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/UpdateNeighbor",
+ FullMethod: "/gobgpapi.GobgpApi/UpdatePeer",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).UpdateNeighbor(ctx, req.(*UpdateNeighborRequest))
+ return srv.(GobgpApiServer).UpdatePeer(ctx, req.(*UpdatePeerRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_GetNeighbor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(GetNeighborRequest)
+func _GobgpApi_ResetPeer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ResetPeerRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).GetNeighbor(ctx, in)
+ return srv.(GobgpApiServer).ResetPeer(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/GetNeighbor",
+ FullMethod: "/gobgpapi.GobgpApi/ResetPeer",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).GetNeighbor(ctx, req.(*GetNeighborRequest))
+ return srv.(GobgpApiServer).ResetPeer(ctx, req.(*ResetPeerRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_ResetNeighbor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ResetNeighborRequest)
+func _GobgpApi_ShutdownPeer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ShutdownPeerRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).ResetNeighbor(ctx, in)
+ return srv.(GobgpApiServer).ShutdownPeer(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/ResetNeighbor",
+ FullMethod: "/gobgpapi.GobgpApi/ShutdownPeer",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).ResetNeighbor(ctx, req.(*ResetNeighborRequest))
+ return srv.(GobgpApiServer).ShutdownPeer(ctx, req.(*ShutdownPeerRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_SoftResetNeighbor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(SoftResetNeighborRequest)
+func _GobgpApi_EnablePeer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(EnablePeerRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).SoftResetNeighbor(ctx, in)
+ return srv.(GobgpApiServer).EnablePeer(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/SoftResetNeighbor",
+ FullMethod: "/gobgpapi.GobgpApi/EnablePeer",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).SoftResetNeighbor(ctx, req.(*SoftResetNeighborRequest))
+ return srv.(GobgpApiServer).EnablePeer(ctx, req.(*EnablePeerRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_ShutdownNeighbor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ShutdownNeighborRequest)
+func _GobgpApi_DisablePeer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DisablePeerRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).ShutdownNeighbor(ctx, in)
+ return srv.(GobgpApiServer).DisablePeer(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/ShutdownNeighbor",
+ FullMethod: "/gobgpapi.GobgpApi/DisablePeer",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).ShutdownNeighbor(ctx, req.(*ShutdownNeighborRequest))
+ return srv.(GobgpApiServer).DisablePeer(ctx, req.(*DisablePeerRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_EnableNeighbor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(EnableNeighborRequest)
+func _GobgpApi_MonitorPeer_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(MonitorPeerRequest)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
+ }
+ return srv.(GobgpApiServer).MonitorPeer(m, &gobgpApiMonitorPeerServer{stream})
+}
+
+type GobgpApi_MonitorPeerServer interface {
+ Send(*MonitorPeerResponse) error
+ grpc.ServerStream
+}
+
+type gobgpApiMonitorPeerServer struct {
+ grpc.ServerStream
+}
+
+func (x *gobgpApiMonitorPeerServer) Send(m *MonitorPeerResponse) error {
+ return x.ServerStream.SendMsg(m)
+}
+
+func _GobgpApi_AddPeerGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AddPeerGroupRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).EnableNeighbor(ctx, in)
+ return srv.(GobgpApiServer).AddPeerGroup(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/EnableNeighbor",
+ FullMethod: "/gobgpapi.GobgpApi/AddPeerGroup",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).EnableNeighbor(ctx, req.(*EnableNeighborRequest))
+ return srv.(GobgpApiServer).AddPeerGroup(ctx, req.(*AddPeerGroupRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_DisableNeighbor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DisableNeighborRequest)
+func _GobgpApi_DeletePeerGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeletePeerGroupRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).DisableNeighbor(ctx, in)
+ return srv.(GobgpApiServer).DeletePeerGroup(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/DisableNeighbor",
+ FullMethod: "/gobgpapi.GobgpApi/DeletePeerGroup",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).DisableNeighbor(ctx, req.(*DisableNeighborRequest))
+ return srv.(GobgpApiServer).DeletePeerGroup(ctx, req.(*DeletePeerGroupRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_GetRib_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(GetRibRequest)
+func _GobgpApi_UpdatePeerGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(UpdatePeerGroupRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).GetRib(ctx, in)
+ return srv.(GobgpApiServer).UpdatePeerGroup(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/GetRib",
+ FullMethod: "/gobgpapi.GobgpApi/UpdatePeerGroup",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).GetRib(ctx, req.(*GetRibRequest))
+ return srv.(GobgpApiServer).UpdatePeerGroup(ctx, req.(*UpdatePeerGroupRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_GetPath_Handler(srv interface{}, stream grpc.ServerStream) error {
- m := new(GetPathRequest)
- if err := stream.RecvMsg(m); err != nil {
- return err
- }
- return srv.(GobgpApiServer).GetPath(m, &gobgpApiGetPathServer{stream})
-}
-
-type GobgpApi_GetPathServer interface {
- Send(*Path) error
- grpc.ServerStream
-}
-
-type gobgpApiGetPathServer struct {
- grpc.ServerStream
-}
-
-func (x *gobgpApiGetPathServer) Send(m *Path) error {
- return x.ServerStream.SendMsg(m)
-}
-
-func _GobgpApi_ValidateRib_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ValidateRibRequest)
+func _GobgpApi_AddDynamicNeighbor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AddDynamicNeighborRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).ValidateRib(ctx, in)
+ return srv.(GobgpApiServer).AddDynamicNeighbor(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/ValidateRib",
+ FullMethod: "/gobgpapi.GobgpApi/AddDynamicNeighbor",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).ValidateRib(ctx, req.(*ValidateRibRequest))
+ return srv.(GobgpApiServer).AddDynamicNeighbor(ctx, req.(*AddDynamicNeighborRequest))
}
return interceptor(ctx, in, info, handler)
}
@@ -7550,376 +7186,238 @@ func _GobgpApi_DeletePath_Handler(srv interface{}, ctx context.Context, dec func
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_MonitorRib_Handler(srv interface{}, stream grpc.ServerStream) error {
- m := new(MonitorRibRequest)
+func _GobgpApi_ListPath_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(ListPathRequest)
if err := stream.RecvMsg(m); err != nil {
return err
}
- return srv.(GobgpApiServer).MonitorRib(m, &gobgpApiMonitorRibServer{stream})
+ return srv.(GobgpApiServer).ListPath(m, &gobgpApiListPathServer{stream})
}
-type GobgpApi_MonitorRibServer interface {
- Send(*Destination) error
+type GobgpApi_ListPathServer interface {
+ Send(*ListPathResponse) error
grpc.ServerStream
}
-type gobgpApiMonitorRibServer struct {
+type gobgpApiListPathServer struct {
grpc.ServerStream
}
-func (x *gobgpApiMonitorRibServer) Send(m *Destination) error {
+func (x *gobgpApiListPathServer) Send(m *ListPathResponse) error {
return x.ServerStream.SendMsg(m)
}
-func _GobgpApi_MonitorPeerState_Handler(srv interface{}, stream grpc.ServerStream) error {
- m := new(Arguments)
- if err := stream.RecvMsg(m); err != nil {
- return err
- }
- return srv.(GobgpApiServer).MonitorPeerState(m, &gobgpApiMonitorPeerStateServer{stream})
+func _GobgpApi_AddPathStream_Handler(srv interface{}, stream grpc.ServerStream) error {
+ return srv.(GobgpApiServer).AddPathStream(&gobgpApiAddPathStreamServer{stream})
}
-type GobgpApi_MonitorPeerStateServer interface {
- Send(*Peer) error
+type GobgpApi_AddPathStreamServer interface {
+ SendAndClose(*google_protobuf1.Empty) error
+ Recv() (*AddPathStreamRequest, error)
grpc.ServerStream
}
-type gobgpApiMonitorPeerStateServer struct {
+type gobgpApiAddPathStreamServer struct {
grpc.ServerStream
}
-func (x *gobgpApiMonitorPeerStateServer) Send(m *Peer) error {
+func (x *gobgpApiAddPathStreamServer) SendAndClose(m *google_protobuf1.Empty) error {
return x.ServerStream.SendMsg(m)
}
-func _GobgpApi_EnableMrt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(EnableMrtRequest)
- if err := dec(in); err != nil {
+func (x *gobgpApiAddPathStreamServer) Recv() (*AddPathStreamRequest, error) {
+ m := new(AddPathStreamRequest)
+ if err := x.ServerStream.RecvMsg(m); err != nil {
return nil, err
}
- if interceptor == nil {
- return srv.(GobgpApiServer).EnableMrt(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/EnableMrt",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).EnableMrt(ctx, req.(*EnableMrtRequest))
- }
- return interceptor(ctx, in, info, handler)
+ return m, nil
}
-func _GobgpApi_DisableMrt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DisableMrtRequest)
+func _GobgpApi_GetTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetTableRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).DisableMrt(ctx, in)
+ return srv.(GobgpApiServer).GetTable(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/DisableMrt",
+ FullMethod: "/gobgpapi.GobgpApi/GetTable",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).DisableMrt(ctx, req.(*DisableMrtRequest))
+ return srv.(GobgpApiServer).GetTable(ctx, req.(*GetTableRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_InjectMrt_Handler(srv interface{}, stream grpc.ServerStream) error {
- return srv.(GobgpApiServer).InjectMrt(&gobgpApiInjectMrtServer{stream})
+func _GobgpApi_MonitorTable_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(MonitorTableRequest)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
+ }
+ return srv.(GobgpApiServer).MonitorTable(m, &gobgpApiMonitorTableServer{stream})
}
-type GobgpApi_InjectMrtServer interface {
- SendAndClose(*InjectMrtResponse) error
- Recv() (*InjectMrtRequest, error)
+type GobgpApi_MonitorTableServer interface {
+ Send(*MonitorTableResponse) error
grpc.ServerStream
}
-type gobgpApiInjectMrtServer struct {
+type gobgpApiMonitorTableServer struct {
grpc.ServerStream
}
-func (x *gobgpApiInjectMrtServer) SendAndClose(m *InjectMrtResponse) error {
+func (x *gobgpApiMonitorTableServer) Send(m *MonitorTableResponse) error {
return x.ServerStream.SendMsg(m)
}
-func (x *gobgpApiInjectMrtServer) Recv() (*InjectMrtRequest, error) {
- m := new(InjectMrtRequest)
- if err := x.ServerStream.RecvMsg(m); err != nil {
- return nil, err
- }
- return m, nil
-}
-
-func _GobgpApi_AddBmp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(AddBmpRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GobgpApiServer).AddBmp(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/AddBmp",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).AddBmp(ctx, req.(*AddBmpRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _GobgpApi_DeleteBmp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeleteBmpRequest)
+func _GobgpApi_AddVrf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AddVrfRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).DeleteBmp(ctx, in)
+ return srv.(GobgpApiServer).AddVrf(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/DeleteBmp",
+ FullMethod: "/gobgpapi.GobgpApi/AddVrf",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).DeleteBmp(ctx, req.(*DeleteBmpRequest))
+ return srv.(GobgpApiServer).AddVrf(ctx, req.(*AddVrfRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_GetRpki_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(GetRpkiRequest)
+func _GobgpApi_DeleteVrf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteVrfRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).GetRpki(ctx, in)
+ return srv.(GobgpApiServer).DeleteVrf(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/GetRpki",
+ FullMethod: "/gobgpapi.GobgpApi/DeleteVrf",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).GetRpki(ctx, req.(*GetRpkiRequest))
+ return srv.(GobgpApiServer).DeleteVrf(ctx, req.(*DeleteVrfRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_AddRpki_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(AddRpkiRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GobgpApiServer).AddRpki(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/AddRpki",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).AddRpki(ctx, req.(*AddRpkiRequest))
+func _GobgpApi_ListVrf_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(ListVrfRequest)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
}
- return interceptor(ctx, in, info, handler)
+ return srv.(GobgpApiServer).ListVrf(m, &gobgpApiListVrfServer{stream})
}
-func _GobgpApi_DeleteRpki_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeleteRpkiRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GobgpApiServer).DeleteRpki(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/DeleteRpki",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).DeleteRpki(ctx, req.(*DeleteRpkiRequest))
- }
- return interceptor(ctx, in, info, handler)
+type GobgpApi_ListVrfServer interface {
+ Send(*ListVrfResponse) error
+ grpc.ServerStream
}
-func _GobgpApi_EnableRpki_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(EnableRpkiRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GobgpApiServer).EnableRpki(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/EnableRpki",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).EnableRpki(ctx, req.(*EnableRpkiRequest))
- }
- return interceptor(ctx, in, info, handler)
+type gobgpApiListVrfServer struct {
+ grpc.ServerStream
}
-func _GobgpApi_DisableRpki_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DisableRpkiRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GobgpApiServer).DisableRpki(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/DisableRpki",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).DisableRpki(ctx, req.(*DisableRpkiRequest))
- }
- return interceptor(ctx, in, info, handler)
+func (x *gobgpApiListVrfServer) Send(m *ListVrfResponse) error {
+ return x.ServerStream.SendMsg(m)
}
-func _GobgpApi_ResetRpki_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ResetRpkiRequest)
+func _GobgpApi_AddPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AddPolicyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).ResetRpki(ctx, in)
+ return srv.(GobgpApiServer).AddPolicy(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/ResetRpki",
+ FullMethod: "/gobgpapi.GobgpApi/AddPolicy",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).ResetRpki(ctx, req.(*ResetRpkiRequest))
+ return srv.(GobgpApiServer).AddPolicy(ctx, req.(*AddPolicyRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_SoftResetRpki_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(SoftResetRpkiRequest)
+func _GobgpApi_DeletePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeletePolicyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).SoftResetRpki(ctx, in)
+ return srv.(GobgpApiServer).DeletePolicy(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/SoftResetRpki",
+ FullMethod: "/gobgpapi.GobgpApi/DeletePolicy",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).SoftResetRpki(ctx, req.(*SoftResetRpkiRequest))
+ return srv.(GobgpApiServer).DeletePolicy(ctx, req.(*DeletePolicyRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_GetRoa_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(GetRoaRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GobgpApiServer).GetRoa(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/GetRoa",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).GetRoa(ctx, req.(*GetRoaRequest))
+func _GobgpApi_ListPolicy_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(ListPolicyRequest)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
}
- return interceptor(ctx, in, info, handler)
+ return srv.(GobgpApiServer).ListPolicy(m, &gobgpApiListPolicyServer{stream})
}
-func _GobgpApi_EnableZebra_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(EnableZebraRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GobgpApiServer).EnableZebra(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/EnableZebra",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).EnableZebra(ctx, req.(*EnableZebraRequest))
- }
- return interceptor(ctx, in, info, handler)
+type GobgpApi_ListPolicyServer interface {
+ Send(*ListPolicyResponse) error
+ grpc.ServerStream
}
-func _GobgpApi_AddVrf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(AddVrfRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GobgpApiServer).AddVrf(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/AddVrf",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).AddVrf(ctx, req.(*AddVrfRequest))
- }
- return interceptor(ctx, in, info, handler)
+type gobgpApiListPolicyServer struct {
+ grpc.ServerStream
}
-func _GobgpApi_DeleteVrf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeleteVrfRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GobgpApiServer).DeleteVrf(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/DeleteVrf",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).DeleteVrf(ctx, req.(*DeleteVrfRequest))
- }
- return interceptor(ctx, in, info, handler)
+func (x *gobgpApiListPolicyServer) Send(m *ListPolicyResponse) error {
+ return x.ServerStream.SendMsg(m)
}
-func _GobgpApi_GetVrf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(GetVrfRequest)
+func _GobgpApi_ReplacePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ReplacePolicyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).GetVrf(ctx, in)
+ return srv.(GobgpApiServer).ReplacePolicy(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/GetVrf",
+ FullMethod: "/gobgpapi.GobgpApi/ReplacePolicy",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).GetVrf(ctx, req.(*GetVrfRequest))
+ return srv.(GobgpApiServer).ReplacePolicy(ctx, req.(*ReplacePolicyRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_GetDefinedSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(GetDefinedSetRequest)
+func _GobgpApi_UpdatePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(UpdatePolicyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).GetDefinedSet(ctx, in)
+ return srv.(GobgpApiServer).UpdatePolicy(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/GetDefinedSet",
+ FullMethod: "/gobgpapi.GobgpApi/UpdatePolicy",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).GetDefinedSet(ctx, req.(*GetDefinedSetRequest))
+ return srv.(GobgpApiServer).UpdatePolicy(ctx, req.(*UpdatePolicyRequest))
}
return interceptor(ctx, in, info, handler)
}
@@ -7960,6 +7458,27 @@ func _GobgpApi_DeleteDefinedSet_Handler(srv interface{}, ctx context.Context, de
return interceptor(ctx, in, info, handler)
}
+func _GobgpApi_ListDefinedSet_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(ListDefinedSetRequest)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
+ }
+ return srv.(GobgpApiServer).ListDefinedSet(m, &gobgpApiListDefinedSetServer{stream})
+}
+
+type GobgpApi_ListDefinedSetServer interface {
+ Send(*ListDefinedSetResponse) error
+ grpc.ServerStream
+}
+
+type gobgpApiListDefinedSetServer struct {
+ grpc.ServerStream
+}
+
+func (x *gobgpApiListDefinedSetServer) Send(m *ListDefinedSetResponse) error {
+ return x.ServerStream.SendMsg(m)
+}
+
func _GobgpApi_ReplaceDefinedSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ReplaceDefinedSetRequest)
if err := dec(in); err != nil {
@@ -7978,24 +7497,6 @@ func _GobgpApi_ReplaceDefinedSet_Handler(srv interface{}, ctx context.Context, d
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_GetStatement_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(GetStatementRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GobgpApiServer).GetStatement(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/GetStatement",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).GetStatement(ctx, req.(*GetStatementRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
func _GobgpApi_AddStatement_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(AddStatementRequest)
if err := dec(in); err != nil {
@@ -8032,6 +7533,27 @@ func _GobgpApi_DeleteStatement_Handler(srv interface{}, ctx context.Context, dec
return interceptor(ctx, in, info, handler)
}
+func _GobgpApi_ListStatement_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(ListStatementRequest)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
+ }
+ return srv.(GobgpApiServer).ListStatement(m, &gobgpApiListStatementServer{stream})
+}
+
+type GobgpApi_ListStatementServer interface {
+ Send(*ListStatementResponse) error
+ grpc.ServerStream
+}
+
+type gobgpApiListStatementServer struct {
+ grpc.ServerStream
+}
+
+func (x *gobgpApiListStatementServer) Send(m *ListStatementResponse) error {
+ return x.ServerStream.SendMsg(m)
+}
+
func _GobgpApi_ReplaceStatement_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ReplaceStatementRequest)
if err := dec(in); err != nil {
@@ -8050,290 +7572,299 @@ func _GobgpApi_ReplaceStatement_Handler(srv interface{}, ctx context.Context, de
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_GetPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(GetPolicyRequest)
+func _GobgpApi_AddPolicyAssignment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AddPolicyAssignmentRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).GetPolicy(ctx, in)
+ return srv.(GobgpApiServer).AddPolicyAssignment(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/GetPolicy",
+ FullMethod: "/gobgpapi.GobgpApi/AddPolicyAssignment",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).GetPolicy(ctx, req.(*GetPolicyRequest))
+ return srv.(GobgpApiServer).AddPolicyAssignment(ctx, req.(*AddPolicyAssignmentRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_AddPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(AddPolicyRequest)
+func _GobgpApi_DeletePolicyAssignment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeletePolicyAssignmentRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).AddPolicy(ctx, in)
+ return srv.(GobgpApiServer).DeletePolicyAssignment(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/AddPolicy",
+ FullMethod: "/gobgpapi.GobgpApi/DeletePolicyAssignment",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).AddPolicy(ctx, req.(*AddPolicyRequest))
+ return srv.(GobgpApiServer).DeletePolicyAssignment(ctx, req.(*DeletePolicyAssignmentRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_DeletePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeletePolicyRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GobgpApiServer).DeletePolicy(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/DeletePolicy",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).DeletePolicy(ctx, req.(*DeletePolicyRequest))
+func _GobgpApi_ListPolicyAssignment_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(ListPolicyAssignmentRequest)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
}
- return interceptor(ctx, in, info, handler)
+ return srv.(GobgpApiServer).ListPolicyAssignment(m, &gobgpApiListPolicyAssignmentServer{stream})
}
-func _GobgpApi_ReplacePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ReplacePolicyRequest)
+type GobgpApi_ListPolicyAssignmentServer interface {
+ Send(*ListPolicyAssignmentResponse) error
+ grpc.ServerStream
+}
+
+type gobgpApiListPolicyAssignmentServer struct {
+ grpc.ServerStream
+}
+
+func (x *gobgpApiListPolicyAssignmentServer) Send(m *ListPolicyAssignmentResponse) error {
+ return x.ServerStream.SendMsg(m)
+}
+
+func _GobgpApi_ReplacePolicyAssignment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ReplacePolicyAssignmentRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).ReplacePolicy(ctx, in)
+ return srv.(GobgpApiServer).ReplacePolicyAssignment(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/ReplacePolicy",
+ FullMethod: "/gobgpapi.GobgpApi/ReplacePolicyAssignment",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).ReplacePolicy(ctx, req.(*ReplacePolicyRequest))
+ return srv.(GobgpApiServer).ReplacePolicyAssignment(ctx, req.(*ReplacePolicyAssignmentRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_UpdatePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(UpdatePolicyRequest)
+func _GobgpApi_AddRpki_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AddRpkiRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).UpdatePolicy(ctx, in)
+ return srv.(GobgpApiServer).AddRpki(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/UpdatePolicy",
+ FullMethod: "/gobgpapi.GobgpApi/AddRpki",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).UpdatePolicy(ctx, req.(*UpdatePolicyRequest))
+ return srv.(GobgpApiServer).AddRpki(ctx, req.(*AddRpkiRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_GetPolicyAssignment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(GetPolicyAssignmentRequest)
+func _GobgpApi_DeleteRpki_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteRpkiRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).GetPolicyAssignment(ctx, in)
+ return srv.(GobgpApiServer).DeleteRpki(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/GetPolicyAssignment",
+ FullMethod: "/gobgpapi.GobgpApi/DeleteRpki",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).GetPolicyAssignment(ctx, req.(*GetPolicyAssignmentRequest))
+ return srv.(GobgpApiServer).DeleteRpki(ctx, req.(*DeleteRpkiRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_AddPolicyAssignment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(AddPolicyAssignmentRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GobgpApiServer).AddPolicyAssignment(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/AddPolicyAssignment",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).AddPolicyAssignment(ctx, req.(*AddPolicyAssignmentRequest))
+func _GobgpApi_ListRpki_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(ListRpkiRequest)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
}
- return interceptor(ctx, in, info, handler)
+ return srv.(GobgpApiServer).ListRpki(m, &gobgpApiListRpkiServer{stream})
}
-func _GobgpApi_DeletePolicyAssignment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeletePolicyAssignmentRequest)
+type GobgpApi_ListRpkiServer interface {
+ Send(*ListRpkiResponse) error
+ grpc.ServerStream
+}
+
+type gobgpApiListRpkiServer struct {
+ grpc.ServerStream
+}
+
+func (x *gobgpApiListRpkiServer) Send(m *ListRpkiResponse) error {
+ return x.ServerStream.SendMsg(m)
+}
+
+func _GobgpApi_EnableRpki_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(EnableRpkiRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).DeletePolicyAssignment(ctx, in)
+ return srv.(GobgpApiServer).EnableRpki(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/DeletePolicyAssignment",
+ FullMethod: "/gobgpapi.GobgpApi/EnableRpki",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).DeletePolicyAssignment(ctx, req.(*DeletePolicyAssignmentRequest))
+ return srv.(GobgpApiServer).EnableRpki(ctx, req.(*EnableRpkiRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_ReplacePolicyAssignment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ReplacePolicyAssignmentRequest)
+func _GobgpApi_DisableRpki_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DisableRpkiRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).ReplacePolicyAssignment(ctx, in)
+ return srv.(GobgpApiServer).DisableRpki(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/ReplacePolicyAssignment",
+ FullMethod: "/gobgpapi.GobgpApi/DisableRpki",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).ReplacePolicyAssignment(ctx, req.(*ReplacePolicyAssignmentRequest))
+ return srv.(GobgpApiServer).DisableRpki(ctx, req.(*DisableRpkiRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_GetRibInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(GetRibInfoRequest)
+func _GobgpApi_ResetRpki_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ResetRpkiRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).GetRibInfo(ctx, in)
+ return srv.(GobgpApiServer).ResetRpki(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/GetRibInfo",
+ FullMethod: "/gobgpapi.GobgpApi/ResetRpki",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).GetRibInfo(ctx, req.(*GetRibInfoRequest))
+ return srv.(GobgpApiServer).ResetRpki(ctx, req.(*ResetRpkiRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_AddPeerGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(AddPeerGroupRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GobgpApiServer).AddPeerGroup(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/AddPeerGroup",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).AddPeerGroup(ctx, req.(*AddPeerGroupRequest))
+func _GobgpApi_ListRpkiTable_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(ListRpkiTableRequest)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
}
- return interceptor(ctx, in, info, handler)
+ return srv.(GobgpApiServer).ListRpkiTable(m, &gobgpApiListRpkiTableServer{stream})
}
-func _GobgpApi_DeletePeerGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeletePeerGroupRequest)
+type GobgpApi_ListRpkiTableServer interface {
+ Send(*ListRpkiTableResponse) error
+ grpc.ServerStream
+}
+
+type gobgpApiListRpkiTableServer struct {
+ grpc.ServerStream
+}
+
+func (x *gobgpApiListRpkiTableServer) Send(m *ListRpkiTableResponse) error {
+ return x.ServerStream.SendMsg(m)
+}
+
+func _GobgpApi_EnableZebra_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(EnableZebraRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).DeletePeerGroup(ctx, in)
+ return srv.(GobgpApiServer).EnableZebra(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/DeletePeerGroup",
+ FullMethod: "/gobgpapi.GobgpApi/EnableZebra",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).DeletePeerGroup(ctx, req.(*DeletePeerGroupRequest))
+ return srv.(GobgpApiServer).EnableZebra(ctx, req.(*EnableZebraRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_UpdatePeerGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(UpdatePeerGroupRequest)
+func _GobgpApi_EnableMrt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(EnableMrtRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).UpdatePeerGroup(ctx, in)
+ return srv.(GobgpApiServer).EnableMrt(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/UpdatePeerGroup",
+ FullMethod: "/gobgpapi.GobgpApi/EnableMrt",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).UpdatePeerGroup(ctx, req.(*UpdatePeerGroupRequest))
+ return srv.(GobgpApiServer).EnableMrt(ctx, req.(*EnableMrtRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_AddDynamicNeighbor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(AddDynamicNeighborRequest)
+func _GobgpApi_DisableMrt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DisableMrtRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).AddDynamicNeighbor(ctx, in)
+ return srv.(GobgpApiServer).DisableMrt(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/AddDynamicNeighbor",
+ FullMethod: "/gobgpapi.GobgpApi/DisableMrt",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).AddDynamicNeighbor(ctx, req.(*AddDynamicNeighborRequest))
+ return srv.(GobgpApiServer).DisableMrt(ctx, req.(*DisableMrtRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_AddCollector_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(AddCollectorRequest)
+func _GobgpApi_AddBmp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AddBmpRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).AddCollector(ctx, in)
+ return srv.(GobgpApiServer).AddBmp(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/AddCollector",
+ FullMethod: "/gobgpapi.GobgpApi/AddBmp",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).AddCollector(ctx, req.(*AddCollectorRequest))
+ return srv.(GobgpApiServer).AddBmp(ctx, req.(*AddBmpRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _GobgpApi_Shutdown_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ShutdownRequest)
+func _GobgpApi_DeleteBmp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteBmpRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(GobgpApiServer).Shutdown(ctx, in)
+ return srv.(GobgpApiServer).DeleteBmp(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/gobgpapi.GobgpApi/Shutdown",
+ FullMethod: "/gobgpapi.GobgpApi/DeleteBmp",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GobgpApiServer).Shutdown(ctx, req.(*ShutdownRequest))
+ return srv.(GobgpApiServer).DeleteBmp(ctx, req.(*DeleteBmpRequest))
}
return interceptor(ctx, in, info, handler)
}
@@ -8343,60 +7874,60 @@ var _GobgpApi_serviceDesc = grpc.ServiceDesc{
HandlerType: (*GobgpApiServer)(nil),
Methods: []grpc.MethodDesc{
{
- MethodName: "StartServer",
- Handler: _GobgpApi_StartServer_Handler,
+ MethodName: "StartBgp",
+ Handler: _GobgpApi_StartBgp_Handler,
},
{
- MethodName: "StopServer",
- Handler: _GobgpApi_StopServer_Handler,
+ MethodName: "StopBgp",
+ Handler: _GobgpApi_StopBgp_Handler,
},
{
- MethodName: "GetServer",
- Handler: _GobgpApi_GetServer_Handler,
+ MethodName: "GetBgp",
+ Handler: _GobgpApi_GetBgp_Handler,
},
{
- MethodName: "AddNeighbor",
- Handler: _GobgpApi_AddNeighbor_Handler,
+ MethodName: "AddPeer",
+ Handler: _GobgpApi_AddPeer_Handler,
},
{
- MethodName: "DeleteNeighbor",
- Handler: _GobgpApi_DeleteNeighbor_Handler,
+ MethodName: "DeletePeer",
+ Handler: _GobgpApi_DeletePeer_Handler,
},
{
- MethodName: "UpdateNeighbor",
- Handler: _GobgpApi_UpdateNeighbor_Handler,
+ MethodName: "UpdatePeer",
+ Handler: _GobgpApi_UpdatePeer_Handler,
},
{
- MethodName: "GetNeighbor",
- Handler: _GobgpApi_GetNeighbor_Handler,
+ MethodName: "ResetPeer",
+ Handler: _GobgpApi_ResetPeer_Handler,
},
{
- MethodName: "ResetNeighbor",
- Handler: _GobgpApi_ResetNeighbor_Handler,
+ MethodName: "ShutdownPeer",
+ Handler: _GobgpApi_ShutdownPeer_Handler,
},
{
- MethodName: "SoftResetNeighbor",
- Handler: _GobgpApi_SoftResetNeighbor_Handler,
+ MethodName: "EnablePeer",
+ Handler: _GobgpApi_EnablePeer_Handler,
},
{
- MethodName: "ShutdownNeighbor",
- Handler: _GobgpApi_ShutdownNeighbor_Handler,
+ MethodName: "DisablePeer",
+ Handler: _GobgpApi_DisablePeer_Handler,
},
{
- MethodName: "EnableNeighbor",
- Handler: _GobgpApi_EnableNeighbor_Handler,
+ MethodName: "AddPeerGroup",
+ Handler: _GobgpApi_AddPeerGroup_Handler,
},
{
- MethodName: "DisableNeighbor",
- Handler: _GobgpApi_DisableNeighbor_Handler,
+ MethodName: "DeletePeerGroup",
+ Handler: _GobgpApi_DeletePeerGroup_Handler,
},
{
- MethodName: "GetRib",
- Handler: _GobgpApi_GetRib_Handler,
+ MethodName: "UpdatePeerGroup",
+ Handler: _GobgpApi_UpdatePeerGroup_Handler,
},
{
- MethodName: "ValidateRib",
- Handler: _GobgpApi_ValidateRib_Handler,
+ MethodName: "AddDynamicNeighbor",
+ Handler: _GobgpApi_AddDynamicNeighbor_Handler,
},
{
MethodName: "AddPath",
@@ -8407,56 +7938,8 @@ var _GobgpApi_serviceDesc = grpc.ServiceDesc{
Handler: _GobgpApi_DeletePath_Handler,
},
{
- MethodName: "EnableMrt",
- Handler: _GobgpApi_EnableMrt_Handler,
- },
- {
- MethodName: "DisableMrt",
- Handler: _GobgpApi_DisableMrt_Handler,
- },
- {
- MethodName: "AddBmp",
- Handler: _GobgpApi_AddBmp_Handler,
- },
- {
- MethodName: "DeleteBmp",
- Handler: _GobgpApi_DeleteBmp_Handler,
- },
- {
- MethodName: "GetRpki",
- Handler: _GobgpApi_GetRpki_Handler,
- },
- {
- MethodName: "AddRpki",
- Handler: _GobgpApi_AddRpki_Handler,
- },
- {
- MethodName: "DeleteRpki",
- Handler: _GobgpApi_DeleteRpki_Handler,
- },
- {
- MethodName: "EnableRpki",
- Handler: _GobgpApi_EnableRpki_Handler,
- },
- {
- MethodName: "DisableRpki",
- Handler: _GobgpApi_DisableRpki_Handler,
- },
- {
- MethodName: "ResetRpki",
- Handler: _GobgpApi_ResetRpki_Handler,
- },
- {
- MethodName: "SoftResetRpki",
- Handler: _GobgpApi_SoftResetRpki_Handler,
- },
- {
- MethodName: "GetRoa",
- Handler: _GobgpApi_GetRoa_Handler,
- },
- {
- MethodName: "EnableZebra",
- Handler: _GobgpApi_EnableZebra_Handler,
+ MethodName: "GetTable",
+ Handler: _GobgpApi_GetTable_Handler,
},
{
MethodName: "AddVrf",
@@ -8467,12 +7950,20 @@ var _GobgpApi_serviceDesc = grpc.ServiceDesc{
Handler: _GobgpApi_DeleteVrf_Handler,
},
{
- MethodName: "GetVrf",
- Handler: _GobgpApi_GetVrf_Handler,
+ MethodName: "AddPolicy",
+ Handler: _GobgpApi_AddPolicy_Handler,
+ },
+ {
+ MethodName: "DeletePolicy",
+ Handler: _GobgpApi_DeletePolicy_Handler,
+ },
+ {
+ MethodName: "ReplacePolicy",
+ Handler: _GobgpApi_ReplacePolicy_Handler,
},
{
- MethodName: "GetDefinedSet",
- Handler: _GobgpApi_GetDefinedSet_Handler,
+ MethodName: "UpdatePolicy",
+ Handler: _GobgpApi_UpdatePolicy_Handler,
},
{
MethodName: "AddDefinedSet",
@@ -8487,10 +7978,6 @@ var _GobgpApi_serviceDesc = grpc.ServiceDesc{
Handler: _GobgpApi_ReplaceDefinedSet_Handler,
},
{
- MethodName: "GetStatement",
- Handler: _GobgpApi_GetStatement_Handler,
- },
- {
MethodName: "AddStatement",
Handler: _GobgpApi_AddStatement_Handler,
},
@@ -8503,90 +7990,118 @@ var _GobgpApi_serviceDesc = grpc.ServiceDesc{
Handler: _GobgpApi_ReplaceStatement_Handler,
},
{
- MethodName: "GetPolicy",
- Handler: _GobgpApi_GetPolicy_Handler,
+ MethodName: "AddPolicyAssignment",
+ Handler: _GobgpApi_AddPolicyAssignment_Handler,
},
{
- MethodName: "AddPolicy",
- Handler: _GobgpApi_AddPolicy_Handler,
+ MethodName: "DeletePolicyAssignment",
+ Handler: _GobgpApi_DeletePolicyAssignment_Handler,
},
{
- MethodName: "DeletePolicy",
- Handler: _GobgpApi_DeletePolicy_Handler,
+ MethodName: "ReplacePolicyAssignment",
+ Handler: _GobgpApi_ReplacePolicyAssignment_Handler,
},
{
- MethodName: "ReplacePolicy",
- Handler: _GobgpApi_ReplacePolicy_Handler,
+ MethodName: "AddRpki",
+ Handler: _GobgpApi_AddRpki_Handler,
},
{
- MethodName: "UpdatePolicy",
- Handler: _GobgpApi_UpdatePolicy_Handler,
+ MethodName: "DeleteRpki",
+ Handler: _GobgpApi_DeleteRpki_Handler,
},
{
- MethodName: "GetPolicyAssignment",
- Handler: _GobgpApi_GetPolicyAssignment_Handler,
+ MethodName: "EnableRpki",
+ Handler: _GobgpApi_EnableRpki_Handler,
},
{
- MethodName: "AddPolicyAssignment",
- Handler: _GobgpApi_AddPolicyAssignment_Handler,
+ MethodName: "DisableRpki",
+ Handler: _GobgpApi_DisableRpki_Handler,
},
{
- MethodName: "DeletePolicyAssignment",
- Handler: _GobgpApi_DeletePolicyAssignment_Handler,
+ MethodName: "ResetRpki",
+ Handler: _GobgpApi_ResetRpki_Handler,
},
{
- MethodName: "ReplacePolicyAssignment",
- Handler: _GobgpApi_ReplacePolicyAssignment_Handler,
+ MethodName: "EnableZebra",
+ Handler: _GobgpApi_EnableZebra_Handler,
+ },
+ {
+ MethodName: "EnableMrt",
+ Handler: _GobgpApi_EnableMrt_Handler,
},
{
- MethodName: "GetRibInfo",
- Handler: _GobgpApi_GetRibInfo_Handler,
+ MethodName: "DisableMrt",
+ Handler: _GobgpApi_DisableMrt_Handler,
},
{
- MethodName: "AddPeerGroup",
- Handler: _GobgpApi_AddPeerGroup_Handler,
+ MethodName: "AddBmp",
+ Handler: _GobgpApi_AddBmp_Handler,
},
{
- MethodName: "DeletePeerGroup",
- Handler: _GobgpApi_DeletePeerGroup_Handler,
+ MethodName: "DeleteBmp",
+ Handler: _GobgpApi_DeleteBmp_Handler,
},
+ },
+ Streams: []grpc.StreamDesc{
{
- MethodName: "UpdatePeerGroup",
- Handler: _GobgpApi_UpdatePeerGroup_Handler,
+ StreamName: "ListPeer",
+ Handler: _GobgpApi_ListPeer_Handler,
+ ServerStreams: true,
},
{
- MethodName: "AddDynamicNeighbor",
- Handler: _GobgpApi_AddDynamicNeighbor_Handler,
+ StreamName: "MonitorPeer",
+ Handler: _GobgpApi_MonitorPeer_Handler,
+ ServerStreams: true,
},
{
- MethodName: "AddCollector",
- Handler: _GobgpApi_AddCollector_Handler,
+ StreamName: "ListPath",
+ Handler: _GobgpApi_ListPath_Handler,
+ ServerStreams: true,
},
{
- MethodName: "Shutdown",
- Handler: _GobgpApi_Shutdown_Handler,
+ StreamName: "AddPathStream",
+ Handler: _GobgpApi_AddPathStream_Handler,
+ ClientStreams: true,
},
- },
- Streams: []grpc.StreamDesc{
{
- StreamName: "GetPath",
- Handler: _GobgpApi_GetPath_Handler,
+ StreamName: "MonitorTable",
+ Handler: _GobgpApi_MonitorTable_Handler,
ServerStreams: true,
},
{
- StreamName: "MonitorRib",
- Handler: _GobgpApi_MonitorRib_Handler,
+ StreamName: "ListVrf",
+ Handler: _GobgpApi_ListVrf_Handler,
ServerStreams: true,
},
{
- StreamName: "MonitorPeerState",
- Handler: _GobgpApi_MonitorPeerState_Handler,
+ StreamName: "ListPolicy",
+ Handler: _GobgpApi_ListPolicy_Handler,
ServerStreams: true,
},
{
- StreamName: "InjectMrt",
- Handler: _GobgpApi_InjectMrt_Handler,
- ClientStreams: true,
+ StreamName: "ListDefinedSet",
+ Handler: _GobgpApi_ListDefinedSet_Handler,
+ ServerStreams: true,
+ },
+ {
+ StreamName: "ListStatement",
+ Handler: _GobgpApi_ListStatement_Handler,
+ ServerStreams: true,
+ },
+ {
+ StreamName: "ListPolicyAssignment",
+ Handler: _GobgpApi_ListPolicyAssignment_Handler,
+ ServerStreams: true,
+ },
+ {
+ StreamName: "ListRpki",
+ Handler: _GobgpApi_ListRpki_Handler,
+ ServerStreams: true,
+ },
+ {
+ StreamName: "ListRpkiTable",
+ Handler: _GobgpApi_ListRpkiTable_Handler,
+ ServerStreams: true,
},
},
Metadata: "gobgp.proto",
@@ -8595,526 +8110,487 @@ var _GobgpApi_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("gobgp.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
- // 8330 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x4d, 0x6f, 0x24, 0x47,
- 0x96, 0x18, 0xeb, 0x83, 0xc5, 0xaa, 0x57, 0x55, 0xac, 0x64, 0x90, 0x6c, 0x56, 0x93, 0xea, 0xaf,
- 0x1c, 0xb5, 0xba, 0xd5, 0x92, 0x28, 0x75, 0x4b, 0xa2, 0xb4, 0xd2, 0xf4, 0xec, 0x54, 0x93, 0xd5,
- 0xec, 0x5a, 0x91, 0xac, 0x52, 0xb2, 0xba, 0xa7, 0x35, 0xde, 0x71, 0x3a, 0x59, 0x19, 0x55, 0x4c,
- 0xab, 0x2a, 0x33, 0x27, 0x33, 0x8b, 0x22, 0x61, 0xc0, 0xee, 0x9e, 0xdd, 0x19, 0x1b, 0x30, 0xf6,
- 0x62, 0x1f, 0x6d, 0xc3, 0x07, 0x5f, 0x8c, 0x85, 0x7d, 0x30, 0xb0, 0x86, 0x01, 0x5f, 0xfc, 0x01,
- 0xef, 0xc2, 0xf0, 0x02, 0x3e, 0xfa, 0x68, 0xff, 0x00, 0x9f, 0x7c, 0x31, 0x0c, 0x9f, 0x8c, 0xf8,
- 0xca, 0x8c, 0xfc, 0x28, 0x92, 0xdd, 0xdb, 0x5a, 0x79, 0x81, 0x39, 0xb1, 0xf2, 0xbd, 0x17, 0x2f,
- 0x5e, 0x44, 0xbc, 0x88, 0xf7, 0x5e, 0x7c, 0x3c, 0x42, 0x75, 0xe4, 0x1c, 0x8d, 0xdc, 0x4d, 0xd7,
- 0x73, 0x02, 0x07, 0x95, 0xe9, 0x87, 0xe1, 0x5a, 0xeb, 0x57, 0x47, 0x8e, 0x33, 0x1a, 0xe3, 0x0f,
- 0x29, 0xfc, 0x68, 0x3a, 0xfc, 0xd0, 0xb0, 0xcf, 0x18, 0x91, 0xfa, 0x73, 0x40, 0xbb, 0x38, 0x38,
- 0xc0, 0xd6, 0xe8, 0xf8, 0xc8, 0xf1, 0x34, 0xfc, 0xcb, 0x29, 0xf6, 0x03, 0x74, 0x0f, 0x14, 0x6c,
- 0x1b, 0x47, 0x63, 0xdc, 0x32, 0x4f, 0xb0, 0x17, 0x58, 0x3e, 0x36, 0x9b, 0xb9, 0x9b, 0xb9, 0xbb,
- 0x65, 0x2d, 0x05, 0x47, 0x4d, 0x58, 0x30, 0x4c, 0xd3, 0xc3, 0xbe, 0xdf, 0xcc, 0xdf, 0xcc, 0xdd,
- 0xad, 0x68, 0xe2, 0x53, 0xfd, 0x12, 0x96, 0x63, 0xbc, 0x7d, 0xd7, 0xb1, 0x7d, 0x8c, 0xde, 0x86,
- 0x79, 0x17, 0x63, 0xcf, 0x6f, 0xe6, 0x6e, 0x16, 0xee, 0x56, 0x1f, 0x2c, 0x6e, 0x0a, 0x39, 0x37,
- 0x7b, 0x18, 0x7b, 0x1a, 0x43, 0xaa, 0x2f, 0x73, 0x50, 0x69, 0x79, 0xa3, 0xe9, 0x04, 0xdb, 0x81,
- 0x8f, 0x36, 0xa1, 0xec, 0x61, 0xdf, 0x99, 0x7a, 0x03, 0x4c, 0x05, 0x59, 0x7c, 0x80, 0xa2, 0x62,
- 0x1a, 0xc7, 0x68, 0x21, 0x0d, 0xba, 0x02, 0xa5, 0xa1, 0x31, 0xb1, 0xc6, 0x67, 0x54, 0xa6, 0xba,
- 0xc6, 0xbf, 0x10, 0x82, 0xa2, 0x6d, 0x4c, 0x70, 0xb3, 0x40, 0x25, 0xa5, 0xbf, 0x49, 0x03, 0x06,
- 0x53, 0xcf, 0xc3, 0x76, 0xd0, 0x2c, 0xd2, 0x36, 0x8a, 0x4f, 0xf5, 0x6f, 0xc1, 0x62, 0xcb, 0x34,
- 0x7b, 0x46, 0x70, 0x2c, 0x3a, 0xe6, 0x55, 0xe5, 0x58, 0x85, 0xd2, 0x89, 0x37, 0xd4, 0x2d, 0x93,
- 0xf7, 0xcd, 0xfc, 0x89, 0x37, 0xec, 0x98, 0x48, 0x85, 0xa2, 0x6b, 0x04, 0xc7, 0x54, 0x8c, 0x78,
- 0x0f, 0x90, 0xba, 0x28, 0x4e, 0xbd, 0x0d, 0x8d, 0xb0, 0x72, 0xde, 0x73, 0x08, 0x8a, 0xd3, 0xa9,
- 0xc5, 0x86, 0xa2, 0xa6, 0xd1, 0xdf, 0xea, 0x1f, 0xe7, 0x60, 0x69, 0x07, 0x8f, 0x71, 0x80, 0xbf,
- 0x07, 0x39, 0xa3, 0x6e, 0x2c, 0xc4, 0xba, 0x51, 0xc8, 0x5f, 0x9c, 0x2d, 0x7f, 0x28, 0xec, 0xbc,
- 0x24, 0xec, 0x0a, 0x20, 0x59, 0x56, 0xd6, 0x2c, 0xf5, 0x73, 0x40, 0x2d, 0xd3, 0x4c, 0xea, 0x20,
- 0xa9, 0x03, 0x63, 0x8f, 0x8a, 0x9f, 0xd6, 0x12, 0x8a, 0x53, 0x57, 0x61, 0x39, 0x56, 0x92, 0x33,
- 0xfc, 0x12, 0x56, 0x59, 0x35, 0xaf, 0xc3, 0xb3, 0x09, 0x57, 0x92, 0x85, 0x39, 0x5b, 0x13, 0x56,
- 0x9f, 0xba, 0xa6, 0xf1, 0x5a, 0x6c, 0xd1, 0x1d, 0x50, 0x4c, 0x47, 0xf7, 0x9d, 0x61, 0xa0, 0x7b,
- 0xd8, 0xc7, 0x81, 0x6e, 0xd9, 0xb4, 0xaf, 0xcb, 0x5a, 0xdd, 0x74, 0x0e, 0x9d, 0x61, 0xa0, 0x11,
- 0x68, 0xc7, 0x56, 0x77, 0xe1, 0x4a, 0xb2, 0x16, 0x3e, 0xfc, 0x1f, 0xc0, 0xb2, 0x8d, 0xb1, 0xe9,
- 0x27, 0xb8, 0xf0, 0x89, 0x49, 0x51, 0x32, 0xa3, 0x0e, 0xed, 0x1c, 0x22, 0xc2, 0xae, 0xe7, 0x4c,
- 0x5d, 0x21, 0xec, 0x03, 0x00, 0x22, 0x90, 0x3e, 0x22, 0x40, 0x2e, 0xf2, 0x72, 0x5c, 0x64, 0x46,
- 0x5f, 0x71, 0xc5, 0x4f, 0xf5, 0x0a, 0xac, 0xc4, 0x59, 0xf1, 0x1e, 0xd9, 0x13, 0x7d, 0xf5, 0x46,
- 0x6a, 0xb9, 0x0a, 0x6b, 0x29, 0x6e, 0xbc, 0xa2, 0xa9, 0xe8, 0x94, 0x37, 0x51, 0xd1, 0xe5, 0xc7,
- 0xe2, 0x09, 0xac, 0xa5, 0xaa, 0x7d, 0xbd, 0xc1, 0x30, 0xe0, 0x6a, 0xcb, 0x34, 0x77, 0xce, 0x6c,
- 0x63, 0x62, 0x0d, 0x92, 0xfa, 0xb3, 0x03, 0x8a, 0xc9, 0x30, 0xba, 0xcd, 0x51, 0xbc, 0x25, 0x57,
- 0xa3, 0x96, 0x24, 0xcb, 0x36, 0xcc, 0x38, 0x40, 0x7d, 0x0b, 0xd6, 0xb3, 0xaa, 0xe0, 0x3d, 0xf8,
- 0x0c, 0x56, 0xa8, 0x2c, 0xc9, 0xba, 0xa5, 0xe5, 0x3b, 0x17, 0x5b, 0xbe, 0xd1, 0xdb, 0x50, 0x1f,
- 0x38, 0x93, 0xc9, 0xd4, 0xb6, 0x06, 0x46, 0x60, 0x39, 0x36, 0x5f, 0x1a, 0xe2, 0x40, 0x75, 0x0d,
- 0x56, 0x13, 0x7c, 0x79, 0x85, 0xff, 0x36, 0x07, 0xcd, 0xb0, 0x07, 0x2e, 0x5f, 0xeb, 0x21, 0x54,
- 0x4c, 0xcb, 0xc3, 0x83, 0xb0, 0xc6, 0xc5, 0x07, 0x9f, 0x46, 0x9d, 0x30, 0x8b, 0x61, 0x84, 0xd8,
- 0x11, 0x85, 0xb5, 0x88, 0x8f, 0xfa, 0x21, 0xa0, 0x34, 0x01, 0x2a, 0x41, 0xbe, 0x73, 0xa0, 0xcc,
- 0xa1, 0x05, 0x28, 0x74, 0x9f, 0xf6, 0x95, 0x1c, 0x2a, 0x43, 0xf1, 0x51, 0xb7, 0xff, 0x44, 0xc9,
- 0xab, 0x1b, 0x70, 0x35, 0xa3, 0x2a, 0xde, 0xb2, 0x6f, 0x60, 0xed, 0xf0, 0x78, 0x1a, 0x98, 0xce,
- 0x77, 0xf6, 0x9b, 0xee, 0xcd, 0x75, 0x68, 0xa6, 0x59, 0xf3, 0x6a, 0xef, 0xc3, 0x6a, 0x9b, 0x1a,
- 0xdf, 0x4b, 0x57, 0x4a, 0xd6, 0xb2, 0x64, 0x11, 0xce, 0xec, 0x39, 0x5c, 0xd9, 0xb1, 0xfc, 0x57,
- 0xe2, 0x76, 0xc9, 0x26, 0x90, 0x59, 0x9c, 0xe4, 0xcc, 0x2b, 0x9d, 0xc0, 0x32, 0x9f, 0x4e, 0xce,
- 0xd8, 0x1a, 0x9c, 0x89, 0x1a, 0xef, 0x42, 0xd1, 0xc7, 0x81, 0xf0, 0x07, 0x56, 0x24, 0x95, 0xc7,
- 0x43, 0xcb, 0xc6, 0xe6, 0x21, 0x0e, 0x34, 0x4a, 0x81, 0xde, 0x87, 0xb2, 0x4b, 0x8a, 0x5a, 0x98,
- 0x38, 0x1b, 0x84, 0x5a, 0x91, 0xa6, 0x3a, 0x63, 0x1a, 0x52, 0x90, 0x55, 0x2b, 0x5e, 0x1d, 0x17,
- 0x63, 0x04, 0x0a, 0xeb, 0x95, 0x7d, 0x2f, 0x10, 0x32, 0x6c, 0x40, 0xc5, 0x9c, 0x4e, 0x5c, 0x3d,
- 0x38, 0x73, 0x99, 0xc5, 0x9c, 0xd7, 0xca, 0x04, 0xd0, 0x3f, 0x73, 0x31, 0x5a, 0x87, 0xf2, 0xd0,
- 0x1a, 0x63, 0xea, 0x39, 0xb0, 0x36, 0x87, 0xdf, 0x04, 0x67, 0xd9, 0x01, 0xf6, 0x4e, 0x8c, 0x31,
- 0x35, 0x92, 0x45, 0x2d, 0xfc, 0x56, 0x97, 0x61, 0x49, 0xaa, 0x88, 0xd7, 0xbe, 0x0c, 0x4b, 0xbc,
- 0x7f, 0xa2, 0xea, 0xa9, 0x61, 0x94, 0x80, 0x9c, 0xf4, 0xef, 0x80, 0xd2, 0xb1, 0xff, 0x26, 0x1e,
- 0x04, 0x92, 0xa0, 0x6f, 0xc8, 0xb2, 0x13, 0x27, 0xcc, 0x08, 0x8e, 0xfd, 0x66, 0x21, 0xe5, 0x84,
- 0x11, 0xd3, 0xcc, 0x90, 0x44, 0x56, 0x49, 0x00, 0x2e, 0xd5, 0xbf, 0xcf, 0x41, 0xbd, 0x65, 0x9a,
- 0x8f, 0x26, 0xee, 0xc5, 0x2a, 0x83, 0xa0, 0xe8, 0x3a, 0x5e, 0xc0, 0xbd, 0x30, 0xfa, 0x1b, 0xfd,
- 0x18, 0x8a, 0xb4, 0x97, 0x0b, 0x54, 0xfa, 0xbb, 0x51, 0xcd, 0x31, 0xa6, 0x9b, 0xfb, 0x8e, 0x6d,
- 0x05, 0x8e, 0x67, 0xd9, 0x23, 0x3e, 0x7c, 0xb4, 0x94, 0xba, 0x0d, 0x4a, 0x12, 0x43, 0x26, 0x70,
- 0x4f, 0x6b, 0x2b, 0x73, 0x64, 0x02, 0xf7, 0xba, 0x87, 0xb1, 0xa9, 0x8c, 0x2a, 0x30, 0xbf, 0xd7,
- 0xdd, 0x6e, 0xed, 0x29, 0x05, 0x42, 0xd7, 0xda, 0xdb, 0x53, 0x8a, 0xaa, 0x42, 0x1d, 0x3b, 0x5a,
- 0x19, 0x6f, 0xd4, 0x4f, 0x41, 0x61, 0xb6, 0xe7, 0x75, 0x9b, 0x45, 0xc7, 0x35, 0xe2, 0xc0, 0xd9,
- 0xf6, 0x61, 0x89, 0x4b, 0xab, 0x59, 0x47, 0x82, 0xef, 0x6d, 0x98, 0x0f, 0xc8, 0x50, 0xf3, 0x35,
- 0xbe, 0x11, 0xf5, 0x40, 0x9f, 0x80, 0x35, 0x86, 0x95, 0xfd, 0xd2, 0x7c, 0xdc, 0x2f, 0x6d, 0x43,
- 0x59, 0xeb, 0x7d, 0xd5, 0xd9, 0x76, 0xec, 0xe1, 0x39, 0x42, 0xde, 0x80, 0xaa, 0x87, 0x27, 0x4e,
- 0x80, 0xf5, 0x50, 0xd6, 0x8a, 0x06, 0x0c, 0xd4, 0x23, 0x12, 0xff, 0xe3, 0x22, 0x54, 0x08, 0x9f,
- 0xc3, 0xc0, 0x08, 0xa8, 0xcb, 0x3c, 0x75, 0x03, 0x6b, 0xc2, 0xc4, 0x2a, 0x68, 0xfc, 0x8b, 0x28,
- 0x38, 0x59, 0x8e, 0x28, 0x26, 0x4f, 0x31, 0xe1, 0x37, 0x5a, 0x84, 0xfc, 0xd4, 0xa5, 0x03, 0x59,
- 0xd6, 0xf2, 0x53, 0x97, 0x55, 0x39, 0x70, 0x3c, 0x53, 0xb7, 0xdc, 0x93, 0x4f, 0xa8, 0x7b, 0x58,
- 0x27, 0x55, 0x12, 0x50, 0xc7, 0x3d, 0xf9, 0x24, 0x4e, 0xb0, 0x45, 0x7d, 0x43, 0x99, 0x60, 0x8b,
- 0x10, 0xb8, 0x1e, 0x1e, 0x5a, 0xa7, 0x8c, 0x43, 0x89, 0x11, 0x30, 0x90, 0xe0, 0x10, 0x11, 0x6c,
- 0x35, 0x17, 0x12, 0x04, 0x5b, 0xa4, 0x1d, 0x3e, 0xf6, 0x2c, 0x63, 0xdc, 0x2c, 0x33, 0x9f, 0x95,
- 0x7d, 0xa1, 0x1f, 0x41, 0xdd, 0xc3, 0x03, 0x6c, 0x9d, 0x60, 0x2e, 0x5d, 0x85, 0x36, 0xa6, 0x26,
- 0x80, 0x94, 0x7b, 0x82, 0x68, 0xab, 0x09, 0x29, 0xa2, 0x2d, 0x42, 0xc4, 0x78, 0xea, 0xb6, 0x13,
- 0x58, 0xc3, 0xb3, 0x66, 0x95, 0x11, 0x31, 0xe0, 0x01, 0x85, 0x11, 0x39, 0x07, 0xc6, 0xe0, 0x18,
- 0x33, 0xd7, 0xa0, 0x59, 0xa3, 0x24, 0x40, 0x41, 0xd4, 0xaa, 0xa0, 0xdb, 0xb0, 0x18, 0x12, 0x50,
- 0x65, 0x69, 0xd6, 0x29, 0x4d, 0x5d, 0xd0, 0x30, 0x3f, 0xe3, 0x3a, 0x54, 0xb1, 0x6d, 0xea, 0xce,
- 0x50, 0x37, 0x8d, 0xc0, 0x68, 0x2e, 0x52, 0x9a, 0x0a, 0xb6, 0xcd, 0xee, 0x70, 0xc7, 0x08, 0x0c,
- 0xb4, 0x02, 0xf3, 0xd8, 0xf3, 0x1c, 0xaf, 0xd9, 0xa0, 0x18, 0xf6, 0x81, 0x6e, 0x01, 0x97, 0x46,
- 0xff, 0xe5, 0x14, 0x7b, 0x67, 0x4d, 0x85, 0x22, 0xab, 0x0c, 0xf6, 0x35, 0x01, 0xb1, 0xa1, 0x20,
- 0x5e, 0x0b, 0xa3, 0x58, 0x62, 0x02, 0x52, 0x10, 0x25, 0x50, 0xbf, 0x81, 0xa2, 0xe6, 0x7e, 0x6b,
- 0xa1, 0x77, 0xa0, 0x38, 0x70, 0xec, 0x21, 0xd7, 0x56, 0x79, 0xb5, 0xe1, 0x3a, 0xa8, 0x51, 0x3c,
- 0x7a, 0x17, 0xe6, 0x7d, 0xa2, 0x49, 0x54, 0x4b, 0x62, 0x4e, 0x58, 0xa8, 0x64, 0x1a, 0xa3, 0x50,
- 0xef, 0xc2, 0xe2, 0x2e, 0x0e, 0x08, 0x77, 0x31, 0x27, 0xa2, 0x48, 0x23, 0x27, 0x47, 0x1a, 0xea,
- 0x97, 0xd0, 0x08, 0x29, 0x79, 0x8f, 0xdc, 0x85, 0x05, 0x1f, 0x7b, 0x27, 0x99, 0x11, 0x24, 0x25,
- 0x14, 0x68, 0xf5, 0xe7, 0x74, 0x9a, 0xcb, 0xd5, 0xbc, 0xda, 0x4a, 0xb5, 0x0e, 0xe5, 0xb1, 0x35,
- 0xc4, 0x54, 0xf5, 0x0b, 0x4c, 0xf5, 0xc5, 0xb7, 0xba, 0x44, 0xc3, 0x33, 0x59, 0x30, 0xb5, 0x25,
- 0x56, 0x80, 0xd7, 0xae, 0x31, 0x0a, 0x90, 0x62, 0x8c, 0x3f, 0x10, 0x76, 0xe4, 0x52, 0x8c, 0x09,
- 0x13, 0x99, 0x9c, 0x33, 0xd9, 0x0c, 0x4d, 0xcc, 0xe5, 0xb8, 0xac, 0xc2, 0x72, 0x8c, 0x9e, 0xb3,
- 0x79, 0x1f, 0x14, 0xaa, 0xbf, 0x97, 0x63, 0xb2, 0x0c, 0x4b, 0x12, 0x35, 0x67, 0xf1, 0x11, 0xac,
- 0x84, 0xce, 0xd5, 0xe5, 0xd8, 0xac, 0xc1, 0x6a, 0xa2, 0x04, 0x67, 0xf5, 0xe7, 0x39, 0xd1, 0xd6,
- 0x9f, 0xe3, 0x23, 0xcf, 0x10, 0x9c, 0x14, 0x28, 0x4c, 0xbd, 0x31, 0xe7, 0x42, 0x7e, 0x52, 0x6d,
- 0x77, 0xa6, 0x01, 0xa6, 0x06, 0x9e, 0x39, 0x0f, 0x64, 0x31, 0x24, 0x20, 0x62, 0xe2, 0x7d, 0x52,
- 0x39, 0xd1, 0x19, 0xe2, 0xd6, 0xb0, 0x58, 0x57, 0x7c, 0xa2, 0x4f, 0xe0, 0x8a, 0x8d, 0x4f, 0x83,
- 0x63, 0xc7, 0xd5, 0x03, 0xcf, 0x1a, 0x8d, 0xb0, 0xa7, 0xb3, 0x4d, 0x10, 0xbe, 0x5d, 0xb0, 0xc2,
- 0xb1, 0x7d, 0x86, 0x64, 0xe2, 0xa0, 0x07, 0xb0, 0x9a, 0x2c, 0x65, 0xe2, 0xb1, 0x71, 0xc6, 0xd7,
- 0xbc, 0xe5, 0x78, 0xa1, 0x1d, 0x82, 0x22, 0x5d, 0x1e, 0x6b, 0x0c, 0x6f, 0x64, 0x03, 0xea, 0xbb,
- 0x38, 0x78, 0xe6, 0x0d, 0x85, 0xb7, 0xf0, 0x31, 0x9d, 0x3e, 0x14, 0xc0, 0xe7, 0xc4, 0x2d, 0x28,
- 0x9e, 0x78, 0x43, 0x31, 0x21, 0xea, 0xd1, 0x84, 0x20, 0x44, 0x14, 0xa5, 0x7e, 0x44, 0xad, 0x76,
- 0xc4, 0x05, 0xdd, 0x80, 0xc2, 0x89, 0x27, 0xa6, 0x75, 0xa2, 0x08, 0xc1, 0x70, 0x2b, 0x29, 0x55,
- 0xa3, 0x7e, 0x2c, 0xac, 0xe4, 0xab, 0xb0, 0x09, 0x0d, 0xa3, 0xcc, 0xe9, 0x29, 0xac, 0xec, 0xe2,
- 0x40, 0x72, 0xf0, 0x38, 0xb7, 0x77, 0xb9, 0x73, 0xc0, 0x5c, 0x9b, 0xd5, 0x94, 0x2f, 0x48, 0x06,
- 0x8b, 0x79, 0x02, 0xe1, 0x5e, 0x4e, 0x3e, 0xda, 0xcb, 0x51, 0x5b, 0xb0, 0x9a, 0x60, 0x1b, 0x2e,
- 0x1a, 0x97, 0xf4, 0x31, 0xd5, 0x9f, 0xd0, 0x58, 0x37, 0x2d, 0xd9, 0x3b, 0x50, 0x20, 0x0b, 0x39,
- 0x6b, 0x67, 0x36, 0x03, 0x42, 0x40, 0x74, 0x35, 0x51, 0x9e, 0x37, 0xf9, 0x50, 0x84, 0xb7, 0xaf,
- 0xcd, 0x9b, 0xe8, 0xb5, 0x31, 0x1e, 0x73, 0x77, 0x80, 0xfc, 0x24, 0x01, 0x43, 0x9a, 0x29, 0xaf,
- 0xf0, 0x11, 0x34, 0x35, 0xec, 0x8e, 0x8d, 0xc1, 0xeb, 0xd7, 0x48, 0x02, 0xa1, 0x0c, 0x1e, 0xbc,
- 0x82, 0x55, 0xba, 0xc1, 0x47, 0x57, 0xf6, 0x09, 0xb6, 0x43, 0x67, 0xf6, 0x2b, 0x3a, 0xb6, 0x12,
- 0x98, 0x8f, 0xc1, 0xc7, 0x00, 0xbe, 0x00, 0x8a, 0x91, 0x90, 0xac, 0x44, 0x54, 0x40, 0x22, 0x53,
- 0x9f, 0xd0, 0x5d, 0x8c, 0x64, 0x1d, 0xe8, 0x3e, 0x54, 0x42, 0xa2, 0x74, 0xd4, 0x1f, 0x91, 0x47,
- 0x54, 0x7c, 0x13, 0x23, 0x25, 0x96, 0xfa, 0x0b, 0xb1, 0x89, 0xf1, 0x06, 0x2a, 0xc9, 0x18, 0xa1,
- 0x70, 0x57, 0x23, 0x5d, 0xf3, 0x1e, 0xac, 0xf1, 0xce, 0x7d, 0x13, 0xed, 0x5b, 0x0f, 0x87, 0x3b,
- 0x5d, 0x13, 0x02, 0x65, 0x17, 0x07, 0xb1, 0xb0, 0x8b, 0x98, 0x2b, 0x09, 0xc6, 0xc7, 0x48, 0x8e,
- 0xb0, 0x72, 0x17, 0x46, 0x58, 0xa7, 0xa0, 0xb4, 0x4c, 0x33, 0x19, 0xcd, 0x95, 0x28, 0xfe, 0x8c,
- 0x8b, 0x9d, 0x2e, 0xcf, 0xf1, 0xe8, 0x0b, 0xb8, 0xea, 0xe1, 0x21, 0x59, 0x4e, 0x4f, 0x2d, 0x3f,
- 0xb0, 0xec, 0x91, 0x2e, 0xa9, 0x07, 0xeb, 0xc1, 0x35, 0x4a, 0xd0, 0xe6, 0xf8, 0xc3, 0x48, 0x2d,
- 0x96, 0x61, 0x49, 0xaa, 0x99, 0xb7, 0xf2, 0x57, 0x39, 0x58, 0xe6, 0x3b, 0x48, 0xaf, 0x29, 0xd2,
- 0x87, 0xb0, 0xec, 0x12, 0x17, 0xc8, 0x3b, 0xc1, 0x69, 0x61, 0x90, 0x40, 0x45, 0x72, 0x88, 0xf1,
- 0x2e, 0x44, 0xe3, 0x7d, 0x05, 0x56, 0xe2, 0x32, 0x70, 0xe1, 0xfe, 0x65, 0x0e, 0x56, 0xf8, 0xf8,
- 0xfc, 0x00, 0x1d, 0x36, 0xab, 0x65, 0x85, 0x59, 0x2d, 0x63, 0x1b, 0x3b, 0x31, 0x71, 0xc3, 0xad,
- 0x83, 0xf5, 0x50, 0x6f, 0x5a, 0xbe, 0x6f, 0x8d, 0x6c, 0x59, 0x71, 0xbf, 0x00, 0x30, 0x42, 0x20,
- 0x6f, 0xd1, 0x7a, 0xb2, 0x45, 0x52, 0x31, 0x89, 0x5a, 0xfd, 0x06, 0x36, 0x32, 0x39, 0x73, 0xdd,
- 0xfc, 0x8b, 0xb0, 0x7e, 0x4e, 0x37, 0xc7, 0xbe, 0x0f, 0xa1, 0xaf, 0xc1, 0x46, 0x26, 0xe7, 0x70,
- 0xcf, 0xe3, 0x9a, 0xac, 0x0e, 0x6f, 0xb4, 0xee, 0x8c, 0xd5, 0xe6, 0x26, 0x5c, 0x9f, 0x55, 0x1d,
- 0x17, 0xe8, 0xf7, 0xe1, 0x7a, 0x6c, 0x5c, 0xdf, 0x6c, 0x6f, 0xdc, 0x82, 0x1b, 0x33, 0xb9, 0xc7,
- 0xd6, 0xa2, 0x43, 0xea, 0xa3, 0x8b, 0xb5, 0xe8, 0x21, 0x5d, 0x8b, 0x04, 0x2c, 0xb4, 0xd9, 0xa5,
- 0xd1, 0xd8, 0x39, 0x32, 0xc6, 0xe9, 0x89, 0xb1, 0x4b, 0xe1, 0x1a, 0xc7, 0xab, 0x3f, 0x01, 0x74,
- 0x18, 0x18, 0x5e, 0x9c, 0xe9, 0x2b, 0x94, 0x5f, 0x85, 0xe5, 0x58, 0xf9, 0x68, 0xab, 0xe6, 0x30,
- 0x70, 0xdc, 0xb8, 0xa8, 0x2b, 0xa4, 0xae, 0x08, 0xc8, 0x49, 0xff, 0x59, 0x01, 0x16, 0x49, 0x98,
- 0xf3, 0xcc, 0x18, 0x5b, 0x26, 0xdd, 0x08, 0x43, 0x9f, 0x88, 0x78, 0x88, 0xf9, 0x32, 0xd7, 0xe3,
- 0xf1, 0x50, 0x44, 0xb8, 0x29, 0x87, 0x46, 0xe8, 0x33, 0x28, 0x79, 0xd8, 0xf0, 0xc3, 0xcd, 0xcf,
- 0x1b, 0x33, 0x8b, 0x69, 0x94, 0x4c, 0xe3, 0xe4, 0xe8, 0x0e, 0x2c, 0x4c, 0x8c, 0x60, 0x70, 0x8c,
- 0x4d, 0xbe, 0xa7, 0x23, 0xf9, 0x62, 0x9a, 0x63, 0x68, 0x02, 0x8b, 0x3e, 0x82, 0xda, 0xd4, 0xe6,
- 0x1f, 0xba, 0xe1, 0x37, 0x8b, 0x59, 0xd4, 0xd5, 0x90, 0xa4, 0xe5, 0xa3, 0xcf, 0x41, 0x89, 0x4a,
- 0x8c, 0xb1, 0x3d, 0x0a, 0x8e, 0x9b, 0xf3, 0x59, 0xa5, 0x1a, 0x21, 0xd9, 0x1e, 0xa5, 0x52, 0x7b,
- 0x30, 0xcf, 0x76, 0x17, 0x16, 0x01, 0x0e, 0xfb, 0xad, 0x7e, 0x5b, 0x3f, 0xe8, 0x1e, 0xb4, 0x95,
- 0x39, 0xb4, 0x0c, 0x0d, 0xf1, 0xdd, 0xd7, 0x1f, 0x77, 0x9f, 0x1e, 0xec, 0x28, 0x39, 0xd4, 0x80,
- 0x2a, 0x03, 0x3e, 0x6b, 0xed, 0x75, 0x76, 0x94, 0x3c, 0x5a, 0x82, 0x3a, 0x03, 0x74, 0x0e, 0x18,
- 0xa8, 0xa0, 0x7e, 0x09, 0x25, 0xd6, 0x70, 0x42, 0xad, 0xb5, 0x5b, 0x87, 0xdd, 0xbe, 0xe0, 0x59,
- 0x87, 0x0a, 0x05, 0x1c, 0xe8, 0xad, 0x43, 0x25, 0x47, 0x0a, 0xf3, 0xcf, 0xbd, 0xf6, 0xc1, 0x2e,
- 0xdd, 0xd6, 0xfd, 0x6f, 0xf3, 0x50, 0xec, 0xf1, 0xc3, 0x29, 0x7b, 0xec, 0x59, 0xe2, 0x24, 0x8d,
- 0xfc, 0x26, 0x21, 0xa8, 0x6b, 0x04, 0x81, 0xc7, 0xa2, 0x83, 0x9a, 0xc6, 0xbf, 0xe8, 0x24, 0x1b,
- 0x89, 0x00, 0x90, 0xfc, 0x24, 0xa5, 0x8f, 0xb0, 0x2f, 0x8e, 0x0b, 0xe9, 0x6f, 0x12, 0x60, 0x58,
- 0xbe, 0xfe, 0x9d, 0x15, 0x1c, 0x9b, 0x9e, 0xf1, 0x1d, 0xf5, 0xf2, 0xcb, 0x1a, 0x58, 0xfe, 0xcf,
- 0x38, 0x04, 0x5d, 0x07, 0x38, 0x09, 0x07, 0x8f, 0x6e, 0x6c, 0xcc, 0x6b, 0x12, 0x04, 0xb5, 0x61,
- 0x29, 0xfa, 0xd2, 0x4d, 0x1c, 0x18, 0xd6, 0x98, 0x6e, 0x6f, 0x54, 0x1f, 0x34, 0x67, 0xe9, 0x80,
- 0xa6, 0x44, 0x45, 0x76, 0x68, 0x09, 0xf4, 0x11, 0xac, 0xd8, 0x8e, 0x6e, 0x4d, 0x5c, 0x62, 0xa2,
- 0x83, 0x48, 0xa0, 0x32, 0x5b, 0xe8, 0x6d, 0xa7, 0xc3, 0x51, 0xa1, 0x60, 0x51, 0xe8, 0x5d, 0x89,
- 0x1d, 0xf2, 0x5d, 0x03, 0x60, 0x7b, 0x88, 0xba, 0xe1, 0xdb, 0x74, 0x23, 0xa4, 0xae, 0x55, 0x18,
- 0xa4, 0xe5, 0xdb, 0x68, 0x03, 0xf8, 0x87, 0x6e, 0x99, 0x74, 0x07, 0xa4, 0xa2, 0x95, 0x19, 0xa0,
- 0x63, 0xf2, 0x1d, 0xd3, 0x00, 0x7b, 0xd8, 0xa4, 0x5b, 0x1f, 0x65, 0x2d, 0xfc, 0x46, 0x2b, 0x74,
- 0x5e, 0x8c, 0xd9, 0x7e, 0x47, 0x59, 0x63, 0x1f, 0xe8, 0x2e, 0x28, 0x96, 0xaf, 0x0f, 0x3d, 0x67,
- 0xa2, 0xe3, 0xd3, 0x00, 0x7b, 0xb6, 0x31, 0xa6, 0x9b, 0x1d, 0x65, 0x6d, 0xd1, 0xf2, 0x1f, 0x7b,
- 0xce, 0xa4, 0xcd, 0xa1, 0xa4, 0xa7, 0xc5, 0x29, 0x89, 0x6e, 0xb9, 0x74, 0xdf, 0xa3, 0xa2, 0x81,
- 0x00, 0x75, 0xdc, 0xf0, 0xe4, 0x51, 0x89, 0x4e, 0x1e, 0xd1, 0xfb, 0x80, 0x2c, 0x5f, 0x17, 0x11,
- 0x99, 0x65, 0xd3, 0x7e, 0xa3, 0x9b, 0x1e, 0x65, 0x4d, 0xb1, 0xfc, 0x03, 0x86, 0xe8, 0x30, 0x38,
- 0x19, 0x2b, 0xcb, 0xc4, 0x76, 0x60, 0x0d, 0x2d, 0xec, 0x35, 0x11, 0xdb, 0x63, 0x8a, 0x20, 0xe8,
- 0x5d, 0x50, 0xc6, 0xce, 0xc0, 0x18, 0xeb, 0x12, 0xd5, 0x32, 0xa5, 0x6a, 0x50, 0x78, 0x27, 0x22,
- 0xfd, 0x10, 0xca, 0x86, 0x7d, 0xa6, 0x53, 0x6d, 0x5b, 0x09, 0xbd, 0x6d, 0x67, 0x34, 0xc6, 0x9b,
- 0xe2, 0x38, 0x7e, 0xb3, 0x65, 0x9f, 0x69, 0x0b, 0x86, 0x7d, 0x76, 0x40, 0xd4, 0xf0, 0x63, 0x00,
- 0x52, 0x80, 0xab, 0xe2, 0x6a, 0x18, 0xaf, 0xa4, 0x8b, 0x54, 0x0c, 0xfb, 0xac, 0x47, 0xc9, 0xd4,
- 0x7f, 0x9a, 0x83, 0xea, 0x0e, 0x26, 0x36, 0x9f, 0x29, 0x13, 0xd1, 0x65, 0xba, 0x25, 0xc6, 0x63,
- 0x60, 0xfe, 0x15, 0x6d, 0xfb, 0xe6, 0xcf, 0xd9, 0xf6, 0x45, 0x77, 0xa0, 0x31, 0x76, 0x6c, 0x12,
- 0xb2, 0xb2, 0x62, 0x58, 0xf8, 0x09, 0x8b, 0x0c, 0xdc, 0xe3, 0x50, 0xd2, 0x0f, 0xfe, 0xb1, 0xe3,
- 0x05, 0x32, 0x25, 0x9b, 0x14, 0x0d, 0x0e, 0x17, 0xa4, 0xea, 0xbf, 0xc9, 0xc1, 0x3c, 0xdd, 0xde,
- 0x44, 0xef, 0xc4, 0x42, 0xbc, 0xac, 0xdd, 0xeb, 0x99, 0xf1, 0xdd, 0xcc, 0x03, 0xe9, 0xdf, 0x81,
- 0x9a, 0x19, 0x35, 0x5f, 0xac, 0x69, 0xb1, 0xf0, 0x31, 0xc4, 0x6a, 0x31, 0x52, 0xba, 0xa1, 0xe8,
- 0xf8, 0x81, 0xce, 0x7d, 0x30, 0x3e, 0x71, 0x09, 0x88, 0x59, 0x30, 0x75, 0x8b, 0x86, 0xdf, 0xaf,
- 0xbc, 0x7f, 0xab, 0x7e, 0xc6, 0x36, 0xb9, 0x48, 0x39, 0x6e, 0xd0, 0x2e, 0x59, 0x70, 0x02, 0x4b,
- 0xf4, 0x7b, 0xcf, 0x71, 0xbe, 0x9d, 0xba, 0xac, 0x07, 0x67, 0x8e, 0xe8, 0x4f, 0xa1, 0x3e, 0xa6,
- 0x74, 0xba, 0xe3, 0x4a, 0x67, 0x66, 0x1b, 0x09, 0xde, 0x8c, 0x57, 0xd7, 0x65, 0x1d, 0x30, 0x96,
- 0xbe, 0xd4, 0x7f, 0x92, 0xa3, 0x82, 0xca, 0xd7, 0x07, 0xbe, 0x8f, 0x21, 0xfa, 0x0c, 0xca, 0x92,
- 0x8e, 0x90, 0xe1, 0xc9, 0x96, 0x91, 0xb5, 0x57, 0x0b, 0x89, 0xd5, 0x31, 0x20, 0xbe, 0xe2, 0x61,
- 0x69, 0x10, 0x2e, 0x2b, 0xe2, 0xac, 0x9b, 0x20, 0x51, 0x7f, 0x16, 0xe4, 0xfe, 0x24, 0xae, 0x40,
- 0xac, 0x36, 0x6e, 0xdf, 0xff, 0x67, 0x11, 0x8a, 0x3d, 0x8c, 0x3d, 0xba, 0xb2, 0x11, 0x0e, 0x22,
- 0x40, 0xaa, 0x6b, 0xe1, 0x37, 0xfa, 0x1c, 0x6a, 0x86, 0xeb, 0x8e, 0xcf, 0x84, 0x2e, 0xb1, 0x8d,
- 0x50, 0x49, 0x0b, 0x5b, 0x04, 0xcb, 0xdd, 0xe9, 0xaa, 0x11, 0x7d, 0x84, 0x7b, 0xac, 0x85, 0xe4,
- 0x1e, 0x2b, 0xa9, 0x53, 0xda, 0x63, 0xfd, 0x12, 0xea, 0xf8, 0x68, 0xe4, 0xea, 0x93, 0xe9, 0x38,
- 0xb0, 0x8e, 0x1d, 0x97, 0xdf, 0xc0, 0xb8, 0x12, 0x15, 0x68, 0x1f, 0x8d, 0xdc, 0x7d, 0x8e, 0xd5,
- 0x6a, 0x58, 0xfa, 0x42, 0x2d, 0x68, 0xb0, 0x3d, 0x30, 0x0f, 0x0f, 0xc7, 0x78, 0x10, 0x38, 0x1e,
- 0xd5, 0xf6, 0xb8, 0x7d, 0x21, 0x04, 0x9a, 0xc0, 0x6b, 0x8b, 0x5e, 0xec, 0x1b, 0xdd, 0x81, 0xa2,
- 0x65, 0x0f, 0x1d, 0x6a, 0xbe, 0x52, 0xe7, 0xec, 0xcc, 0x8f, 0xa1, 0x04, 0xc4, 0xf7, 0x0a, 0xac,
- 0x09, 0xf6, 0x7c, 0x6e, 0xc2, 0x24, 0xdf, 0xab, 0x4f, 0xe1, 0x1a, 0xc7, 0x93, 0x48, 0x37, 0xf0,
- 0x0c, 0xdb, 0xa7, 0x7b, 0xa1, 0xe5, 0x24, 0xdf, 0xbe, 0x40, 0x69, 0x11, 0x15, 0xe9, 0x67, 0xd6,
- 0x10, 0xb6, 0xd1, 0x4b, 0xed, 0x56, 0xac, 0x9f, 0x69, 0x2b, 0xb8, 0x87, 0xc6, 0xf6, 0xfd, 0xd8,
- 0x07, 0xda, 0x01, 0x65, 0xe4, 0x19, 0x03, 0x3c, 0x9c, 0x8e, 0x75, 0x0f, 0xfb, 0xc4, 0xe7, 0xa3,
- 0x96, 0x2d, 0x76, 0xd2, 0xbe, 0xcb, 0x29, 0x34, 0x46, 0xa0, 0x35, 0x46, 0x71, 0x00, 0xda, 0x84,
- 0x8a, 0x31, 0xb4, 0x74, 0xdf, 0x18, 0x5a, 0x7e, 0xb3, 0x4a, 0x75, 0x79, 0x49, 0x1a, 0xe4, 0xa1,
- 0x75, 0x68, 0x0c, 0x2d, 0xad, 0x6c, 0xb0, 0x1f, 0x24, 0xf6, 0xaa, 0x18, 0xa6, 0xa9, 0xb3, 0x95,
- 0xb7, 0x96, 0x1c, 0x62, 0x7e, 0xcb, 0xc7, 0xd7, 0xca, 0x06, 0xff, 0xa5, 0xfe, 0xdf, 0x22, 0x54,
- 0xc2, 0x2b, 0x07, 0xdf, 0x93, 0xca, 0xbd, 0x17, 0x53, 0xb9, 0xb5, 0x8c, 0x2b, 0x13, 0xff, 0x1f,
- 0xe9, 0xdd, 0xfb, 0x31, 0xbd, 0x6b, 0x66, 0x08, 0xfb, 0x5b, 0xe5, 0x7b, 0x53, 0xca, 0xf7, 0x04,
- 0x1a, 0x89, 0x4b, 0x24, 0x33, 0x8d, 0xcf, 0xb5, 0xd8, 0xe5, 0x1b, 0x66, 0x05, 0xa4, 0x0b, 0x3d,
- 0xff, 0x39, 0x07, 0x55, 0x49, 0xff, 0xd0, 0x67, 0x50, 0xb1, 0x6c, 0x3d, 0xb6, 0xd9, 0x71, 0x5e,
- 0x5c, 0x59, 0xb6, 0x6c, 0x5e, 0xf0, 0x77, 0xa1, 0x8e, 0x4f, 0x49, 0xef, 0xc7, 0xd5, 0xfc, 0xbc,
- 0xc2, 0x35, 0x56, 0x20, 0x62, 0x60, 0x4d, 0x64, 0x06, 0x85, 0x8b, 0x19, 0xb0, 0x02, 0xdc, 0x09,
- 0xf8, 0xdb, 0x50, 0x65, 0x86, 0x69, 0xcf, 0x9a, 0x58, 0x33, 0x8f, 0xab, 0xd0, 0x2d, 0xa8, 0x4d,
- 0x8c, 0xd3, 0xc8, 0x19, 0x62, 0x36, 0xa7, 0x3a, 0x31, 0x4e, 0x43, 0x9f, 0xe9, 0x13, 0xb8, 0xe2,
- 0xf3, 0x2b, 0x1e, 0x7a, 0x70, 0xec, 0x61, 0xff, 0xd8, 0x19, 0x9b, 0xba, 0x3b, 0x08, 0xb8, 0xbd,
- 0x5c, 0x11, 0xd8, 0xbe, 0x40, 0xf6, 0x06, 0x81, 0xfa, 0xcf, 0x4b, 0x50, 0x16, 0xb6, 0x00, 0xfd,
- 0x08, 0xea, 0xc6, 0x34, 0x38, 0xd6, 0x5d, 0xc3, 0xf7, 0xbf, 0x73, 0x3c, 0x93, 0x8f, 0x4a, 0x8d,
- 0x00, 0x7b, 0x1c, 0x86, 0x6e, 0x42, 0xd5, 0xc4, 0xfe, 0xc0, 0xb3, 0x5c, 0xe9, 0xae, 0x86, 0x0c,
- 0x42, 0x57, 0xa1, 0xcc, 0xbc, 0x58, 0xc3, 0x17, 0x67, 0x1e, 0xf4, 0xbb, 0x45, 0x1d, 0xbb, 0xd0,
- 0xc7, 0x16, 0x67, 0x32, 0x45, 0xca, 0xa1, 0x21, 0xe0, 0x2d, 0x7e, 0x8c, 0xb5, 0x06, 0x0b, 0x54,
- 0x07, 0x0c, 0x9f, 0x1f, 0x6d, 0x94, 0xc8, 0x67, 0xcb, 0x4f, 0x28, 0x47, 0x29, 0xa1, 0x1c, 0x24,
- 0x7e, 0xa0, 0x68, 0x6a, 0xc5, 0xd9, 0x31, 0x6e, 0x99, 0x00, 0xe8, 0x8d, 0x8b, 0x03, 0x58, 0xf2,
- 0xf0, 0xc4, 0x39, 0xc1, 0xba, 0xeb, 0x59, 0x27, 0x46, 0x40, 0x62, 0x10, 0x3a, 0x3f, 0x17, 0x1f,
- 0xa8, 0x69, 0xe3, 0xb8, 0xa9, 0x51, 0xda, 0x1e, 0x23, 0x6d, 0xf9, 0x5a, 0xc3, 0x8b, 0x03, 0x88,
- 0xfb, 0xcf, 0x26, 0xed, 0x70, 0x6c, 0xb8, 0xba, 0x69, 0x4c, 0x5c, 0xcb, 0x1e, 0xd1, 0xa9, 0x5b,
- 0xd6, 0x14, 0x8a, 0x79, 0x3c, 0x36, 0xdc, 0x1d, 0x06, 0x47, 0xb7, 0x61, 0xd1, 0xc7, 0xb6, 0xa9,
- 0xf3, 0x8b, 0x2d, 0xc1, 0x19, 0x8f, 0x7e, 0xea, 0x04, 0xba, 0x2d, 0x80, 0xc4, 0x53, 0xe7, 0x07,
- 0xec, 0x03, 0xc3, 0xe5, 0x53, 0x71, 0x86, 0xa7, 0xce, 0xe8, 0xb6, 0x0d, 0x97, 0xac, 0x38, 0xac,
- 0xd3, 0x49, 0x99, 0xda, 0x39, 0x65, 0xd8, 0xd8, 0x90, 0x22, 0x8b, 0x90, 0xb7, 0x4c, 0x1a, 0x2d,
- 0x55, 0xb4, 0xbc, 0x65, 0xa2, 0x2f, 0xa0, 0xce, 0x8f, 0xc0, 0xc7, 0x44, 0x19, 0xfd, 0xe6, 0x62,
- 0xd2, 0xdb, 0x95, 0x54, 0x55, 0xab, 0xb9, 0xd1, 0x87, 0x4f, 0x54, 0x87, 0x8f, 0x39, 0x1f, 0x55,
- 0x16, 0x3e, 0xd5, 0xd8, 0xc0, 0xf3, 0x21, 0xfd, 0x00, 0x50, 0x14, 0x61, 0xd9, 0x01, 0xf6, 0x86,
- 0xc6, 0x00, 0xd3, 0x70, 0xaa, 0xa2, 0x2d, 0x85, 0x81, 0x96, 0x40, 0x90, 0x00, 0xf9, 0xc4, 0x1b,
- 0xd2, 0x60, 0xaa, 0x42, 0x8f, 0x7c, 0xd0, 0x4d, 0xa8, 0x19, 0xe3, 0xb1, 0xf3, 0x9d, 0x4e, 0x94,
- 0xdc, 0xf0, 0x45, 0x04, 0x45, 0x61, 0xdd, 0xef, 0xec, 0x96, 0x8f, 0xde, 0x81, 0x86, 0xc7, 0xf6,
- 0x89, 0x74, 0xa1, 0x3d, 0xcb, 0xec, 0x06, 0x1e, 0x07, 0xf7, 0xa8, 0x12, 0xa9, 0xf7, 0xa1, 0x91,
- 0x18, 0x5c, 0x54, 0x86, 0x22, 0x0f, 0xf8, 0xf9, 0x7d, 0x8e, 0x1c, 0xaa, 0xc2, 0x82, 0xd6, 0xee,
- 0xed, 0xb5, 0xb6, 0xdb, 0x4a, 0x5e, 0xfd, 0x17, 0x05, 0xa8, 0xc7, 0x6c, 0xd8, 0x5f, 0xc2, 0x7c,
- 0x99, 0x39, 0x09, 0xde, 0x81, 0x46, 0x34, 0x09, 0x74, 0xea, 0x2c, 0xb3, 0x99, 0x50, 0x0f, 0x67,
- 0xc2, 0x01, 0xf1, 0x9a, 0xcf, 0x9d, 0x0d, 0x87, 0xb3, 0x67, 0xc3, 0x9d, 0x19, 0x76, 0xfb, 0x87,
- 0x99, 0x12, 0xaf, 0x33, 0x5c, 0xff, 0xbb, 0x00, 0x8b, 0x71, 0x2b, 0xfe, 0x57, 0x7e, 0xbc, 0xfa,
- 0xb3, 0xc7, 0xeb, 0xee, 0x2c, 0xd7, 0xe5, 0x07, 0x5a, 0xc3, 0x6e, 0x40, 0x35, 0x70, 0x02, 0x63,
- 0xcc, 0xfd, 0x83, 0x2a, 0x9b, 0xa8, 0x14, 0x44, 0xbd, 0x01, 0xc2, 0x87, 0x13, 0x08, 0x9b, 0x56,
- 0x63, 0x7c, 0x18, 0x8d, 0x08, 0xd2, 0x5e, 0x63, 0xe0, 0xbf, 0x82, 0x9a, 0xec, 0x34, 0xa2, 0x26,
- 0x2c, 0xb0, 0x73, 0x75, 0xf1, 0xd6, 0x40, 0x7c, 0x52, 0xab, 0xca, 0xa9, 0xf4, 0x20, 0x18, 0x87,
- 0x56, 0x95, 0xc3, 0xfa, 0xc1, 0x58, 0xfd, 0x83, 0x1c, 0x2c, 0xc6, 0x7d, 0x48, 0x62, 0x68, 0x13,
- 0x6e, 0xa7, 0x3e, 0x18, 0x5b, 0x62, 0x4b, 0xbb, 0xac, 0xad, 0xc4, 0x7d, 0xcc, 0x6d, 0x8a, 0x43,
- 0x5f, 0xc2, 0x7a, 0xba, 0xd4, 0xd4, 0x0f, 0xb0, 0x17, 0xdd, 0xa1, 0x5b, 0x4b, 0x96, 0xa4, 0xf8,
- 0x8e, 0xa9, 0xfe, 0xab, 0x12, 0xf3, 0xdb, 0xff, 0xb2, 0xd4, 0x78, 0x13, 0xca, 0x13, 0xec, 0xfb,
- 0xc6, 0x88, 0xef, 0xbb, 0xc4, 0x5c, 0xbb, 0x7d, 0x8e, 0xd1, 0x42, 0x9a, 0x4c, 0xb3, 0x3e, 0x7f,
- 0xa1, 0x59, 0x2f, 0x9d, 0x63, 0xd6, 0x17, 0xce, 0x35, 0xeb, 0xe5, 0xc4, 0xc4, 0xb8, 0x0b, 0xa5,
- 0x5f, 0x4e, 0xf1, 0x14, 0xfb, 0xdc, 0x6b, 0x96, 0x1c, 0xf3, 0xaf, 0x29, 0x5c, 0xe3, 0x78, 0x74,
- 0x2f, 0x6b, 0x0a, 0x31, 0x0d, 0xbe, 0xe4, 0xc4, 0xa8, 0x5e, 0x7a, 0x62, 0xd4, 0xb2, 0x26, 0x06,
- 0xbd, 0xe4, 0xe5, 0xfb, 0x96, 0x63, 0xb3, 0xe3, 0x32, 0x6a, 0x7f, 0xeb, 0x5a, 0x8d, 0x03, 0xd9,
- 0x08, 0x7f, 0x0a, 0x57, 0xfc, 0xa9, 0x4b, 0xdc, 0x44, 0x6c, 0x12, 0x83, 0x6e, 0x1c, 0x59, 0x63,
- 0x2b, 0x20, 0x71, 0xda, 0x22, 0xbd, 0x60, 0xb2, 0x1a, 0x62, 0xb7, 0x25, 0x24, 0xe9, 0x23, 0x12,
- 0x4c, 0x31, 0xbe, 0xcc, 0x00, 0x97, 0x8f, 0x46, 0x7c, 0xf1, 0xfb, 0x5d, 0xa8, 0x1a, 0xe6, 0xc4,
- 0x12, 0xd5, 0x2a, 0xc9, 0xc3, 0x83, 0x50, 0xbf, 0x36, 0x5b, 0x84, 0x8c, 0xc5, 0x3d, 0x60, 0x84,
- 0xbf, 0x49, 0xb8, 0x28, 0xae, 0xab, 0x51, 0x9b, 0x5c, 0xd7, 0xc2, 0x6f, 0x82, 0x33, 0x06, 0x03,
- 0xec, 0x06, 0xd8, 0xe4, 0x46, 0x39, 0xfc, 0x46, 0xd7, 0x01, 0x8c, 0xe8, 0xb9, 0xcf, 0x32, 0x37,
- 0xd9, 0xd1, 0x43, 0x9f, 0x65, 0x98, 0x77, 0xa6, 0x81, 0xfe, 0x4b, 0xba, 0x8d, 0x59, 0xd7, 0x8a,
- 0xce, 0x34, 0xf8, 0x1a, 0xad, 0xc0, 0xfc, 0x70, 0xec, 0xb8, 0x7e, 0x73, 0x95, 0x02, 0xd9, 0x87,
- 0x7a, 0x0f, 0x20, 0x12, 0x0e, 0x95, 0x20, 0xff, 0xb4, 0xc7, 0x6e, 0x67, 0xee, 0x74, 0x7f, 0x76,
- 0xa0, 0xe4, 0x10, 0x40, 0xa9, 0xf7, 0xf8, 0xb9, 0xbe, 0xdd, 0x57, 0xf2, 0xea, 0xdf, 0x80, 0xb2,
- 0xd0, 0x54, 0xf4, 0x81, 0x24, 0x3a, 0x8b, 0x0f, 0x96, 0x52, 0xfa, 0x2c, 0xb5, 0xe6, 0x36, 0x14,
- 0x7d, 0x71, 0x3d, 0x32, 0x93, 0x94, 0xa2, 0xd5, 0x3f, 0xcd, 0xc1, 0x02, 0x87, 0x20, 0x15, 0x6a,
- 0x07, 0xdd, 0x7e, 0xe7, 0x71, 0x67, 0xbb, 0xd5, 0xef, 0x74, 0x0f, 0x68, 0x2d, 0x45, 0x2d, 0x06,
- 0x23, 0xce, 0xfd, 0xd3, 0xde, 0x4e, 0xab, 0xdf, 0xa6, 0x8c, 0x8b, 0x1a, 0xff, 0x42, 0x08, 0x8a,
- 0xdd, 0x5e, 0xfb, 0x80, 0x5f, 0xf3, 0xa5, 0xbf, 0xd1, 0x5b, 0x50, 0xf9, 0xaa, 0xdd, 0xee, 0xb5,
- 0xf6, 0x3a, 0xcf, 0xda, 0x74, 0x0a, 0x16, 0xb5, 0x08, 0x40, 0x96, 0x34, 0xad, 0xfd, 0x58, 0x6b,
- 0x1f, 0x3e, 0xa1, 0xd3, 0xac, 0xa8, 0x89, 0x4f, 0x52, 0x6e, 0xa7, 0x73, 0xb8, 0xdd, 0xd2, 0x76,
- 0xda, 0x3b, 0x74, 0x82, 0x15, 0xb5, 0x08, 0x40, 0x7a, 0xb5, 0xdf, 0xed, 0xb7, 0xf6, 0xe8, 0xf4,
- 0x2a, 0x6a, 0xec, 0x43, 0xdd, 0x82, 0x12, 0x9b, 0x25, 0x04, 0x6f, 0xd9, 0xee, 0x34, 0xe0, 0xd1,
- 0x07, 0xfb, 0x20, 0x72, 0x3b, 0xd3, 0x80, 0x80, 0xf9, 0x56, 0x17, 0xfb, 0x52, 0x31, 0x94, 0x58,
- 0xd8, 0x8b, 0x36, 0xa1, 0x44, 0xc2, 0x79, 0x6b, 0xc4, 0x7b, 0xf7, 0x4a, 0x32, 0x30, 0xde, 0xa6,
- 0x58, 0x8d, 0x53, 0xa1, 0xf7, 0xe2, 0x57, 0xfa, 0x56, 0x93, 0xe4, 0xb1, 0x4b, 0x7d, 0x7f, 0x9a,
- 0x83, 0x9a, 0xcc, 0x85, 0x4c, 0xa1, 0x81, 0x63, 0xdb, 0x78, 0x10, 0xe8, 0x1e, 0x0e, 0xbc, 0x33,
- 0xd1, 0xd9, 0x1c, 0xa8, 0x11, 0x18, 0x99, 0x0b, 0x34, 0x00, 0x0a, 0xef, 0x97, 0x16, 0xb5, 0x32,
- 0x01, 0x10, 0x4e, 0xc4, 0x11, 0xfd, 0x16, 0x63, 0xd7, 0x18, 0x5b, 0x27, 0x58, 0x4f, 0x5c, 0xb3,
- 0x5e, 0x0a, 0x31, 0x1d, 0x8e, 0x40, 0x3b, 0x70, 0x7d, 0x62, 0xd9, 0xd6, 0x64, 0x3a, 0xd1, 0x43,
- 0xbd, 0x25, 0xb1, 0x5c, 0x54, 0x94, 0x8d, 0xd0, 0x5b, 0x9c, 0xaa, 0x25, 0x13, 0x09, 0x2e, 0xea,
- 0x1f, 0xe7, 0xa1, 0x2a, 0x35, 0xef, 0xaf, 0x68, 0x33, 0xe8, 0x41, 0x10, 0x1e, 0x39, 0x81, 0x65,
- 0x90, 0xc5, 0x29, 0x12, 0x8e, 0x29, 0x22, 0x8a, 0x70, 0x4f, 0x84, 0x98, 0xd1, 0x0d, 0x60, 0xa6,
- 0x90, 0x59, 0x37, 0x80, 0x99, 0x42, 0x86, 0xdf, 0xea, 0xff, 0xc9, 0x41, 0x25, 0xdc, 0x26, 0x49,
- 0x47, 0x17, 0xb9, 0x8c, 0xe8, 0xe2, 0x1a, 0x00, 0x23, 0x92, 0x6e, 0x3f, 0xb2, 0x98, 0xa8, 0xc7,
- 0x79, 0x4c, 0x82, 0xa9, 0x6e, 0x5a, 0xfe, 0xc0, 0x39, 0xc1, 0xde, 0x19, 0x3f, 0x7a, 0xa8, 0x4d,
- 0x82, 0xe9, 0x8e, 0x80, 0x11, 0x8f, 0x80, 0x58, 0x55, 0xd2, 0x9f, 0x13, 0xc7, 0x14, 0x37, 0xf1,
- 0xaa, 0x1c, 0xb6, 0xef, 0x98, 0x98, 0xac, 0xf3, 0x3c, 0x3a, 0x8b, 0x5b, 0xba, 0x3a, 0x83, 0xb6,
- 0xb2, 0x6f, 0x49, 0x97, 0xc4, 0x8d, 0x64, 0x71, 0x4b, 0x9a, 0x18, 0xc2, 0x60, 0xe0, 0xea, 0x13,
- 0xdf, 0xe7, 0x7e, 0x5e, 0x29, 0x18, 0xb8, 0xfb, 0xbe, 0xaf, 0x3e, 0x84, 0xaa, 0xb4, 0xd5, 0x83,
- 0x36, 0x61, 0x59, 0xde, 0x17, 0x8a, 0xfb, 0x1a, 0x4b, 0xd2, 0x3e, 0x10, 0x73, 0x34, 0xd4, 0x3f,
- 0x29, 0x40, 0x23, 0xb1, 0xd9, 0x73, 0xbe, 0x0b, 0xc4, 0xb7, 0x8c, 0x22, 0x15, 0xab, 0x6b, 0x55,
- 0x0e, 0xa3, 0xc3, 0x77, 0x03, 0xaa, 0xc7, 0x78, 0xec, 0x62, 0x4f, 0x77, 0xec, 0xb1, 0xe8, 0x36,
- 0x60, 0xa0, 0xae, 0x3d, 0xa6, 0x26, 0xcd, 0xc4, 0x43, 0xec, 0x79, 0xc6, 0x98, 0x31, 0x61, 0xf7,
- 0xb3, 0x6b, 0x02, 0x48, 0xb9, 0xdc, 0x87, 0x15, 0x7a, 0xab, 0x99, 0x3f, 0xe7, 0xd0, 0x85, 0x3c,
- 0xec, 0x5c, 0x64, 0x59, 0xc6, 0xb5, 0xb9, 0x6c, 0xef, 0xc1, 0xd2, 0xd8, 0xb1, 0x47, 0x63, 0x7a,
- 0x6b, 0x5a, 0xd0, 0x97, 0x98, 0xf9, 0x0d, 0x11, 0x82, 0xf8, 0x1e, 0x2c, 0xd1, 0x03, 0x3f, 0x9d,
- 0xf6, 0x88, 0xaf, 0x87, 0x5a, 0x55, 0xd7, 0x1a, 0x14, 0x41, 0xfb, 0xd4, 0xa7, 0xb2, 0xdc, 0x83,
- 0x25, 0xea, 0x4b, 0xc4, 0x5a, 0xce, 0x7c, 0x0a, 0xea, 0xa5, 0x6b, 0x52, 0xeb, 0xef, 0x70, 0xc7,
- 0x9d, 0xd3, 0x46, 0xae, 0xf1, 0xa2, 0x44, 0x49, 0xec, 0x7f, 0x78, 0x76, 0x27, 0x51, 0x02, 0x3b,
- 0xb3, 0xa2, 0x70, 0x89, 0x14, 0x41, 0x91, 0x6a, 0x17, 0x3b, 0xdd, 0xa4, 0xbf, 0xd5, 0x8f, 0x61,
- 0x6d, 0xdf, 0x4d, 0x8c, 0x1b, 0x5f, 0xef, 0x66, 0x8e, 0x9e, 0xfa, 0x9f, 0x72, 0x70, 0x25, 0x55,
- 0x8a, 0xad, 0x2e, 0xb3, 0x87, 0x5c, 0xb6, 0xe3, 0xec, 0x86, 0x47, 0x64, 0xf9, 0xe2, 0xb6, 0x9a,
- 0x0f, 0xb5, 0x64, 0xab, 0x3f, 0x80, 0x65, 0x7e, 0x6b, 0xdc, 0xb3, 0x8e, 0xf4, 0x90, 0x4d, 0x51,
- 0xbc, 0xe1, 0x35, 0xbb, 0x43, 0x7a, 0xba, 0x11, 0x1a, 0xd2, 0x86, 0x44, 0x4e, 0x6d, 0x2a, 0x1b,
- 0xef, 0x9a, 0x20, 0x3d, 0x24, 0x2a, 0xfb, 0x9b, 0x1c, 0x2c, 0xa5, 0x9a, 0x81, 0x7e, 0x27, 0x61,
- 0x54, 0x6e, 0x49, 0x76, 0x38, 0xbb, 0xa7, 0x42, 0xfb, 0xb2, 0x15, 0xb7, 0x2f, 0x37, 0xcf, 0x29,
- 0x19, 0x33, 0x35, 0x2d, 0xa8, 0xf3, 0x8d, 0x4e, 0xde, 0xf5, 0xb3, 0xf6, 0xe3, 0xa4, 0xde, 0xcd,
- 0xc7, 0x87, 0xe4, 0xef, 0xe5, 0xa0, 0xc6, 0x79, 0x84, 0xef, 0x1f, 0x5e, 0x8d, 0x45, 0x32, 0x76,
- 0x2a, 0x5c, 0x22, 0x76, 0x2a, 0x66, 0xc5, 0x4e, 0xff, 0xb0, 0x00, 0x1b, 0x7c, 0x25, 0x19, 0xb3,
- 0xa7, 0x69, 0xec, 0x64, 0x4e, 0xd8, 0xd1, 0xf7, 0x01, 0x19, 0xe3, 0xef, 0x8c, 0x33, 0x9f, 0xf8,
- 0xac, 0xae, 0xe1, 0x61, 0x7d, 0x12, 0xbd, 0xc7, 0x66, 0x98, 0x6d, 0x86, 0xd8, 0xc7, 0x26, 0xba,
- 0x0f, 0xab, 0xd6, 0xc8, 0x76, 0x3c, 0xe2, 0x31, 0x53, 0xc9, 0xc4, 0x8d, 0x0d, 0x7e, 0x89, 0x8d,
- 0x21, 0x5b, 0x3e, 0x11, 0x91, 0xdd, 0xd2, 0x20, 0x31, 0x8f, 0x38, 0x73, 0x0f, 0xab, 0xa0, 0xd3,
- 0x93, 0xc6, 0x3c, 0x4c, 0xbb, 0xd6, 0x04, 0x05, 0xaf, 0x8a, 0x0a, 0xec, 0x75, 0x4c, 0xf4, 0x05,
- 0x5c, 0x0d, 0x15, 0x4f, 0xb7, 0x6c, 0x63, 0x10, 0x90, 0x55, 0x99, 0xcd, 0x6e, 0xae, 0x70, 0x6b,
- 0x21, 0x41, 0x87, 0xe3, 0xd9, 0x24, 0x27, 0x3d, 0xc8, 0x3a, 0x53, 0x37, 0xac, 0x91, 0x2b, 0xce,
- 0x5e, 0xf9, 0x13, 0x73, 0x6b, 0xe4, 0xa2, 0x2f, 0x60, 0x9d, 0x37, 0xc6, 0xc6, 0xa7, 0x81, 0x4e,
- 0xcf, 0xee, 0x47, 0xae, 0x3e, 0xc1, 0x81, 0x67, 0x0d, 0xf8, 0x1a, 0x73, 0x85, 0x51, 0x1c, 0xe0,
- 0xd3, 0xe0, 0x89, 0xe3, 0x76, 0x46, 0xee, 0x3e, 0xc5, 0xa2, 0x87, 0xb0, 0x61, 0xb2, 0x0b, 0xec,
- 0xfa, 0x11, 0xf6, 0x03, 0xd6, 0x17, 0xbe, 0xe8, 0x62, 0xba, 0xe6, 0x94, 0xb5, 0x26, 0x27, 0x79,
- 0x84, 0x7d, 0x7a, 0x02, 0x1a, 0x0e, 0x81, 0xfa, 0x0f, 0x0a, 0xb0, 0x9e, 0x39, 0x2a, 0x4c, 0x5d,
- 0x7e, 0x3b, 0x28, 0x3f, 0xc8, 0xa0, 0xe4, 0x60, 0x35, 0x73, 0x50, 0xd0, 0xc3, 0xc4, 0x2a, 0x74,
- 0x3b, 0x75, 0x20, 0x93, 0x35, 0xb7, 0xc2, 0x95, 0xe8, 0x8b, 0xf8, 0x4a, 0xf4, 0xf6, 0x05, 0xa5,
- 0x63, 0xab, 0xd1, 0x03, 0xb8, 0xf2, 0xd4, 0xc7, 0x74, 0x1f, 0xc3, 0x1d, 0xd3, 0xa7, 0xed, 0xfe,
- 0x85, 0x16, 0xe1, 0x3e, 0xac, 0x26, 0xcb, 0x5c, 0x60, 0x0f, 0xd4, 0x5f, 0x00, 0xb4, 0x8f, 0x46,
- 0x2e, 0x67, 0x7d, 0x0f, 0x96, 0xd8, 0x16, 0xeb, 0x84, 0xf3, 0x20, 0x01, 0x32, 0x2b, 0xd1, 0xa0,
- 0x08, 0xc1, 0xbb, 0x45, 0x37, 0x7d, 0x27, 0xc6, 0x29, 0x75, 0x28, 0xc5, 0xed, 0x0f, 0x6a, 0xf8,
- 0x39, 0x90, 0x1d, 0xfb, 0xfc, 0x3e, 0x54, 0xda, 0x61, 0x10, 0xfa, 0xc6, 0xb9, 0xeb, 0x50, 0x24,
- 0xdc, 0xd1, 0xfb, 0x89, 0x61, 0x5a, 0x89, 0x9f, 0x20, 0x26, 0x46, 0x65, 0xf6, 0x93, 0xa2, 0x50,
- 0x54, 0x31, 0x08, 0xf7, 0x01, 0x3a, 0x51, 0xef, 0xa4, 0x64, 0xca, 0x65, 0xc8, 0xf4, 0x11, 0x54,
- 0x3a, 0x61, 0x8b, 0x2f, 0x55, 0x42, 0x87, 0x62, 0xe7, 0x82, 0x56, 0x74, 0x5e, 0xa5, 0x15, 0x9d,
- 0x64, 0x2b, 0xfe, 0x3c, 0x07, 0x4a, 0x52, 0x2f, 0xd0, 0xe7, 0x89, 0xda, 0x24, 0x33, 0x99, 0xad,
- 0x77, 0x61, 0xcd, 0x9f, 0xc6, 0x6b, 0xbe, 0x31, 0xbb, 0x60, 0xec, 0x0e, 0xa2, 0x0a, 0x45, 0x7c,
- 0x34, 0x72, 0xd3, 0xe9, 0x29, 0x48, 0xaf, 0x6b, 0x14, 0x47, 0x68, 0x2c, 0x42, 0x93, 0x4a, 0x01,
- 0xd1, 0xa1, 0x34, 0x04, 0xa7, 0x3e, 0xe2, 0x76, 0xad, 0x6f, 0x78, 0x23, 0x1c, 0xec, 0xe3, 0xc9,
- 0x11, 0xf6, 0xfc, 0x63, 0x4b, 0x1a, 0xa4, 0xb8, 0x3f, 0x9a, 0x4b, 0xfb, 0xa3, 0x6a, 0x8b, 0xaf,
- 0xc2, 0x49, 0x1e, 0xe1, 0xa8, 0x5d, 0xcc, 0x22, 0x5c, 0x34, 0x92, 0x3c, 0x2e, 0x5c, 0x34, 0xb2,
- 0x05, 0xbf, 0xec, 0xa2, 0x91, 0x29, 0xb2, 0x18, 0xe9, 0x5f, 0xc0, 0xf5, 0x3d, 0xc7, 0x1e, 0xed,
- 0x11, 0xff, 0xeb, 0x15, 0xdd, 0xc9, 0x4b, 0x04, 0x03, 0xea, 0x7f, 0xcf, 0xc1, 0xb5, 0x59, 0xfc,
- 0xbf, 0x4f, 0xc7, 0x33, 0xd3, 0x65, 0x2f, 0x66, 0xbb, 0xec, 0x5f, 0xc2, 0x7a, 0x8a, 0xd6, 0xd3,
- 0xf1, 0xa9, 0x6b, 0x79, 0x61, 0xc0, 0xb1, 0x96, 0x28, 0xe4, 0xb5, 0x19, 0x5a, 0xfd, 0x47, 0x39,
- 0x68, 0xce, 0x6a, 0x20, 0xfa, 0x69, 0x62, 0x5c, 0xa5, 0x5d, 0xf7, 0xf3, 0x3b, 0x3d, 0x1c, 0xda,
- 0x87, 0xf1, 0xa1, 0xbd, 0x73, 0x31, 0x83, 0xd8, 0xe8, 0xfe, 0xd1, 0x3c, 0x2c, 0x70, 0xef, 0x12,
- 0x7d, 0x05, 0xcb, 0x13, 0x57, 0x4f, 0x9d, 0xfc, 0x33, 0xc9, 0x36, 0xce, 0x71, 0x79, 0xb5, 0xa5,
- 0x49, 0xca, 0xd9, 0xfe, 0x30, 0x6c, 0x59, 0x3e, 0x79, 0x6f, 0x23, 0xe6, 0x11, 0x87, 0x0d, 0x49,
- 0x5e, 0x10, 0x29, 0x5c, 0xfa, 0x82, 0xc8, 0xcf, 0x60, 0x4d, 0x04, 0xb4, 0xdc, 0xf8, 0xf1, 0x2b,
- 0x66, 0x62, 0xaf, 0xf9, 0xc6, 0x05, 0x46, 0x52, 0x5b, 0xf5, 0x32, 0x4d, 0xf5, 0x13, 0x40, 0x53,
- 0x1f, 0x47, 0xa6, 0x85, 0xad, 0xb7, 0xf3, 0xc9, 0x13, 0xf9, 0xe4, 0x12, 0xa5, 0x29, 0xd3, 0xe4,
- 0xca, 0x98, 0x3a, 0x09, 0x2d, 0x25, 0x5b, 0x37, 0xfb, 0x24, 0x34, 0x6c, 0x5e, 0x40, 0xa7, 0xa9,
- 0x3e, 0x09, 0xe7, 0x29, 0xbf, 0x35, 0x72, 0xe3, 0x82, 0xe9, 0xcc, 0x9b, 0x97, 0x5a, 0x54, 0x0c,
- 0xd8, 0x20, 0x51, 0xaf, 0xce, 0xe2, 0xe1, 0xd4, 0xb8, 0xb3, 0x5b, 0x26, 0xea, 0xc5, 0x0a, 0xa5,
- 0x35, 0xc7, 0xb3, 0xf4, 0x3b, 0x76, 0xa7, 0xa3, 0x72, 0x89, 0x3b, 0x1d, 0xed, 0x30, 0x93, 0x91,
- 0xe4, 0x9a, 0xf0, 0x49, 0x2d, 0xa6, 0x3f, 0xff, 0x44, 0x57, 0xa1, 0x4c, 0x37, 0xc8, 0x27, 0xc6,
- 0x29, 0x5f, 0x59, 0x16, 0xc8, 0xf7, 0xbe, 0x71, 0xaa, 0xee, 0xd0, 0x37, 0x84, 0x71, 0x6f, 0xe5,
- 0xd5, 0xb9, 0x7c, 0x0b, 0x65, 0xc1, 0x05, 0x7d, 0x94, 0x98, 0xa9, 0xcd, 0x74, 0x33, 0x12, 0x0a,
- 0xfd, 0x41, 0x7c, 0x66, 0xae, 0xa5, 0x0b, 0xc4, 0x66, 0xe2, 0x14, 0x4a, 0xfc, 0x06, 0xe5, 0x06,
- 0x54, 0x2c, 0x57, 0x8f, 0xdd, 0x63, 0x29, 0x5b, 0xe2, 0x7a, 0xe5, 0x3b, 0xd0, 0x98, 0x18, 0xfe,
- 0xb7, 0xdc, 0x2d, 0xd7, 0x27, 0x3c, 0x23, 0x4c, 0x5d, 0xab, 0x13, 0x30, 0x73, 0xc9, 0xf7, 0x2d,
- 0x3b, 0x45, 0x67, 0x9c, 0xf2, 0xb8, 0x4f, 0xa6, 0x33, 0x4e, 0xd5, 0x3f, 0xca, 0x01, 0x44, 0x2f,
- 0xe6, 0xfe, 0x82, 0xcf, 0x1a, 0x09, 0x6c, 0x6c, 0xf9, 0x01, 0xbd, 0xd8, 0x5f, 0xd1, 0xe8, 0x6f,
- 0xfa, 0x52, 0x2b, 0x7e, 0x9f, 0x52, 0x49, 0xaa, 0xbd, 0x74, 0x89, 0x72, 0x17, 0xca, 0xfb, 0x46,
- 0x30, 0x38, 0x26, 0xc2, 0xdc, 0x89, 0x09, 0x23, 0xb9, 0x23, 0x94, 0xe2, 0x82, 0x17, 0x96, 0xcf,
- 0xa0, 0x16, 0x0b, 0x53, 0x36, 0x63, 0xcc, 0xa4, 0xe9, 0x2b, 0x53, 0x49, 0x3c, 0xaf, 0x40, 0x49,
- 0x0a, 0x7d, 0xea, 0x1a, 0xff, 0x52, 0xff, 0xcb, 0x3c, 0xc0, 0xb6, 0x63, 0x9b, 0x16, 0x5b, 0x23,
- 0xee, 0x03, 0x7f, 0xd3, 0xaf, 0x47, 0xcf, 0x14, 0x51, 0x42, 0xd2, 0x43, 0x1c, 0x68, 0x15, 0x46,
- 0x45, 0x9a, 0xf5, 0x29, 0xd4, 0xc2, 0xc3, 0x2d, 0x52, 0x28, 0x3f, 0xb3, 0x50, 0x78, 0x7f, 0x9c,
- 0x14, 0xfb, 0x31, 0x2c, 0x26, 0x62, 0xb2, 0x42, 0x72, 0x6f, 0x5c, 0x6e, 0x8a, 0x56, 0x33, 0xe4,
- 0xe6, 0x3f, 0x80, 0xaa, 0x28, 0x4d, 0xea, 0x2c, 0xce, 0x16, 0x94, 0x15, 0x23, 0x35, 0x7e, 0x16,
- 0xe6, 0x51, 0x09, 0xce, 0x68, 0xa9, 0xf9, 0x99, 0xa5, 0x6a, 0x21, 0x21, 0x29, 0xf8, 0x13, 0x58,
- 0x22, 0x01, 0x57, 0xbc, 0x70, 0x69, 0x66, 0xe1, 0x06, 0x3e, 0x0d, 0xb6, 0xe5, 0xf2, 0x37, 0xa0,
- 0xea, 0xb9, 0xdf, 0x5a, 0x64, 0x29, 0x9a, 0x8e, 0x03, 0xba, 0xcc, 0xcd, 0x6b, 0xe0, 0xb1, 0x07,
- 0xd5, 0xd3, 0x71, 0x80, 0x1e, 0x02, 0x44, 0xaf, 0xa4, 0xf9, 0x89, 0xb5, 0x74, 0xf4, 0x14, 0x8d,
- 0x0f, 0x5f, 0x11, 0xc9, 0xb0, 0x56, 0xc2, 0x47, 0xd4, 0xe8, 0x11, 0x2c, 0x8f, 0xc9, 0x6a, 0x98,
- 0x90, 0xb0, 0x32, 0x53, 0xc2, 0x25, 0x4a, 0x1e, 0x93, 0xf1, 0x0e, 0x28, 0x51, 0x54, 0x69, 0xeb,
- 0x54, 0xed, 0x81, 0xaa, 0x7d, 0xdd, 0xe6, 0xc1, 0xa4, 0xbd, 0x47, 0xf4, 0xff, 0x23, 0xa8, 0x8a,
- 0x7b, 0x70, 0xba, 0x65, 0xd3, 0xeb, 0x37, 0x8b, 0xf2, 0x14, 0x78, 0x4c, 0xb7, 0x6f, 0xb4, 0x0a,
- 0xbf, 0x08, 0xd7, 0xb1, 0xd5, 0x63, 0xa8, 0x84, 0x62, 0xa3, 0x65, 0x68, 0x68, 0xdd, 0xa7, 0xfd,
- 0xb6, 0xde, 0xff, 0xa6, 0x17, 0xbe, 0x4a, 0x59, 0x83, 0x65, 0x09, 0xd8, 0x39, 0xe8, 0xb7, 0xb5,
- 0x83, 0xd6, 0x9e, 0x92, 0x4b, 0x20, 0xda, 0xcf, 0x39, 0x22, 0x8f, 0x56, 0x40, 0x91, 0x10, 0x3c,
- 0xd1, 0x88, 0x3a, 0x84, 0x46, 0xd8, 0xa8, 0x16, 0x4b, 0x36, 0x74, 0x3f, 0x36, 0x4f, 0xae, 0xc9,
- 0x9d, 0x1a, 0x23, 0x94, 0xa6, 0xca, 0x4d, 0xa8, 0x8a, 0x8e, 0xb4, 0xc2, 0x37, 0xeb, 0x32, 0x48,
- 0x3d, 0x80, 0xca, 0x3e, 0x36, 0x79, 0x0d, 0xef, 0xc5, 0x6a, 0x58, 0x93, 0x4f, 0xc3, 0xcc, 0x14,
- 0xef, 0x15, 0x98, 0x3f, 0x31, 0xc6, 0x53, 0x91, 0xd2, 0x83, 0x7d, 0xa8, 0x3a, 0x34, 0x5a, 0x7e,
- 0xcf, 0xc3, 0x2e, 0xb6, 0x05, 0x57, 0x05, 0x0a, 0x86, 0x6f, 0x73, 0xbf, 0x9a, 0xfc, 0x24, 0x33,
- 0x98, 0x50, 0x18, 0xe1, 0x31, 0x13, 0xfb, 0x42, 0x2a, 0xd4, 0x89, 0x59, 0x1f, 0xe3, 0x61, 0xa0,
- 0x4f, 0x1c, 0x3f, 0xe0, 0xde, 0x61, 0x75, 0xea, 0xe3, 0x3d, 0x3c, 0x0c, 0xf6, 0x1d, 0xfa, 0xce,
- 0xab, 0xce, 0x9f, 0x5a, 0x70, 0xf6, 0xe7, 0xa6, 0x47, 0xf0, 0xf1, 0x78, 0xc8, 0x3d, 0x50, 0xfa,
- 0x5b, 0xbd, 0x03, 0x8d, 0x3d, 0x7a, 0x50, 0xe0, 0xe1, 0x21, 0x67, 0x10, 0x36, 0x84, 0x1f, 0x85,
- 0xb1, 0x86, 0xfc, 0xd7, 0x02, 0x2c, 0x30, 0x02, 0x3f, 0xba, 0xb0, 0x69, 0xb0, 0x3d, 0x86, 0xd4,
- 0x1a, 0x4c, 0x95, 0x82, 0x51, 0xf3, 0x0b, 0x9b, 0x9c, 0xf7, 0x67, 0x50, 0x89, 0x4e, 0x89, 0xf3,
- 0xc9, 0x9b, 0x9a, 0x89, 0x81, 0xd3, 0x22, 0x5a, 0x74, 0x1b, 0x0a, 0x13, 0xee, 0x1e, 0xc7, 0xe2,
- 0xbd, 0x70, 0x24, 0x34, 0x82, 0x47, 0x9f, 0x03, 0x90, 0xc5, 0x83, 0xf5, 0x37, 0x5f, 0x3b, 0xae,
- 0xc6, 0x96, 0x1d, 0x79, 0x28, 0xe8, 0x12, 0xc2, 0x00, 0xe8, 0x27, 0x50, 0x8f, 0xad, 0x04, 0x7c,
- 0x09, 0x39, 0x47, 0xba, 0x9a, 0xbc, 0x18, 0xa0, 0xfb, 0xb0, 0xc0, 0xdf, 0xc2, 0xf0, 0xf5, 0x43,
- 0x52, 0x97, 0xd8, 0x00, 0x69, 0x82, 0x8e, 0x08, 0xcb, 0x8f, 0x6d, 0x3c, 0x3c, 0xe4, 0x2e, 0xd2,
- 0x55, 0xd9, 0x8b, 0x89, 0x8d, 0x8b, 0x38, 0xd1, 0xf1, 0xf0, 0x10, 0x3d, 0x82, 0x46, 0x62, 0x59,
- 0xe0, 0x4e, 0xd0, 0x39, 0xe2, 0x2e, 0xc6, 0x57, 0x06, 0xf5, 0x57, 0x39, 0xa8, 0x84, 0x8f, 0x53,
- 0x43, 0xc3, 0x94, 0x93, 0x6c, 0xe4, 0x27, 0x00, 0x83, 0x70, 0x7d, 0xe2, 0xa3, 0xb5, 0x92, 0xb5,
- 0x76, 0x69, 0x12, 0x1d, 0x7a, 0x0f, 0x16, 0x98, 0x5a, 0xf8, 0x7c, 0xb4, 0xe4, 0xbb, 0xb4, 0x0c,
- 0xa1, 0x09, 0x0a, 0xf5, 0x6b, 0x28, 0x71, 0xdf, 0x38, 0x4b, 0x80, 0xf8, 0xf3, 0xf6, 0xfc, 0xe5,
- 0x9e, 0xb7, 0xff, 0x8f, 0x1c, 0x28, 0xc9, 0xab, 0xa7, 0xe8, 0x6e, 0x6c, 0x26, 0xaf, 0x24, 0x2f,
- 0xa9, 0x4a, 0xd3, 0x58, 0xce, 0x06, 0x95, 0xbf, 0x44, 0x36, 0xa8, 0xac, 0xfc, 0x97, 0xf2, 0x93,
- 0xef, 0xe2, 0x45, 0x4f, 0xbe, 0xd1, 0x87, 0xb0, 0x60, 0xe2, 0xa1, 0x41, 0xec, 0xc7, 0xfc, 0x79,
- 0x13, 0x49, 0x50, 0xa9, 0xbf, 0xce, 0x41, 0x9d, 0x20, 0xa2, 0x74, 0x4d, 0x9f, 0x42, 0xd5, 0x64,
- 0x6e, 0x0f, 0x37, 0xee, 0xb3, 0x53, 0x32, 0x80, 0x19, 0xf9, 0x50, 0x0f, 0x61, 0x89, 0xc5, 0x30,
- 0x3a, 0x05, 0x5a, 0xfc, 0xbe, 0x4c, 0xb6, 0xc0, 0x0a, 0x23, 0xdd, 0x09, 0x29, 0xd5, 0xbf, 0x9f,
- 0x83, 0x82, 0xe6, 0x18, 0x68, 0x11, 0xf2, 0x86, 0xd8, 0xdd, 0xc9, 0x1b, 0x3e, 0x7a, 0x0b, 0xb8,
- 0x0f, 0x31, 0xc6, 0xc2, 0xe7, 0x8b, 0x00, 0x64, 0xb1, 0x9b, 0x18, 0x14, 0xc5, 0x5f, 0xb3, 0xb0,
- 0x2f, 0xe9, 0x46, 0x74, 0x31, 0x76, 0x23, 0x5a, 0x3c, 0xe4, 0x98, 0x3f, 0x3f, 0x59, 0x8e, 0x7a,
- 0x87, 0x3d, 0x2a, 0x72, 0x8c, 0x8b, 0x12, 0xe0, 0xb0, 0x5c, 0x1f, 0x94, 0x30, 0xca, 0xf5, 0xe1,
- 0x39, 0x46, 0x46, 0xae, 0x0f, 0x42, 0x44, 0x51, 0xea, 0xbf, 0xce, 0x41, 0xe1, 0x99, 0x37, 0xcc,
- 0x54, 0xd3, 0xb7, 0x21, 0xef, 0x99, 0xd2, 0xfc, 0x48, 0xdf, 0x3c, 0xcd, 0x7b, 0x26, 0xba, 0x0f,
- 0x15, 0x7e, 0x61, 0xda, 0x0b, 0xf8, 0x7b, 0xd2, 0x19, 0xd7, 0x54, 0x19, 0x99, 0x46, 0x53, 0x16,
- 0xf0, 0x4b, 0xda, 0x5e, 0xc0, 0x15, 0x69, 0x46, 0x11, 0x46, 0xa6, 0x05, 0xfc, 0x66, 0x2b, 0xbb,
- 0x81, 0x97, 0xb7, 0x4c, 0xf5, 0x37, 0x39, 0x58, 0xd9, 0x61, 0x7a, 0x43, 0x75, 0x69, 0xc7, 0xf2,
- 0x03, 0xc3, 0x1e, 0x60, 0xb4, 0x05, 0xe1, 0x56, 0x37, 0xdb, 0xc5, 0xd6, 0x4d, 0x8e, 0xe2, 0xdd,
- 0xb5, 0x2a, 0xd0, 0xa9, 0x72, 0xf4, 0xd0, 0x3c, 0xa3, 0x1c, 0x1b, 0xea, 0x55, 0x81, 0x8e, 0x95,
- 0x53, 0xff, 0x5d, 0x11, 0x4a, 0xec, 0x8d, 0x70, 0x4a, 0x5f, 0x36, 0xa0, 0x12, 0x6d, 0xc3, 0xf3,
- 0x6c, 0x70, 0x9e, 0xd8, 0x77, 0xbf, 0x01, 0x55, 0xe2, 0xb1, 0x60, 0x9b, 0x9d, 0x26, 0x17, 0x98,
- 0x87, 0xc5, 0x40, 0xf4, 0x34, 0xf9, 0x5d, 0x50, 0x38, 0x01, 0xb7, 0x73, 0x7c, 0xd2, 0x55, 0xb4,
- 0x06, 0x83, 0xb7, 0x04, 0x38, 0xf6, 0xec, 0x63, 0x3e, 0xf1, 0xec, 0xe3, 0xfd, 0xcc, 0x10, 0x9a,
- 0x9f, 0xb9, 0xa6, 0xc2, 0xe4, 0x5f, 0xcc, 0x8e, 0xe4, 0x17, 0x5e, 0x65, 0xb3, 0x7c, 0x46, 0x3c,
- 0xdf, 0x87, 0x2b, 0x7c, 0xb2, 0x27, 0xfb, 0x98, 0x2d, 0xf3, 0xd7, 0x63, 0x53, 0x3b, 0x35, 0xb8,
- 0xda, 0x8a, 0x99, 0x35, 0xe4, 0x0f, 0xe9, 0xb5, 0x8b, 0x21, 0x36, 0xb1, 0xc7, 0x9e, 0xcc, 0x56,
- 0x92, 0x86, 0x6a, 0x5b, 0x46, 0x6b, 0x71, 0xea, 0x37, 0xf4, 0xd8, 0x22, 0xb9, 0x7b, 0x52, 0xbd,
- 0xec, 0xee, 0x89, 0xea, 0x40, 0x3d, 0x26, 0xdf, 0x39, 0xfb, 0x6d, 0xf1, 0xd7, 0xa6, 0xf9, 0xd4,
- 0x6b, 0xd3, 0xb7, 0x61, 0x91, 0x6d, 0x4e, 0xe8, 0x86, 0xaf, 0x87, 0x71, 0x60, 0x5d, 0xab, 0x31,
- 0x68, 0xcb, 0x27, 0xfe, 0xb0, 0xfa, 0x67, 0x39, 0xa8, 0xd0, 0x67, 0x74, 0x1d, 0x7b, 0xe8, 0x7c,
- 0x2f, 0x2f, 0xf8, 0xee, 0x40, 0xc3, 0x9e, 0x4e, 0x74, 0xe9, 0xf5, 0x24, 0xbf, 0x88, 0xb2, 0x68,
- 0x4f, 0x27, 0xf2, 0xeb, 0xd3, 0xab, 0x50, 0xb6, 0xf9, 0x3e, 0xba, 0xb8, 0xf7, 0x64, 0xb3, 0x2d,
- 0x74, 0x74, 0x0b, 0x6a, 0x04, 0x15, 0x5e, 0x42, 0x63, 0x37, 0x4d, 0xaa, 0xf6, 0x74, 0xd2, 0xe2,
- 0x20, 0xf5, 0xc7, 0x34, 0x17, 0x80, 0x66, 0x1d, 0x91, 0x86, 0x88, 0xe5, 0x51, 0x3c, 0x3c, 0x4b,
- 0xa5, 0x42, 0x09, 0x9b, 0xcc, 0xde, 0xfe, 0xa8, 0x0f, 0x69, 0x42, 0xeb, 0xb0, 0x34, 0x5f, 0x33,
- 0x2f, 0x5d, 0xdc, 0xa5, 0xe9, 0x66, 0xb6, 0x9d, 0x31, 0x7f, 0x88, 0x34, 0x33, 0xa1, 0xd4, 0x1a,
- 0x2c, 0x98, 0x47, 0xba, 0xd4, 0x77, 0x25, 0xf3, 0x88, 0xde, 0x0c, 0xde, 0x84, 0x65, 0xfa, 0x8c,
- 0x53, 0xa7, 0xf9, 0x24, 0x93, 0xb7, 0x7d, 0x28, 0x6a, 0x67, 0x3a, 0x71, 0xc3, 0xeb, 0x46, 0x2c,
- 0x2d, 0x8d, 0x54, 0x23, 0x7f, 0x71, 0xb8, 0x04, 0x0d, 0x91, 0x0a, 0x54, 0xa4, 0x1e, 0x40, 0xa0,
- 0x44, 0x20, 0x46, 0x76, 0xef, 0x0f, 0x0a, 0x50, 0x62, 0xa1, 0x0e, 0xaa, 0x41, 0x59, 0x6b, 0x1f,
- 0xb6, 0xb5, 0x67, 0xed, 0x1d, 0x65, 0x0e, 0x01, 0x14, 0x3b, 0xbd, 0x93, 0x4f, 0x94, 0x97, 0x2f,
- 0x8a, 0xfc, 0xf7, 0x96, 0xf2, 0xf2, 0x45, 0x19, 0xd5, 0x61, 0x81, 0xc0, 0xf5, 0xfd, 0x6d, 0xe5,
- 0x57, 0x2f, 0x8a, 0xfc, 0x73, 0x8b, 0x7d, 0x96, 0x51, 0x03, 0x2a, 0x0c, 0xdb, 0xdb, 0x3b, 0x54,
- 0xfe, 0xf0, 0x45, 0x91, 0x03, 0xb6, 0x04, 0xa0, 0x8c, 0x16, 0xa1, 0x4c, 0x29, 0x9e, 0xf5, 0x0e,
- 0x94, 0x17, 0x2f, 0x8b, 0xfc, 0x7b, 0x8b, 0x7f, 0x97, 0xd1, 0x12, 0x54, 0x05, 0x9e, 0x30, 0x7d,
- 0xf9, 0xb2, 0xc8, 0x41, 0x5b, 0x11, 0xa8, 0x4c, 0x24, 0x7a, 0x46, 0x38, 0xfe, 0x87, 0x17, 0x26,
- 0xf9, 0xdd, 0x26, 0xa5, 0xff, 0xec, 0x85, 0x89, 0x2a, 0x50, 0xd0, 0xfa, 0xdb, 0xca, 0x1f, 0xbe,
- 0x2c, 0x22, 0x05, 0x80, 0x32, 0x6a, 0x1f, 0x6c, 0xb7, 0x7a, 0xca, 0xdf, 0x7d, 0x21, 0x20, 0x5b,
- 0x21, 0xa4, 0x8c, 0x56, 0x60, 0xf1, 0xf1, 0x5e, 0xf7, 0x67, 0xfa, 0x61, 0xaf, 0xbd, 0xad, 0xd3,
- 0xe6, 0xfe, 0xfa, 0x65, 0x31, 0x05, 0xdd, 0x52, 0x7e, 0xfd, 0xb2, 0x8c, 0x9a, 0x80, 0xe2, 0xb4,
- 0x54, 0xe4, 0xdf, 0xbc, 0x2c, 0xa6, 0x30, 0x5b, 0x1c, 0x53, 0x46, 0x57, 0x40, 0x89, 0x30, 0x7b,
- 0x0f, 0x38, 0xdc, 0x44, 0x8b, 0x50, 0xea, 0xf6, 0x5a, 0x5f, 0x3f, 0x6d, 0x2b, 0xff, 0xeb, 0xe5,
- 0x9f, 0xbc, 0x28, 0xde, 0xdb, 0x86, 0xb2, 0x98, 0x58, 0x08, 0xa0, 0xb4, 0xbb, 0xd7, 0x7d, 0xd4,
- 0xda, 0x53, 0xe6, 0xa2, 0xe4, 0x93, 0xf4, 0xce, 0x63, 0x6b, 0xe7, 0xf7, 0xf4, 0xce, 0x81, 0x92,
- 0x47, 0x55, 0x58, 0x20, 0xbf, 0xbb, 0x4f, 0xfb, 0x2c, 0x2b, 0xe5, 0x33, 0xed, 0xb1, 0x52, 0xbc,
- 0xb7, 0x17, 0x7b, 0xf7, 0xcb, 0x56, 0x57, 0xa4, 0x40, 0x6d, 0xaf, 0xdb, 0xfd, 0xea, 0x69, 0x4f,
- 0x6f, 0x3f, 0x6f, 0x6d, 0xf7, 0x95, 0x39, 0xb4, 0x04, 0x75, 0x0e, 0xd9, 0xeb, 0x1e, 0xec, 0xb6,
- 0x35, 0x25, 0x87, 0x10, 0x2c, 0x72, 0xd0, 0xe1, 0x93, 0xae, 0xd6, 0x6f, 0x6b, 0x4a, 0xfe, 0xde,
- 0xaf, 0xe8, 0x93, 0xf0, 0x70, 0x77, 0x89, 0xde, 0xb9, 0xd4, 0xda, 0x8f, 0x3b, 0xcf, 0x95, 0x39,
- 0xa2, 0x29, 0x07, 0xed, 0xce, 0xee, 0x93, 0x47, 0x5d, 0x52, 0x7a, 0x01, 0x0a, 0xfd, 0xd6, 0x2e,
- 0x17, 0xeb, 0x50, 0xef, 0xb5, 0xfa, 0x4f, 0x94, 0x02, 0xaa, 0x43, 0x65, 0xbb, 0xbb, 0xbf, 0xff,
- 0xf4, 0xa0, 0xd3, 0xff, 0x46, 0x21, 0x63, 0x58, 0x6f, 0x3f, 0xef, 0xeb, 0x11, 0x68, 0x9e, 0x84,
- 0xd0, 0x7b, 0x2d, 0x6d, 0xb7, 0x2d, 0x01, 0x4b, 0x8c, 0xf5, 0xf3, 0xbe, 0xfe, 0xa4, 0xdb, 0x53,
- 0x16, 0xee, 0xbd, 0x0b, 0x95, 0x70, 0x53, 0x89, 0x5e, 0x03, 0x3f, 0xf8, 0x46, 0xbe, 0x0f, 0x0e,
- 0x50, 0xea, 0x1c, 0x3c, 0x6b, 0x6b, 0x7d, 0x25, 0x7f, 0xef, 0x1e, 0x28, 0xc9, 0x2d, 0x23, 0x54,
- 0x82, 0x7c, 0xfb, 0x6b, 0x65, 0x8e, 0xfc, 0xdd, 0x6d, 0x2b, 0x39, 0xf2, 0x77, 0xaf, 0xad, 0xe4,
- 0xef, 0x7d, 0xc8, 0xaf, 0x5e, 0xf1, 0x38, 0x2d, 0xba, 0x69, 0x4e, 0x3a, 0x79, 0x7b, 0xbb, 0xdd,
- 0xeb, 0x33, 0xe6, 0x5a, 0xfb, 0xf7, 0xda, 0xdb, 0x84, 0xf9, 0x53, 0x58, 0xce, 0x88, 0xb3, 0x49,
- 0xa3, 0x42, 0xd9, 0xf5, 0xd6, 0x0e, 0x99, 0x36, 0x2b, 0xa0, 0x44, 0x20, 0xad, 0xbd, 0xdf, 0x7d,
- 0x46, 0x2a, 0x5e, 0x85, 0x25, 0x19, 0xca, 0xaf, 0xb0, 0xdf, 0xfb, 0x00, 0xea, 0xb1, 0xe0, 0x9a,
- 0xf4, 0xe0, 0x7e, 0x7b, 0x47, 0xdf, 0xef, 0x12, 0x56, 0x0d, 0xa8, 0x92, 0x0f, 0x41, 0x9e, 0xbb,
- 0xf7, 0x3e, 0x40, 0xe4, 0xc1, 0x87, 0xe9, 0x87, 0x49, 0x27, 0xec, 0xf7, 0xba, 0x1a, 0x97, 0xb9,
- 0xfd, 0x9c, 0xfe, 0xce, 0x3f, 0xf8, 0x8f, 0xb7, 0xa1, 0xbc, 0x4b, 0xd6, 0xa9, 0x96, 0x6b, 0xa1,
- 0x3d, 0xa8, 0x4a, 0x19, 0x4a, 0xd0, 0x5b, 0xb1, 0xb8, 0x22, 0x91, 0xf8, 0x64, 0xfd, 0xda, 0x0c,
- 0x2c, 0x5f, 0x59, 0xe6, 0x50, 0x07, 0x20, 0xca, 0x61, 0x82, 0x36, 0x64, 0xf2, 0x44, 0xba, 0x93,
- 0xf5, 0xb7, 0xb2, 0x91, 0x21, 0xab, 0xc7, 0x50, 0x09, 0x33, 0xb7, 0x20, 0x69, 0xfb, 0x2f, 0x99,
- 0xe2, 0x65, 0x7d, 0x23, 0x13, 0x17, 0xf2, 0xd9, 0x83, 0xaa, 0x94, 0xca, 0x5d, 0x6e, 0x60, 0x3a,
- 0x37, 0xbc, 0xdc, 0xc0, 0xac, 0xfc, 0xef, 0x73, 0xe8, 0x29, 0x2c, 0xc6, 0x93, 0xb8, 0xa3, 0x1b,
- 0xb2, 0x13, 0x92, 0x91, 0x1b, 0x7e, 0xfd, 0xe6, 0x6c, 0x02, 0x99, 0x6d, 0x3c, 0x37, 0xbb, 0xcc,
- 0x36, 0x33, 0x37, 0xbc, 0xcc, 0x36, 0x3b, 0xad, 0x3b, 0x6b, 0xbb, 0xf4, 0x8f, 0x12, 0xe4, 0xb6,
- 0xa7, 0xff, 0x37, 0x83, 0xdc, 0xf6, 0x8c, 0xff, 0xae, 0xa0, 0xce, 0x21, 0x0d, 0xea, 0xb1, 0xbc,
- 0xd5, 0xe8, 0x7a, 0xcc, 0xfa, 0xa7, 0x39, 0xde, 0x98, 0x89, 0x0f, 0x79, 0xfe, 0x75, 0x58, 0x4a,
- 0xe5, 0xc3, 0x46, 0xea, 0xc5, 0x79, 0xb9, 0xd7, 0x7f, 0x74, 0x2e, 0x4d, 0xc8, 0xff, 0xaf, 0x45,
- 0x96, 0x2d, 0x64, 0x2f, 0xdd, 0x23, 0x9b, 0x91, 0x6e, 0x7b, 0x5d, 0x3d, 0x8f, 0x44, 0x1e, 0xb5,
- 0x78, 0x16, 0x6c, 0x79, 0xd4, 0x32, 0x53, 0x6a, 0xcb, 0xa3, 0x36, 0x23, 0x81, 0xf6, 0x1c, 0x7a,
- 0x0e, 0x8d, 0x44, 0xa2, 0x6b, 0x24, 0xeb, 0x50, 0x66, 0x76, 0xed, 0xf5, 0x5b, 0xe7, 0x50, 0x84,
- 0x9c, 0x1f, 0x42, 0x89, 0xf9, 0x30, 0x68, 0x2d, 0x36, 0xd8, 0x51, 0xfa, 0x83, 0xf5, 0x66, 0x1a,
- 0x11, 0x16, 0xff, 0x0c, 0x16, 0x78, 0x3e, 0x07, 0x14, 0x27, 0x93, 0x52, 0x3c, 0xac, 0x27, 0x52,
- 0x7f, 0xa8, 0x73, 0x1f, 0xe5, 0x88, 0x1e, 0x4a, 0xb9, 0x0f, 0x64, 0x3d, 0x4c, 0x27, 0x60, 0x90,
- 0xf5, 0x30, 0x2b, 0x61, 0xc2, 0x1c, 0xfa, 0x29, 0x2c, 0xf0, 0x13, 0x19, 0x94, 0x3e, 0xd5, 0x11,
- 0x5c, 0xae, 0x66, 0x60, 0xe4, 0x65, 0x2a, 0xfa, 0x77, 0x11, 0xf2, 0x32, 0x95, 0xfa, 0x87, 0x17,
- 0xf2, 0x32, 0x95, 0xf1, 0x1f, 0x26, 0xe6, 0xd0, 0x0e, 0x40, 0x94, 0x88, 0x59, 0x66, 0x95, 0x4a,
- 0xcf, 0xbc, 0x9e, 0x9d, 0x35, 0x84, 0x76, 0xd0, 0x97, 0x61, 0xf2, 0xe9, 0xe8, 0x95, 0x8f, 0xe4,
- 0x4c, 0x86, 0xff, 0xaf, 0x64, 0x3d, 0xf1, 0x3f, 0x20, 0x68, 0xe1, 0xc7, 0x50, 0x09, 0xb3, 0x81,
- 0xcb, 0x2b, 0x65, 0x32, 0x17, 0xb9, 0xbc, 0x52, 0xa6, 0xd3, 0x87, 0xb3, 0x5e, 0x09, 0x73, 0x85,
- 0xc7, 0x7a, 0x25, 0x99, 0x56, 0x3c, 0xd6, 0x2b, 0xe9, 0xf4, 0xe2, 0x73, 0xe8, 0x09, 0x54, 0xc2,
- 0xfc, 0xde, 0xb2, 0x48, 0xc9, 0xac, 0xe3, 0xb2, 0x48, 0xe9, 0x84, 0xe0, 0x73, 0x77, 0x73, 0x44,
- 0x65, 0x59, 0x46, 0x6d, 0xb4, 0x36, 0x23, 0xa1, 0xf7, 0x7a, 0x33, 0x8d, 0x90, 0xad, 0x48, 0x98,
- 0x3c, 0x5b, 0x16, 0x24, 0x99, 0x93, 0x7b, 0x7d, 0x23, 0x13, 0x27, 0xeb, 0x1c, 0x4f, 0x17, 0x9c,
- 0x50, 0x7d, 0x29, 0xcf, 0xac, 0xac, 0x73, 0x89, 0xdc, 0xc2, 0xa1, 0xd6, 0x26, 0x39, 0xc4, 0xd3,
- 0x08, 0x27, 0xb4, 0x36, 0xc1, 0x21, 0xd4, 0x5a, 0xca, 0x24, 0x25, 0xb0, 0xcc, 0xe7, 0xad, 0x6c,
- 0xa4, 0xcc, 0x2a, 0xca, 0xe4, 0x8b, 0x52, 0x7a, 0x31, 0x83, 0x55, 0x46, 0xf2, 0x5f, 0x6a, 0x63,
- 0xa4, 0x74, 0xbe, 0x28, 0xad, 0x19, 0x32, 0xb3, 0x6b, 0x33, 0xb0, 0xf2, 0x78, 0x85, 0xc9, 0x78,
- 0xe5, 0xf1, 0x4a, 0xe6, 0xf4, 0x95, 0xc7, 0x2b, 0x9d, 0xbd, 0x97, 0xda, 0xaa, 0x58, 0x62, 0x5f,
- 0xd9, 0x56, 0x65, 0xe5, 0x08, 0x96, 0x6d, 0x55, 0x76, 0x46, 0xe0, 0x70, 0xf5, 0x74, 0x8c, 0xe4,
- 0xea, 0x19, 0x6e, 0xb6, 0x25, 0x57, 0xcf, 0x68, 0x73, 0x8d, 0x75, 0x94, 0x94, 0x84, 0x17, 0xa5,
- 0xfa, 0x55, 0x4e, 0x34, 0x2c, 0x77, 0x54, 0x56, 0xe6, 0xde, 0x39, 0x3e, 0x2f, 0x9e, 0x79, 0xc3,
- 0xc4, 0xbc, 0x88, 0x12, 0xe8, 0x26, 0xe6, 0x85, 0x9c, 0x24, 0x57, 0x9a, 0x17, 0x84, 0x43, 0x6a,
- 0x5e, 0x48, 0x4c, 0x36, 0x32, 0x71, 0x89, 0x3e, 0x49, 0x88, 0x11, 0x4b, 0x2a, 0x9c, 0xe8, 0x93,
- 0x78, 0x71, 0x8d, 0xee, 0x56, 0x4a, 0xe7, 0xd9, 0xd7, 0x63, 0xc4, 0xa9, 0xf4, 0xb2, 0xf2, 0x30,
- 0x65, 0xe6, 0xe3, 0x65, 0x3c, 0x63, 0x79, 0x72, 0x65, 0x9e, 0x59, 0x09, 0x78, 0x65, 0x9e, 0xd9,
- 0x09, 0x76, 0xa9, 0x1b, 0x91, 0xcc, 0x86, 0x2b, 0xbb, 0x11, 0x33, 0xd2, 0xef, 0xca, 0x6e, 0xc4,
- 0xcc, 0x64, 0xba, 0xd4, 0x07, 0x4a, 0xa5, 0xc2, 0x95, 0x7d, 0xa0, 0x59, 0xb9, 0x76, 0x65, 0x1f,
- 0x68, 0x76, 0x2e, 0xdd, 0x39, 0xd4, 0x85, 0x9a, 0x9c, 0x36, 0x17, 0xc5, 0x1d, 0xbd, 0x64, 0x86,
- 0xd8, 0xf5, 0xeb, 0xb3, 0xd0, 0x32, 0x43, 0x39, 0xe1, 0x2d, 0x8a, 0x7b, 0xcd, 0xe7, 0x31, 0xcc,
- 0xcc, 0x93, 0xcb, 0x3c, 0x9e, 0x78, 0x2a, 0x5b, 0x94, 0xf2, 0x9a, 0x53, 0x6c, 0x6f, 0x9d, 0x43,
- 0x21, 0x0f, 0x5c, 0x32, 0x77, 0xad, 0x3c, 0x70, 0x33, 0xb2, 0xe4, 0xae, 0xab, 0xe7, 0x91, 0x24,
- 0x42, 0x14, 0x7e, 0xf8, 0x10, 0x0f, 0x51, 0x62, 0x99, 0x58, 0x13, 0x21, 0x4a, 0x22, 0xed, 0x29,
- 0xe5, 0x13, 0x66, 0xfa, 0x94, 0xf9, 0x24, 0x53, 0xe0, 0xca, 0x7c, 0xd2, 0x49, 0x6a, 0xe9, 0xb8,
- 0xc8, 0x39, 0x3a, 0xe5, 0x71, 0xc9, 0xc8, 0x5e, 0xbb, 0x7e, 0x7d, 0x16, 0x3a, 0xee, 0xf1, 0x4b,
- 0x49, 0x37, 0xe3, 0x1e, 0x7f, 0x3a, 0xe5, 0x6c, 0xdc, 0xe3, 0xcf, 0xca, 0xf1, 0x4a, 0x85, 0x94,
- 0xff, 0x79, 0x8a, 0x2c, 0x64, 0xc6, 0xff, 0x70, 0x91, 0x85, 0xcc, 0xfc, 0x9f, 0x2b, 0x73, 0xc8,
- 0xa4, 0xc9, 0xa2, 0x53, 0x67, 0x5d, 0x6f, 0x67, 0xf4, 0x79, 0x2a, 0x25, 0xe9, 0xfa, 0xed, 0x0b,
- 0xa8, 0xe4, 0x5a, 0x32, 0xb2, 0xb1, 0xca, 0xb5, 0xcc, 0x4e, 0x03, 0x2b, 0xd7, 0x72, 0x5e, 0x4a,
- 0xd7, 0x39, 0x34, 0x09, 0xff, 0xef, 0x55, 0xb2, 0xa2, 0x3b, 0xd9, 0x83, 0x95, 0xae, 0xeb, 0xee,
- 0xc5, 0x84, 0x61, 0x75, 0x6e, 0x98, 0x27, 0x3a, 0x7d, 0x54, 0x38, 0x63, 0x24, 0xd3, 0x15, 0xbe,
- 0x7b, 0x09, 0x4a, 0xd9, 0xf1, 0x88, 0x76, 0x51, 0xd1, 0x46, 0x32, 0xd8, 0x90, 0x76, 0x66, 0xd7,
- 0xdf, 0xca, 0x46, 0x26, 0x56, 0xa1, 0x28, 0x9b, 0x55, 0x7c, 0x15, 0x4a, 0xfe, 0x3f, 0xaf, 0xc4,
- 0x2a, 0x94, 0xfe, 0x4f, 0x60, 0xd2, 0x2a, 0x14, 0xf1, 0x4c, 0xad, 0x42, 0x29, 0xb6, 0xb7, 0xce,
- 0xa1, 0x90, 0x39, 0x27, 0xfe, 0xdd, 0x17, 0x4a, 0x85, 0xef, 0xe7, 0x71, 0x9e, 0xf1, 0xbf, 0xc2,
- 0xd4, 0x39, 0x64, 0xd0, 0x7f, 0x71, 0x97, 0x4c, 0xab, 0xf4, 0xa3, 0xb8, 0x45, 0xcb, 0xfc, 0xe7,
- 0x60, 0xeb, 0x6f, 0x9f, 0x4f, 0x94, 0xe8, 0xe7, 0x70, 0x1f, 0x39, 0xd1, 0xcf, 0xc9, 0x1d, 0xed,
- 0x44, 0x3f, 0xa7, 0xb7, 0x9f, 0xe7, 0xd0, 0x36, 0x94, 0x45, 0x50, 0x8d, 0xae, 0xa6, 0x03, 0x6d,
- 0xc1, 0x68, 0x3d, 0x0b, 0x25, 0x98, 0x1c, 0x95, 0xe8, 0xc9, 0xdf, 0xc7, 0xff, 0x2f, 0x00, 0x00,
- 0xff, 0xff, 0xaf, 0xa4, 0x81, 0xd6, 0x9a, 0x72, 0x00, 0x00,
+ // 7709 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x4d, 0x6c, 0x1c, 0x47,
+ 0x76, 0xb0, 0xe7, 0x87, 0xc3, 0x99, 0x37, 0x7f, 0xcd, 0x22, 0x25, 0x52, 0x94, 0x2d, 0xc9, 0xbd,
+ 0xb6, 0x25, 0xd3, 0x16, 0xf5, 0x63, 0x9b, 0xf6, 0xca, 0x2b, 0xdb, 0x23, 0x72, 0x44, 0xcd, 0x8a,
+ 0x9c, 0x19, 0x37, 0x47, 0xb2, 0xbc, 0xdf, 0x1a, 0xbd, 0xcd, 0xe9, 0x9a, 0x61, 0x7f, 0x9e, 0xe9,
+ 0x6e, 0x77, 0xf7, 0xd0, 0x24, 0x02, 0x04, 0x92, 0xf7, 0x27, 0x01, 0x82, 0xbd, 0x24, 0xc7, 0x04,
+ 0xb9, 0x24, 0x08, 0x82, 0x45, 0x72, 0xdb, 0x9c, 0x93, 0x00, 0x49, 0x10, 0xec, 0x02, 0x39, 0xe6,
+ 0x98, 0x53, 0xae, 0x39, 0xe4, 0x12, 0x04, 0x39, 0x05, 0xf5, 0xd3, 0xdd, 0xd5, 0x3f, 0x43, 0x8e,
+ 0x64, 0xed, 0x3a, 0x0b, 0xec, 0x89, 0x53, 0xef, 0xbd, 0x7a, 0xf5, 0xaa, 0xea, 0xd5, 0xab, 0xf7,
+ 0xaa, 0xaa, 0x1f, 0xa1, 0x3c, 0xb4, 0xf6, 0x87, 0xf6, 0xba, 0xed, 0x58, 0x9e, 0x85, 0x8a, 0xb4,
+ 0xa0, 0xd9, 0xc6, 0xea, 0xb9, 0xa1, 0x65, 0x0d, 0x47, 0xf8, 0x1a, 0x85, 0xef, 0x4f, 0x06, 0xd7,
+ 0x34, 0xf3, 0x98, 0x11, 0xad, 0x9e, 0x8f, 0xa3, 0xf0, 0xd8, 0xf6, 0x38, 0x52, 0x7e, 0x1f, 0xea,
+ 0x7b, 0x9e, 0xe6, 0x78, 0x77, 0x86, 0xb6, 0x82, 0xbf, 0x98, 0x60, 0xd7, 0x43, 0x57, 0xa0, 0x30,
+ 0x1c, 0x59, 0xfb, 0xda, 0x68, 0x25, 0x73, 0x29, 0x73, 0xa5, 0x7c, 0x53, 0x5a, 0xf7, 0x5b, 0x59,
+ 0xdf, 0xa6, 0x70, 0x85, 0xe3, 0x65, 0x09, 0x6a, 0x7b, 0x9e, 0x65, 0x87, 0x75, 0xe5, 0x3a, 0x54,
+ 0xb7, 0xb1, 0xc0, 0x4c, 0xbe, 0x05, 0x35, 0x1f, 0xe0, 0xda, 0x96, 0xe9, 0xe2, 0xa7, 0x60, 0xff,
+ 0x36, 0xd4, 0x1a, 0xba, 0xde, 0xc5, 0xd8, 0xf1, 0x45, 0x93, 0x21, 0x6f, 0x63, 0xec, 0xf0, 0x9a,
+ 0xb5, 0xb0, 0x26, 0x25, 0xa2, 0x38, 0xf9, 0x3e, 0x2c, 0x6c, 0xe1, 0x11, 0xf6, 0xb0, 0x58, 0x71,
+ 0x05, 0xe6, 0x35, 0x5d, 0x77, 0xb0, 0xeb, 0xd2, 0xba, 0x25, 0xc5, 0x2f, 0xa2, 0x17, 0xa1, 0x64,
+ 0x98, 0x1e, 0x76, 0x06, 0x5a, 0x1f, 0xaf, 0x64, 0x29, 0x2e, 0x04, 0xc8, 0x9f, 0x40, 0x7d, 0xc7,
+ 0x70, 0xbd, 0xd9, 0x58, 0xad, 0x81, 0x84, 0x4d, 0x6d, 0x7f, 0x84, 0x1b, 0xfa, 0x21, 0x76, 0x3c,
+ 0xc3, 0xc5, 0x3a, 0xe5, 0x58, 0x54, 0x12, 0x70, 0x79, 0x03, 0xa4, 0x90, 0x31, 0x1f, 0x99, 0x59,
+ 0x7a, 0xf7, 0x03, 0x58, 0x78, 0x60, 0xeb, 0x5a, 0xb4, 0x77, 0x33, 0x54, 0x44, 0x97, 0x41, 0xd2,
+ 0x2d, 0xd5, 0xb5, 0x06, 0x9e, 0xea, 0x60, 0x17, 0x7b, 0xaa, 0x61, 0x72, 0xe1, 0xaa, 0xba, 0xb5,
+ 0x67, 0x0d, 0x3c, 0x85, 0x40, 0x5b, 0xa6, 0xbc, 0x09, 0x48, 0x6c, 0x81, 0xcb, 0x76, 0x15, 0x16,
+ 0x4d, 0x8c, 0x75, 0x37, 0xc6, 0x21, 0xc3, 0xba, 0x47, 0x51, 0x22, 0x93, 0x7f, 0xcf, 0x80, 0x44,
+ 0x7f, 0xcf, 0x36, 0x72, 0xaf, 0x40, 0xb5, 0x6f, 0x8d, 0xc7, 0x13, 0xd3, 0xe8, 0x6b, 0x9e, 0x61,
+ 0x99, 0x7c, 0x22, 0xa2, 0x40, 0x84, 0x20, 0x4f, 0x5a, 0x5f, 0xc9, 0xd1, 0x46, 0xe9, 0x6f, 0x74,
+ 0x1f, 0x4a, 0xba, 0xe1, 0xe0, 0x3e, 0xad, 0x95, 0xbf, 0x94, 0xb9, 0x52, 0xbb, 0x79, 0x35, 0xec,
+ 0x7f, 0x5c, 0x84, 0xf5, 0x40, 0xc6, 0x2d, 0xbf, 0x92, 0x12, 0xd6, 0x97, 0xaf, 0x01, 0x4a, 0x12,
+ 0xa0, 0x02, 0x64, 0x5b, 0x6d, 0xe9, 0x05, 0x34, 0x0f, 0xb9, 0xce, 0x83, 0x9e, 0x94, 0x41, 0x45,
+ 0xc8, 0xdf, 0xe9, 0xf4, 0xee, 0x49, 0x59, 0xf9, 0x01, 0x2c, 0xee, 0x1d, 0x4c, 0x3c, 0xdd, 0xfa,
+ 0xd2, 0x7c, 0x8e, 0x1d, 0x95, 0xaf, 0xc2, 0x42, 0x93, 0x2a, 0xcc, 0x4c, 0x4c, 0xe5, 0x1e, 0xa0,
+ 0x2d, 0xc3, 0x9d, 0x99, 0x7e, 0x46, 0x21, 0xee, 0x01, 0xda, 0xb5, 0x4c, 0xc3, 0xb3, 0x9c, 0xd9,
+ 0xb8, 0xae, 0xc0, 0x7c, 0x7f, 0xe2, 0x38, 0xd8, 0xf4, 0xb8, 0x5e, 0xf9, 0x45, 0xf9, 0xdb, 0xb0,
+ 0x18, 0xe1, 0xf4, 0x14, 0xea, 0xde, 0x82, 0x45, 0x6e, 0x02, 0xb6, 0x1d, 0x6b, 0x12, 0x98, 0xa8,
+ 0x9b, 0x00, 0x04, 0xad, 0x0e, 0x09, 0x90, 0x33, 0x58, 0x8c, 0x32, 0x60, 0xf4, 0x25, 0xdb, 0xff,
+ 0x29, 0xbf, 0x09, 0x67, 0x43, 0xbb, 0x10, 0xe1, 0x86, 0x20, 0x6f, 0x6a, 0x63, 0xcc, 0x3b, 0x44,
+ 0x7f, 0xcb, 0x13, 0x38, 0x1b, 0xae, 0x82, 0xaf, 0xdb, 0xf6, 0xec, 0x8b, 0xef, 0x1e, 0x2c, 0x27,
+ 0x9a, 0x7d, 0xb6, 0x15, 0xa8, 0xc1, 0xb9, 0x86, 0xae, 0x6f, 0x1d, 0x9b, 0xda, 0xd8, 0xe8, 0xb7,
+ 0xb1, 0x31, 0x3c, 0xd8, 0xb7, 0x82, 0x59, 0xdc, 0x02, 0x49, 0x67, 0x18, 0xd5, 0xe4, 0x28, 0xde,
+ 0x93, 0x73, 0x61, 0x4f, 0xe2, 0x75, 0xeb, 0x7a, 0x14, 0x20, 0xff, 0x0e, 0xb3, 0xcf, 0x9a, 0x77,
+ 0xe0, 0xf3, 0x5d, 0x87, 0xa2, 0x83, 0x5d, 0x6b, 0xe2, 0xf4, 0xd9, 0x68, 0xd6, 0x6e, 0xa2, 0xc8,
+ 0x62, 0xa4, 0x18, 0x25, 0xa0, 0x41, 0x67, 0xa0, 0x70, 0xe8, 0x0c, 0x54, 0x43, 0xe7, 0x2a, 0x38,
+ 0x77, 0xe8, 0x0c, 0x5a, 0x3a, 0xd5, 0x0c, 0xcd, 0x3b, 0xa0, 0x0b, 0x3d, 0xaa, 0x19, 0xa4, 0x2d,
+ 0x8a, 0x93, 0x5f, 0x85, 0x7a, 0xd0, 0x38, 0x1f, 0x21, 0x04, 0xf9, 0xc9, 0xc4, 0xd0, 0x69, 0xcb,
+ 0x15, 0x85, 0xfe, 0x96, 0x7f, 0x96, 0x09, 0xb6, 0x83, 0xe7, 0x2f, 0xe7, 0x59, 0x28, 0x0c, 0xb4,
+ 0xb1, 0x31, 0x3a, 0xa6, 0x92, 0x56, 0x15, 0x5e, 0x0a, 0xe4, 0xcf, 0x4f, 0x97, 0x3f, 0x10, 0x76,
+ 0x4e, 0x10, 0xf6, 0x4f, 0x33, 0x7c, 0xbb, 0x11, 0x44, 0x7d, 0x0d, 0xf2, 0xde, 0xb1, 0x7d, 0x92,
+ 0x98, 0x14, 0x1f, 0x28, 0x71, 0x36, 0x54, 0xe2, 0xa9, 0xf2, 0xbd, 0x0b, 0x45, 0xdb, 0xc1, 0x03,
+ 0xe3, 0x08, 0xbb, 0x2b, 0xf9, 0x4b, 0xb9, 0x2b, 0xe5, 0x9b, 0xe7, 0x43, 0xbe, 0x3d, 0x62, 0x48,
+ 0x76, 0x2c, 0xeb, 0xf3, 0x89, 0xdd, 0xa5, 0x44, 0x4a, 0x40, 0x2c, 0xdf, 0xe7, 0xbb, 0x96, 0x38,
+ 0xea, 0xef, 0x42, 0x59, 0xc7, 0xae, 0x67, 0x98, 0xcc, 0x96, 0x30, 0x35, 0x3a, 0x23, 0xa8, 0x51,
+ 0x88, 0x54, 0x44, 0x4a, 0xf9, 0x87, 0x19, 0x58, 0xe2, 0x53, 0xb8, 0xe7, 0x39, 0x58, 0x1b, 0x3f,
+ 0xe7, 0xd9, 0x79, 0x05, 0xe6, 0xc8, 0x48, 0xbb, 0x2b, 0x39, 0xda, 0xc5, 0xf8, 0x34, 0x30, 0xa4,
+ 0x8c, 0xa1, 0xbe, 0x8d, 0x3d, 0xda, 0xe9, 0xa7, 0x1d, 0xf2, 0x70, 0x78, 0xb3, 0x91, 0xe1, 0xf5,
+ 0xa7, 0x22, 0x27, 0xd8, 0x93, 0x63, 0x90, 0xc2, 0x66, 0xf8, 0xc8, 0x5d, 0x86, 0xba, 0x39, 0x19,
+ 0xab, 0xe2, 0xe8, 0x11, 0x8d, 0xc9, 0x2b, 0x35, 0x73, 0x32, 0x16, 0x86, 0x0d, 0x9d, 0x83, 0x22,
+ 0x21, 0xa4, 0x3a, 0x35, 0x47, 0x29, 0xe6, 0xcd, 0xc9, 0x98, 0xf4, 0x02, 0xbd, 0x0c, 0x15, 0x82,
+ 0xd2, 0xfa, 0x7d, 0x6c, 0x7b, 0x58, 0x5f, 0x29, 0x50, 0x74, 0xd9, 0x9c, 0x8c, 0x1b, 0x1c, 0x24,
+ 0xff, 0x79, 0x26, 0xb0, 0xbf, 0xcf, 0xd4, 0xcd, 0xa7, 0xd1, 0x2c, 0x61, 0x13, 0xc8, 0x47, 0x36,
+ 0x01, 0x74, 0x11, 0xca, 0xb6, 0xe5, 0x7a, 0xaa, 0x6d, 0x8d, 0x8c, 0xfe, 0x31, 0xed, 0x46, 0x51,
+ 0x01, 0x02, 0xea, 0x52, 0x88, 0x7c, 0x0b, 0x96, 0xa2, 0x52, 0x0a, 0xdb, 0x04, 0xe9, 0x78, 0xe6,
+ 0x04, 0x63, 0x70, 0x1d, 0xaa, 0x0d, 0x5d, 0x7f, 0xe8, 0x0c, 0xfc, 0xbe, 0x5d, 0x84, 0xdc, 0xa1,
+ 0x33, 0xe0, 0x75, 0xaa, 0x61, 0x1d, 0x42, 0x42, 0x30, 0xf2, 0x6b, 0x20, 0x31, 0xb3, 0x20, 0x54,
+ 0x4a, 0xdb, 0x07, 0x5e, 0x81, 0x1a, 0xd1, 0xf8, 0x53, 0xa8, 0x6e, 0xb2, 0x75, 0x4b, 0xa9, 0xb8,
+ 0xd8, 0xa7, 0x4a, 0x70, 0x04, 0x12, 0xd1, 0x7e, 0xda, 0x79, 0xc1, 0xf5, 0xe6, 0xe3, 0x93, 0xf0,
+ 0x8d, 0x39, 0x21, 0xc7, 0xa3, 0x5b, 0x70, 0xce, 0xc1, 0x03, 0xec, 0xa8, 0xf8, 0xc8, 0x20, 0x8a,
+ 0x32, 0x54, 0x5d, 0x4f, 0xf3, 0xf0, 0x18, 0x9b, 0x9e, 0xcb, 0xb7, 0x96, 0x65, 0x4a, 0xd0, 0xe4,
+ 0xf8, 0xbd, 0x00, 0x2d, 0x7f, 0x95, 0x81, 0x45, 0x6e, 0x13, 0x9f, 0xb1, 0xf5, 0x6b, 0xb0, 0x68,
+ 0x93, 0x1d, 0xc8, 0x39, 0xc4, 0xc9, 0x76, 0x91, 0x8f, 0x0a, 0x9b, 0x44, 0x12, 0xe4, 0xb4, 0xd1,
+ 0x88, 0x7b, 0x6e, 0xe4, 0xa7, 0x7c, 0x19, 0x16, 0xa8, 0x29, 0x89, 0x48, 0x90, 0x36, 0xb6, 0x1f,
+ 0x00, 0x12, 0x09, 0xc3, 0x28, 0x62, 0x36, 0x59, 0xe5, 0xbf, 0xce, 0xc0, 0x92, 0x82, 0xed, 0x91,
+ 0xd6, 0xc7, 0xdf, 0xc0, 0x60, 0x4f, 0x1b, 0xaa, 0xdc, 0xb4, 0xa1, 0x92, 0xc7, 0xb0, 0xc8, 0x5d,
+ 0x80, 0x98, 0xb4, 0x79, 0x17, 0x7b, 0xc4, 0xeb, 0x22, 0xc6, 0x6c, 0x49, 0xb4, 0xaf, 0x03, 0xc3,
+ 0xc4, 0xfa, 0x1e, 0xf6, 0x14, 0x4a, 0x81, 0xde, 0x84, 0x22, 0x95, 0xdb, 0xc0, 0x44, 0xb8, 0x5c,
+ 0x6a, 0xcf, 0x02, 0x0a, 0xf9, 0x03, 0x6a, 0x84, 0x05, 0x26, 0x81, 0x75, 0xc8, 0xb9, 0xd8, 0xe3,
+ 0x43, 0x93, 0xde, 0x1c, 0x21, 0x90, 0xf7, 0x60, 0x99, 0xe9, 0xd2, 0x33, 0xb3, 0xf0, 0x95, 0x23,
+ 0x1b, 0x2a, 0xc7, 0x43, 0x38, 0x43, 0xe6, 0x3c, 0xc9, 0xf2, 0xf5, 0x88, 0xcd, 0x3a, 0x93, 0xe0,
+ 0xd9, 0x3b, 0xb6, 0x4f, 0x30, 0x5b, 0xf2, 0x47, 0x70, 0x36, 0xce, 0x97, 0xeb, 0xd3, 0xac, 0xdd,
+ 0xbd, 0x03, 0x2b, 0x5c, 0x99, 0x9e, 0x7d, 0xc8, 0xee, 0x51, 0xa7, 0x36, 0x98, 0x72, 0xbf, 0xfa,
+ 0x0d, 0x28, 0x05, 0x0a, 0x92, 0xf4, 0x2b, 0x43, 0xf2, 0x90, 0x4a, 0xfe, 0xcc, 0xf7, 0x69, 0x9f,
+ 0x03, 0xb3, 0x94, 0x69, 0x58, 0x83, 0x25, 0x32, 0x5c, 0x09, 0xe6, 0x69, 0xcb, 0xf4, 0xbb, 0x6c,
+ 0xca, 0x04, 0x5a, 0x3e, 0xb2, 0xcf, 0xd0, 0xad, 0x1d, 0x58, 0xe6, 0x83, 0xfc, 0x3c, 0x06, 0xe9,
+ 0x11, 0xac, 0x06, 0x86, 0xb6, 0xe1, 0xba, 0xc6, 0xd0, 0x14, 0x19, 0xde, 0x02, 0xd0, 0x02, 0x20,
+ 0xe7, 0xb8, 0x1a, 0x5f, 0x2f, 0x42, 0x35, 0x81, 0x5a, 0x1e, 0xc3, 0x4b, 0xa2, 0x1d, 0x7d, 0xae,
+ 0xcc, 0x53, 0xa6, 0xe3, 0xff, 0xc3, 0xf9, 0xd0, 0x12, 0x26, 0x1b, 0x4b, 0x99, 0x15, 0xf4, 0xae,
+ 0x18, 0x1e, 0x67, 0xe9, 0xa2, 0x39, 0x17, 0x6f, 0x3f, 0x35, 0x14, 0xfe, 0x1e, 0xbc, 0x98, 0xde,
+ 0x16, 0x9f, 0xd5, 0xaf, 0x33, 0x6c, 0xdf, 0x87, 0x0b, 0x11, 0x83, 0xfc, 0x7c, 0x27, 0xe5, 0x7b,
+ 0x34, 0x2a, 0x51, 0xec, 0xcf, 0x8d, 0xd3, 0x63, 0x56, 0x04, 0x79, 0xdb, 0x72, 0x3c, 0xee, 0xbf,
+ 0xd1, 0xdf, 0x68, 0x15, 0x8a, 0x23, 0x63, 0x80, 0x3d, 0x83, 0x7b, 0x70, 0x39, 0x25, 0x28, 0xcb,
+ 0x0d, 0x3f, 0x98, 0x78, 0x66, 0xf6, 0xf2, 0xeb, 0xcc, 0x55, 0x10, 0x19, 0x84, 0xce, 0x54, 0x46,
+ 0x74, 0xa6, 0xe4, 0x5b, 0xcc, 0xdb, 0x66, 0xa4, 0x81, 0x9d, 0x2a, 0xd0, 0x0d, 0x23, 0x25, 0x6c,
+ 0xa6, 0x74, 0x1c, 0x4b, 0x24, 0x65, 0x47, 0x08, 0xcf, 0x2e, 0xe9, 0x9d, 0xe0, 0x58, 0xe1, 0xd9,
+ 0x79, 0xf4, 0xf8, 0x31, 0xd0, 0xb3, 0x4f, 0x47, 0xca, 0xa1, 0x8f, 0xbc, 0xce, 0xec, 0x12, 0x61,
+ 0x1a, 0xf1, 0x68, 0xa7, 0x0d, 0xe4, 0x7b, 0xcc, 0x36, 0x09, 0xf4, 0xa1, 0x93, 0xe6, 0x58, 0x5a,
+ 0xd2, 0x49, 0x53, 0x2c, 0x4d, 0x21, 0x18, 0xf9, 0x97, 0x19, 0x40, 0x6c, 0x1c, 0xbf, 0x87, 0xf7,
+ 0x1d, 0xcd, 0x6f, 0x48, 0x82, 0xdc, 0xc4, 0x19, 0x71, 0xf1, 0xc9, 0x4f, 0xe2, 0xde, 0x3a, 0xd6,
+ 0xc4, 0xc3, 0x2a, 0xd9, 0x7b, 0xd8, 0xbe, 0x5b, 0x52, 0x80, 0x82, 0xc8, 0x9e, 0x44, 0x8f, 0x47,
+ 0x0e, 0xb1, 0xe3, 0x92, 0x75, 0xc8, 0x5c, 0x66, 0xbf, 0x88, 0xde, 0x86, 0xb3, 0x26, 0x3e, 0xf2,
+ 0x0e, 0x2c, 0x5b, 0xf5, 0x1c, 0x63, 0x38, 0x24, 0x7e, 0x06, 0x6d, 0x92, 0xbb, 0xd0, 0x4b, 0x1c,
+ 0xdb, 0x63, 0x48, 0x26, 0x0e, 0xba, 0x09, 0x67, 0xe2, 0xb5, 0x74, 0x3c, 0xd2, 0x98, 0x67, 0x5d,
+ 0x55, 0x16, 0xa3, 0x95, 0xb6, 0x08, 0x4a, 0x1e, 0x82, 0xc4, 0x6a, 0xef, 0x3a, 0xc1, 0x52, 0x3b,
+ 0x0f, 0x25, 0x7d, 0x32, 0xb6, 0xd5, 0x60, 0x5b, 0x9d, 0x53, 0x8a, 0x04, 0x40, 0xa4, 0x26, 0x6b,
+ 0x61, 0x60, 0x8c, 0xb0, 0xb0, 0x8f, 0x06, 0x65, 0x82, 0xa3, 0xe7, 0xa4, 0x87, 0x1a, 0xf3, 0xeb,
+ 0xf2, 0x4a, 0x50, 0x96, 0x17, 0x61, 0x81, 0xab, 0x4e, 0xd8, 0x92, 0xfc, 0x77, 0x19, 0xea, 0xa5,
+ 0xdf, 0x19, 0xdb, 0xcf, 0xa6, 0x09, 0xdf, 0xe1, 0x7b, 0x7f, 0x8e, 0x9a, 0xb1, 0x2b, 0xe1, 0x6c,
+ 0x45, 0x98, 0xae, 0xf3, 0x20, 0xc2, 0x30, 0x87, 0xdc, 0xd7, 0xa1, 0xb5, 0xe4, 0x4d, 0x90, 0xe2,
+ 0x18, 0x34, 0x0f, 0xb9, 0xae, 0xd2, 0x94, 0x5e, 0x40, 0x45, 0xc8, 0x77, 0x3b, 0x7b, 0x91, 0xb3,
+ 0x3d, 0x54, 0x82, 0xb9, 0x9d, 0xce, 0x66, 0x63, 0x47, 0xca, 0x11, 0xba, 0xc6, 0xce, 0x8e, 0x94,
+ 0x97, 0x3f, 0xf2, 0xa3, 0x86, 0x67, 0xed, 0x84, 0xfc, 0x67, 0x39, 0xa8, 0x29, 0xdd, 0xfb, 0xad,
+ 0x87, 0xda, 0xc8, 0xd0, 0x59, 0x74, 0xf7, 0x36, 0xcc, 0xd1, 0xcd, 0x8a, 0x3b, 0x35, 0x17, 0x04,
+ 0x35, 0x8c, 0x10, 0xb2, 0xdd, 0x4d, 0x61, 0xc4, 0xe8, 0x5d, 0x28, 0x38, 0x58, 0x73, 0x03, 0xb3,
+ 0x7e, 0x71, 0x6a, 0x35, 0x85, 0x92, 0x29, 0x9c, 0x1c, 0x5d, 0x86, 0xf9, 0xb1, 0xe6, 0xf5, 0x0f,
+ 0xb0, 0xce, 0x03, 0xe3, 0x98, 0xde, 0xfb, 0x58, 0x74, 0x1d, 0x2a, 0x13, 0x93, 0x17, 0x54, 0xcd,
+ 0x3f, 0x29, 0x88, 0x51, 0x97, 0x03, 0x92, 0x86, 0x8b, 0xde, 0x03, 0x29, 0xac, 0x31, 0xc2, 0xe6,
+ 0x90, 0xc6, 0xab, 0x29, 0xb5, 0xea, 0x01, 0xd9, 0x0e, 0xa5, 0x92, 0xbb, 0x30, 0x47, 0x7b, 0x87,
+ 0x6a, 0x00, 0x7b, 0xbd, 0x46, 0xaf, 0xa9, 0xb6, 0x3b, 0x6d, 0x32, 0x33, 0x8b, 0x50, 0xf7, 0xcb,
+ 0x3d, 0xf5, 0x6e, 0xe7, 0x41, 0x7b, 0x4b, 0xca, 0xa0, 0x3a, 0x94, 0x19, 0xf0, 0x61, 0x63, 0xa7,
+ 0xb5, 0x25, 0x65, 0xd1, 0x02, 0x54, 0x19, 0xa0, 0xd5, 0x66, 0xa0, 0x9c, 0xfc, 0x3e, 0x14, 0x58,
+ 0xc7, 0x09, 0xb5, 0xd2, 0x6c, 0xec, 0x75, 0x7a, 0x3e, 0xcf, 0x2a, 0x94, 0x28, 0xa0, 0xad, 0x36,
+ 0xf6, 0xa4, 0x0c, 0xa9, 0xcc, 0x8b, 0x3b, 0xcd, 0xf6, 0x36, 0x3d, 0xd7, 0xfd, 0xd7, 0x39, 0xc8,
+ 0x77, 0xf9, 0x29, 0x8d, 0x39, 0x72, 0x0c, 0xff, 0x48, 0x89, 0xfc, 0x26, 0x56, 0xc6, 0xd6, 0x3c,
+ 0xcf, 0x61, 0xab, 0xbc, 0xa2, 0xf0, 0x12, 0xdd, 0xb0, 0x87, 0xfe, 0x9e, 0x41, 0x7e, 0x92, 0xda,
+ 0xfb, 0xd8, 0xf5, 0x43, 0x61, 0xfa, 0x9b, 0x18, 0x0a, 0xc3, 0x55, 0xbf, 0x34, 0xbc, 0x03, 0xdd,
+ 0xd1, 0xbe, 0xf4, 0xe3, 0x60, 0xc3, 0xfd, 0x84, 0x43, 0xd0, 0x05, 0x80, 0xc3, 0x60, 0xf2, 0x68,
+ 0x3c, 0x3f, 0xa7, 0x08, 0x10, 0xd4, 0x84, 0x85, 0xb0, 0xa4, 0xea, 0xd8, 0xd3, 0x8c, 0xd1, 0xca,
+ 0x3c, 0xb5, 0x60, 0x2b, 0xd3, 0x74, 0x40, 0x91, 0xc2, 0x2a, 0x5b, 0xb4, 0x06, 0xba, 0x0e, 0x4b,
+ 0xa6, 0xa5, 0x1a, 0x63, 0x9b, 0xc4, 0x01, 0x5e, 0x28, 0x50, 0x91, 0x05, 0x26, 0xa6, 0xd5, 0xe2,
+ 0xa8, 0x40, 0xb0, 0xd0, 0xba, 0x96, 0x22, 0x31, 0xff, 0x4b, 0x00, 0xec, 0xbc, 0x40, 0xd5, 0x5c,
+ 0x73, 0x05, 0x28, 0xae, 0xc4, 0x20, 0x0d, 0xd7, 0x24, 0x06, 0x86, 0xa3, 0x0d, 0x7d, 0xa5, 0xcc,
+ 0x8c, 0x08, 0x03, 0xb4, 0x74, 0x6e, 0x60, 0x3c, 0xec, 0x60, 0x7d, 0xa5, 0x42, 0x5b, 0x0e, 0xca,
+ 0x68, 0x89, 0xae, 0x8b, 0x11, 0x5e, 0xa9, 0x52, 0x04, 0x2b, 0xa0, 0x2b, 0x20, 0x19, 0xae, 0x3a,
+ 0x70, 0xac, 0xb1, 0x8a, 0x8f, 0x3c, 0xec, 0x98, 0xda, 0x68, 0xa5, 0x46, 0x09, 0x6a, 0x86, 0x7b,
+ 0xd7, 0xb1, 0xc6, 0x4d, 0x0e, 0x25, 0x23, 0xed, 0x1f, 0x6e, 0xaa, 0x86, 0xbd, 0x52, 0xa7, 0x4d,
+ 0x83, 0x0f, 0x6a, 0xd9, 0xc1, 0x11, 0x9c, 0x14, 0x1e, 0xc1, 0xa1, 0x37, 0x01, 0x19, 0xae, 0xea,
+ 0x5b, 0x56, 0xc3, 0xa4, 0xe3, 0xb6, 0xb2, 0xc0, 0x0e, 0x59, 0x0d, 0xb7, 0xcd, 0x10, 0x2d, 0x06,
+ 0x27, 0x73, 0x65, 0xe8, 0xd8, 0xf4, 0x8c, 0x81, 0x81, 0x9d, 0x15, 0x44, 0xbb, 0x2e, 0x40, 0xd0,
+ 0xeb, 0x20, 0x8d, 0xac, 0xbe, 0x36, 0x52, 0x05, 0xaa, 0x45, 0x4a, 0x55, 0xa7, 0xf0, 0x56, 0x48,
+ 0x7a, 0x0d, 0x8a, 0x9a, 0x79, 0xac, 0x52, 0x6d, 0x5b, 0x0a, 0x22, 0x08, 0x6b, 0x38, 0xc2, 0xeb,
+ 0xfe, 0xc5, 0xdd, 0x7a, 0xc3, 0x3c, 0x56, 0xe6, 0x35, 0xf3, 0xb8, 0x4d, 0xd4, 0xf0, 0x2d, 0x00,
+ 0x52, 0x81, 0xab, 0xe2, 0x99, 0x20, 0x2c, 0x4c, 0x56, 0x29, 0x69, 0xe6, 0x71, 0x97, 0x92, 0xc9,
+ 0xf7, 0xa1, 0x2c, 0x1e, 0x2c, 0x11, 0x55, 0xa6, 0x67, 0x7b, 0xdc, 0x74, 0xf1, 0x52, 0x78, 0x74,
+ 0x96, 0x3d, 0xe9, 0xe8, 0x6c, 0x0c, 0x0b, 0x89, 0xc3, 0xc2, 0xa9, 0x2c, 0x3f, 0x82, 0xea, 0x88,
+ 0xd2, 0xa9, 0x96, 0x2d, 0x78, 0xa3, 0xe9, 0x07, 0x8f, 0x1d, 0x4a, 0xa2, 0x54, 0x46, 0x42, 0x49,
+ 0xfe, 0x8f, 0x3c, 0xe4, 0xbb, 0x18, 0x3b, 0x54, 0x69, 0x88, 0xea, 0x91, 0x00, 0x97, 0x84, 0xc3,
+ 0x55, 0x25, 0x28, 0xa3, 0xf7, 0xa0, 0xa2, 0xd9, 0xf6, 0xe8, 0xd8, 0x3f, 0x67, 0xca, 0xc6, 0x8f,
+ 0x23, 0x1b, 0x04, 0xcb, 0x77, 0x86, 0xb2, 0x16, 0x16, 0xd0, 0x6b, 0x90, 0xef, 0x5b, 0xe6, 0x80,
+ 0x1f, 0x3a, 0xa3, 0xe8, 0x89, 0xfe, 0xa6, 0x65, 0x0e, 0x14, 0x8a, 0x47, 0xef, 0x43, 0x15, 0xef,
+ 0x0f, 0x6d, 0x75, 0x3c, 0x19, 0x79, 0xc6, 0x81, 0x65, 0xf3, 0x53, 0xde, 0xb3, 0x61, 0x85, 0xe6,
+ 0xfe, 0xd0, 0xde, 0xe5, 0x58, 0xa5, 0x82, 0x85, 0x12, 0x6a, 0x40, 0x9d, 0xb9, 0x09, 0x0e, 0x1e,
+ 0x8c, 0x70, 0xdf, 0xb3, 0x1c, 0x6a, 0x01, 0xa2, 0x4b, 0x97, 0x10, 0x28, 0x3e, 0x5e, 0xa9, 0x39,
+ 0x91, 0x32, 0x7a, 0xdd, 0xdf, 0x2e, 0x0a, 0x69, 0x57, 0x0f, 0x91, 0x3d, 0xe2, 0x0a, 0x14, 0x88,
+ 0xdb, 0xea, 0xb8, 0xdc, 0x3e, 0x08, 0xe7, 0x00, 0x3d, 0x0a, 0x57, 0x38, 0x9e, 0x84, 0x55, 0x9e,
+ 0xa3, 0x99, 0x2e, 0xdd, 0xaf, 0x8a, 0x71, 0xc6, 0x3d, 0x1f, 0xa5, 0x84, 0x54, 0x64, 0xa4, 0x59,
+ 0x57, 0xb8, 0x3f, 0x5a, 0x8a, 0x8f, 0x34, 0xed, 0xc7, 0x1e, 0x45, 0x2a, 0xcc, 0x39, 0x62, 0x05,
+ 0xb4, 0x05, 0xd2, 0xd0, 0xd1, 0xfa, 0x78, 0x30, 0x19, 0xa9, 0x0e, 0x76, 0x3d, 0xcd, 0xf1, 0xa8,
+ 0xd9, 0x88, 0xdc, 0x3e, 0x6c, 0x73, 0x0a, 0x85, 0x11, 0x28, 0xf5, 0x61, 0x14, 0x80, 0xd6, 0xa1,
+ 0xa4, 0x0d, 0x0c, 0xd5, 0xd5, 0x06, 0x86, 0xbb, 0x52, 0xa6, 0x7a, 0xba, 0x20, 0x4c, 0xf3, 0xc0,
+ 0xd8, 0xd3, 0x06, 0x86, 0x52, 0xd4, 0xd8, 0x0f, 0x17, 0x5d, 0x83, 0x92, 0xa6, 0xeb, 0x2a, 0xd3,
+ 0xeb, 0x4a, 0x7c, 0x92, 0xf9, 0x41, 0xb4, 0xab, 0x14, 0x35, 0xfe, 0x4b, 0xfe, 0x9f, 0x3c, 0x94,
+ 0x82, 0x6b, 0x98, 0x5f, 0x91, 0xd2, 0xbd, 0x11, 0x51, 0xba, 0xe5, 0x94, 0x6b, 0xa4, 0xff, 0x43,
+ 0x9a, 0xf7, 0x26, 0xe4, 0x0d, 0x73, 0x60, 0x71, 0xc5, 0x5b, 0x49, 0x11, 0x96, 0x69, 0x1f, 0xa5,
+ 0xfa, 0xad, 0xf2, 0x7d, 0x2d, 0xe5, 0xbb, 0x07, 0xf5, 0xd8, 0xfd, 0xdb, 0x54, 0xcb, 0xfa, 0x52,
+ 0xe4, 0x42, 0x92, 0x3f, 0x61, 0x08, 0xef, 0x3d, 0xff, 0x39, 0x03, 0x65, 0x41, 0xff, 0xd0, 0xbb,
+ 0x50, 0x32, 0x4c, 0x35, 0x72, 0xf2, 0x79, 0x52, 0x68, 0x5d, 0x34, 0x4c, 0x5e, 0xf1, 0x43, 0xa8,
+ 0xe2, 0x23, 0x32, 0xfa, 0x51, 0x35, 0x3f, 0xa9, 0x72, 0x85, 0x55, 0x08, 0x19, 0x18, 0x63, 0x91,
+ 0x41, 0xee, 0x74, 0x06, 0xac, 0x02, 0xbf, 0x22, 0xf8, 0x5d, 0x28, 0xb3, 0x5d, 0x66, 0xc7, 0x18,
+ 0x1b, 0x53, 0xc3, 0x3d, 0xf4, 0x32, 0x54, 0xc6, 0xda, 0x91, 0x1a, 0x5c, 0x71, 0x31, 0xff, 0xbb,
+ 0x3c, 0xd6, 0x8e, 0xba, 0x1c, 0x44, 0x62, 0x2e, 0x97, 0x5f, 0xdc, 0xab, 0xde, 0x81, 0x83, 0xdd,
+ 0x03, 0x6b, 0xa4, 0xab, 0x76, 0xdf, 0xe3, 0xc1, 0xd9, 0x92, 0x8f, 0xed, 0xf9, 0xc8, 0x6e, 0xdf,
+ 0x93, 0xff, 0xb2, 0x00, 0x45, 0x7f, 0x37, 0x40, 0xdf, 0x82, 0xaa, 0x36, 0xf1, 0x0e, 0x54, 0x5b,
+ 0x73, 0xdd, 0x2f, 0x2d, 0x47, 0xe7, 0xb3, 0x52, 0x21, 0xc0, 0x2e, 0x87, 0xa1, 0x4b, 0xf4, 0x72,
+ 0xac, 0xef, 0x18, 0xb6, 0x70, 0xd1, 0x2e, 0x82, 0xd0, 0x39, 0x28, 0x32, 0x17, 0x41, 0x73, 0xfd,
+ 0xc0, 0x90, 0x96, 0x1b, 0x2e, 0xf1, 0x1e, 0x02, 0x07, 0xc6, 0x0f, 0x31, 0xf2, 0x94, 0x43, 0xdd,
+ 0x87, 0x37, 0x78, 0xa8, 0xb1, 0x0c, 0xf3, 0x54, 0x07, 0x34, 0x97, 0xc7, 0x7f, 0x05, 0x52, 0x6c,
+ 0xb8, 0x31, 0xe5, 0x28, 0xc4, 0x94, 0x83, 0x38, 0x67, 0x14, 0x4d, 0x03, 0xab, 0x79, 0x5a, 0xb3,
+ 0x48, 0x00, 0x34, 0xfa, 0x6b, 0xc3, 0x82, 0x83, 0xc7, 0xd6, 0x21, 0x56, 0x6d, 0xc7, 0x38, 0xd4,
+ 0x3c, 0xe2, 0xe0, 0xd1, 0xf5, 0x59, 0xbb, 0x29, 0x27, 0xb7, 0xc7, 0x75, 0x85, 0xd2, 0x76, 0x19,
+ 0x69, 0xc3, 0x55, 0xea, 0x4e, 0x14, 0x40, 0x7c, 0x2b, 0xb6, 0x68, 0x07, 0x23, 0xcd, 0x56, 0x75,
+ 0x6d, 0x6c, 0x1b, 0xe6, 0x90, 0x2e, 0xdd, 0xa2, 0x22, 0x51, 0xcc, 0xdd, 0x91, 0x66, 0x6f, 0x31,
+ 0x38, 0x7a, 0x15, 0x6a, 0x2e, 0x36, 0x75, 0x95, 0xbf, 0x4a, 0xf0, 0x8e, 0xb9, 0x6b, 0x59, 0x25,
+ 0xd0, 0x4d, 0x1f, 0x48, 0xdc, 0x20, 0xd2, 0x8e, 0x87, 0xd5, 0xbe, 0x66, 0xf3, 0xa5, 0x38, 0xc5,
+ 0x0d, 0x62, 0x74, 0x9b, 0x9a, 0x4d, 0x2c, 0x0e, 0x1b, 0x74, 0x52, 0xa7, 0x72, 0x42, 0x1d, 0x36,
+ 0x37, 0xa4, 0x4a, 0x0d, 0xb2, 0x86, 0x4e, 0x5d, 0xd1, 0x92, 0x92, 0x35, 0x74, 0x74, 0x0b, 0xaa,
+ 0x4c, 0xc1, 0xd4, 0x11, 0x51, 0x46, 0x77, 0xa5, 0x46, 0xd9, 0x08, 0x26, 0x48, 0x50, 0x55, 0xa5,
+ 0x62, 0x87, 0x05, 0x97, 0xa8, 0x0e, 0x9f, 0x73, 0x3e, 0xab, 0xcc, 0x37, 0xad, 0xb0, 0x89, 0xe7,
+ 0x53, 0x7a, 0x15, 0x50, 0xe8, 0xbe, 0x06, 0x2f, 0x94, 0x24, 0x4a, 0xb9, 0x10, 0x78, 0xb1, 0x3e,
+ 0x82, 0x44, 0x1f, 0x87, 0xce, 0x80, 0x7a, 0xaa, 0x25, 0x7a, 0xc1, 0x84, 0x2e, 0x41, 0x45, 0x1b,
+ 0x8d, 0xac, 0x2f, 0x55, 0xa2, 0xe4, 0x9a, 0xeb, 0xbb, 0xa7, 0x14, 0xd6, 0xf9, 0xd2, 0x6c, 0xb8,
+ 0xe8, 0x35, 0xa8, 0x3b, 0xec, 0x20, 0x4e, 0xf5, 0xb5, 0x67, 0x91, 0xbd, 0x4a, 0xe0, 0xe0, 0x2e,
+ 0x55, 0x22, 0xf9, 0x06, 0xd4, 0x63, 0x93, 0x4b, 0xe2, 0x64, 0x1e, 0x4d, 0xf1, 0xe0, 0x38, 0x83,
+ 0xca, 0x30, 0xaf, 0x34, 0xbb, 0x3b, 0x8d, 0xcd, 0xa6, 0x94, 0x95, 0xff, 0x2a, 0x07, 0xd5, 0xc8,
+ 0x1e, 0xf6, 0x6b, 0x58, 0x2f, 0x53, 0x17, 0xc1, 0x6b, 0x50, 0x0f, 0x17, 0x81, 0x4a, 0x4f, 0x33,
+ 0xd8, 0x4a, 0xa8, 0x06, 0x2b, 0xa1, 0xad, 0x8d, 0xf1, 0xc9, 0xab, 0x61, 0x6f, 0xfa, 0x6a, 0xb8,
+ 0x3c, 0x65, 0xdf, 0xfe, 0x66, 0x96, 0xc4, 0xb3, 0x4c, 0xd7, 0x7f, 0xe5, 0xa0, 0x16, 0xdd, 0xc5,
+ 0x7f, 0xe3, 0xe7, 0xab, 0x37, 0x7d, 0xbe, 0xae, 0x4c, 0x73, 0x5d, 0xbe, 0x21, 0x1b, 0x76, 0x11,
+ 0xca, 0x9e, 0xe5, 0x69, 0x23, 0xee, 0x1f, 0x94, 0xd9, 0x42, 0xa5, 0x20, 0xea, 0x0d, 0x10, 0x3e,
+ 0x9c, 0xc0, 0xdf, 0xd3, 0x2a, 0x8c, 0x0f, 0xa3, 0xf1, 0x9f, 0x67, 0x3c, 0xc3, 0xc4, 0xdf, 0x87,
+ 0x8a, 0xe8, 0x34, 0xa2, 0x15, 0x98, 0x67, 0x87, 0x8f, 0x3a, 0x7f, 0x59, 0xe4, 0x17, 0xe9, 0xae,
+ 0xca, 0xa9, 0x54, 0xcf, 0x1b, 0x05, 0xbb, 0x2a, 0x87, 0xf5, 0xbc, 0x91, 0xfc, 0xc3, 0x0c, 0xd4,
+ 0xa2, 0x3e, 0x24, 0xd9, 0x68, 0x63, 0x6e, 0xa7, 0xda, 0x1f, 0x19, 0xfe, 0xa9, 0x7e, 0x51, 0x59,
+ 0x8a, 0xfa, 0x98, 0x9b, 0x14, 0x87, 0xde, 0x87, 0xd5, 0x64, 0xad, 0x89, 0xeb, 0x61, 0x27, 0x7c,
+ 0xe5, 0xb1, 0x1c, 0xaf, 0x49, 0xf1, 0x2d, 0x5d, 0xfe, 0x8b, 0x79, 0xe6, 0xb7, 0xff, 0xba, 0xd4,
+ 0x78, 0x1d, 0x8a, 0x63, 0xec, 0xba, 0xda, 0x10, 0xbb, 0xdc, 0x23, 0x17, 0x5c, 0xbb, 0x5d, 0x8e,
+ 0x51, 0x02, 0x9a, 0xd4, 0x6d, 0x7d, 0xee, 0xd4, 0x6d, 0xbd, 0x70, 0xc2, 0xb6, 0x3e, 0x7f, 0xe2,
+ 0xb6, 0x5e, 0x8c, 0x2d, 0x8c, 0x2b, 0x50, 0xf8, 0x62, 0x82, 0x27, 0xd8, 0xe5, 0x5e, 0xb3, 0xe0,
+ 0x98, 0x7f, 0x4c, 0xe1, 0x0a, 0xc7, 0xa3, 0xb5, 0xb4, 0x25, 0xc4, 0x34, 0x78, 0xc6, 0x85, 0x51,
+ 0x9e, 0x79, 0x61, 0x54, 0xd2, 0x16, 0x46, 0x13, 0xaa, 0x2e, 0x76, 0x5d, 0xc3, 0x32, 0xd9, 0xdd,
+ 0x39, 0xdd, 0x7f, 0x6b, 0x37, 0x2f, 0xa5, 0xc4, 0xbc, 0xeb, 0x7b, 0x8c, 0x90, 0x85, 0x20, 0x15,
+ 0x57, 0x28, 0xa1, 0x77, 0xe0, 0xac, 0x3b, 0xb1, 0x89, 0x23, 0x89, 0x75, 0xb2, 0xe5, 0x6b, 0xfb,
+ 0xc6, 0xc8, 0xf0, 0x48, 0x24, 0x57, 0xa3, 0xe7, 0xf4, 0x67, 0x02, 0xec, 0xa6, 0x80, 0x44, 0x1f,
+ 0x42, 0x59, 0xd3, 0xc7, 0x86, 0xdf, 0x76, 0x3d, 0x7e, 0x3c, 0x1b, 0xb6, 0xdd, 0x20, 0x64, 0xac,
+ 0x65, 0xd0, 0x82, 0xdf, 0x24, 0x66, 0x74, 0x70, 0x1f, 0x1b, 0x87, 0x98, 0x1d, 0x32, 0x55, 0x95,
+ 0xa0, 0x4c, 0x70, 0xc1, 0xa3, 0x9d, 0x05, 0x86, 0xf3, 0xcb, 0xe8, 0x02, 0x80, 0x16, 0x3e, 0x21,
+ 0xf6, 0xf7, 0xed, 0x00, 0x82, 0x16, 0x61, 0xce, 0x9a, 0x78, 0xea, 0x17, 0xfc, 0x2c, 0x29, 0x6f,
+ 0x4d, 0xbc, 0x8f, 0xd1, 0x12, 0xcc, 0x0d, 0x46, 0x96, 0xed, 0xd2, 0xd3, 0xa3, 0xaa, 0xc2, 0x0a,
+ 0xb2, 0x09, 0x15, 0x71, 0x60, 0xc8, 0xe2, 0x7f, 0xd0, 0xbe, 0xdf, 0xee, 0x7c, 0xd2, 0x66, 0xc7,
+ 0xde, 0xad, 0xad, 0x9d, 0x26, 0xb3, 0x09, 0x9b, 0x9d, 0x76, 0xbb, 0xb9, 0xd9, 0x93, 0xb2, 0x08,
+ 0xa0, 0xd0, 0xd8, 0xec, 0xb5, 0x1e, 0x36, 0xa5, 0x1c, 0xaa, 0x40, 0xb1, 0xd3, 0x6d, 0xb6, 0xf7,
+ 0x9a, 0xed, 0x9e, 0x94, 0x47, 0x75, 0x28, 0x93, 0xd2, 0x66, 0xa7, 0x7d, 0xb7, 0xa5, 0xec, 0x4a,
+ 0x73, 0x04, 0xd0, 0xdc, 0xeb, 0x35, 0xee, 0xec, 0xb4, 0xf6, 0xee, 0x35, 0xb7, 0xa4, 0x82, 0xbc,
+ 0x06, 0x10, 0x0e, 0x06, 0x2a, 0x40, 0xf6, 0x41, 0x97, 0x35, 0xb4, 0x45, 0x9a, 0xcc, 0x10, 0xde,
+ 0xdd, 0xbb, 0x8f, 0x54, 0xd2, 0x8e, 0xfc, 0x03, 0x28, 0xfa, 0xcb, 0x03, 0x5d, 0x15, 0x86, 0x8a,
+ 0x05, 0x25, 0x0b, 0x89, 0x45, 0x24, 0x8c, 0xde, 0xab, 0x90, 0x77, 0xfd, 0x97, 0xa6, 0xa9, 0xa4,
+ 0x14, 0x2d, 0xff, 0x63, 0x06, 0xe6, 0x39, 0x04, 0xc9, 0x50, 0x31, 0x2d, 0xcf, 0x18, 0xf8, 0x8f,
+ 0x5e, 0x33, 0xf4, 0xce, 0x22, 0x02, 0x23, 0x11, 0xc5, 0x84, 0xbe, 0xbd, 0xa0, 0x8c, 0xf3, 0x0a,
+ 0x2f, 0x21, 0x04, 0x79, 0xcb, 0xc6, 0x26, 0xbf, 0xe7, 0xa0, 0xbf, 0xd1, 0x8b, 0x50, 0xfa, 0x1c,
+ 0x63, 0x5b, 0x1b, 0x19, 0x87, 0x98, 0xbf, 0xdb, 0x0a, 0x01, 0xc4, 0x8e, 0x3a, 0x78, 0x40, 0x62,
+ 0x07, 0xff, 0xc5, 0x16, 0x2f, 0x92, 0x7a, 0xba, 0xe1, 0xf6, 0x35, 0x47, 0x0f, 0x9e, 0x6b, 0x85,
+ 0x00, 0x32, 0x8b, 0xd4, 0xa6, 0xd3, 0x35, 0x9d, 0x57, 0x58, 0x41, 0xde, 0x80, 0x02, 0x5b, 0x9a,
+ 0x04, 0x6f, 0x98, 0xf6, 0xc4, 0xe3, 0x21, 0x0f, 0x2b, 0x10, 0xb9, 0xad, 0x89, 0x47, 0xc0, 0xfc,
+ 0x25, 0x1a, 0x2b, 0xc9, 0x18, 0x0a, 0x2c, 0xd6, 0x46, 0xeb, 0x50, 0xe8, 0x5b, 0xe6, 0xc0, 0x18,
+ 0xf2, 0xd1, 0x3d, 0x1b, 0x8f, 0xc6, 0x37, 0x29, 0x56, 0xe1, 0x54, 0xe8, 0x0d, 0xff, 0x94, 0x29,
+ 0x71, 0x96, 0xc1, 0xc8, 0xc5, 0x73, 0x26, 0x32, 0xcc, 0x15, 0x91, 0x0b, 0x31, 0xba, 0x7d, 0xcb,
+ 0x34, 0x71, 0xdf, 0x53, 0x1d, 0xec, 0x39, 0xc7, 0xfe, 0x60, 0x73, 0xa0, 0x42, 0x60, 0xc4, 0x48,
+ 0xd1, 0xa8, 0x8b, 0xde, 0xb4, 0xb2, 0xf1, 0x2e, 0x12, 0x00, 0xe1, 0x44, 0xbc, 0xdf, 0x60, 0x30,
+ 0xd5, 0xd8, 0x3d, 0xd3, 0x42, 0x80, 0x69, 0x71, 0x04, 0xda, 0x82, 0x0b, 0x63, 0xc3, 0x34, 0xc6,
+ 0x93, 0xb1, 0x1a, 0xac, 0x13, 0x12, 0x40, 0x86, 0x55, 0xd9, 0x0c, 0xbd, 0xc8, 0xa9, 0x1a, 0x22,
+ 0x91, 0xcf, 0x45, 0xfe, 0x59, 0x16, 0xca, 0x42, 0xf7, 0x7e, 0x43, 0xbb, 0x41, 0x8f, 0xf6, 0xf1,
+ 0xd0, 0xf2, 0x0c, 0x8d, 0xd8, 0xbb, 0x50, 0x38, 0xa6, 0x88, 0x28, 0xc4, 0xdd, 0xf3, 0xc5, 0xa4,
+ 0x7a, 0x4f, 0x69, 0x0a, 0xbe, 0xde, 0x93, 0x12, 0x31, 0x52, 0x24, 0x08, 0xa6, 0x18, 0xa6, 0x90,
+ 0x41, 0x59, 0xfe, 0xef, 0x0c, 0x94, 0x82, 0xb3, 0x99, 0x64, 0x48, 0x93, 0x49, 0x09, 0x69, 0x5e,
+ 0x02, 0x60, 0x44, 0xc2, 0xb5, 0x18, 0x0b, 0xc4, 0xba, 0x9c, 0xc7, 0xd8, 0x9b, 0xa8, 0x64, 0x31,
+ 0x58, 0x87, 0xd8, 0x39, 0xe6, 0x77, 0xbe, 0x95, 0xb1, 0x37, 0xd9, 0xf2, 0x61, 0xc4, 0x0d, 0x21,
+ 0x5b, 0x39, 0x19, 0xcf, 0xb1, 0xa5, 0xfb, 0x77, 0xa4, 0x65, 0x0e, 0xdb, 0xb5, 0x74, 0x4c, 0x36,
+ 0x17, 0x1e, 0x12, 0x46, 0xb7, 0xd7, 0x2a, 0x83, 0xfa, 0xd2, 0x5c, 0x84, 0x32, 0x27, 0xa3, 0xe2,
+ 0xb0, 0x0d, 0x96, 0x07, 0x93, 0x54, 0x9e, 0x65, 0x98, 0xf7, 0xfa, 0xb6, 0x3a, 0x76, 0x5d, 0xee,
+ 0x5c, 0x16, 0xbc, 0xbe, 0xbd, 0xeb, 0xba, 0xf2, 0x6d, 0x28, 0x0b, 0xe7, 0x4b, 0x68, 0x1d, 0x16,
+ 0xc5, 0xc3, 0xa8, 0xa8, 0x83, 0xb3, 0x20, 0x1c, 0x3e, 0x31, 0xef, 0x46, 0xfe, 0x79, 0x0e, 0xea,
+ 0xb1, 0x13, 0xa6, 0x93, 0xfd, 0x2e, 0x7e, 0x4e, 0x15, 0xaa, 0x58, 0x55, 0x29, 0x73, 0x18, 0x9d,
+ 0xbe, 0x8b, 0x50, 0x3e, 0xc0, 0x23, 0x1b, 0x3b, 0xaa, 0x65, 0x8e, 0xfc, 0x61, 0x03, 0x06, 0xea,
+ 0x98, 0xa3, 0x63, 0x32, 0xb2, 0x3a, 0x1e, 0x60, 0xc7, 0xd1, 0x46, 0x8c, 0x49, 0x9e, 0x32, 0xa9,
+ 0xf8, 0x40, 0xca, 0xe5, 0x06, 0x2c, 0x89, 0xc6, 0x50, 0xf5, 0xe5, 0x61, 0x57, 0x54, 0x8b, 0x22,
+ 0xae, 0xc9, 0x65, 0x7b, 0x03, 0x16, 0x46, 0x96, 0x39, 0x24, 0x3a, 0xac, 0x07, 0xf4, 0x05, 0xb6,
+ 0xe7, 0x07, 0x08, 0x9f, 0x78, 0x0d, 0x16, 0xe8, 0x15, 0x8e, 0x4a, 0x47, 0xc4, 0x55, 0x03, 0xad,
+ 0xaa, 0x2a, 0x75, 0x8a, 0xa0, 0x63, 0xea, 0x52, 0x59, 0xd6, 0x60, 0x81, 0x3a, 0x30, 0x91, 0x9e,
+ 0x33, 0x47, 0x86, 0x86, 0x06, 0x8a, 0xd0, 0xfb, 0xcb, 0x3c, 0x5a, 0xe0, 0xb4, 0xa1, 0x3f, 0x5e,
+ 0x13, 0x28, 0x89, 0xd3, 0x11, 0xdc, 0xc6, 0x08, 0x94, 0x40, 0x29, 0xd9, 0x6d, 0x8c, 0x40, 0x8a,
+ 0x20, 0x4f, 0xb5, 0x8b, 0xdd, 0x57, 0xd1, 0xdf, 0xf2, 0x5b, 0xb0, 0xbc, 0x6b, 0xc7, 0xe6, 0x8d,
+ 0xdb, 0xbb, 0xa9, 0xb3, 0x27, 0xff, 0x43, 0x06, 0xce, 0x26, 0x6a, 0x31, 0xeb, 0x32, 0x7d, 0xca,
+ 0x45, 0xbf, 0x81, 0xbd, 0xff, 0x09, 0x77, 0xbe, 0xa8, 0x6f, 0xc0, 0xa7, 0x5a, 0xf0, 0x0d, 0xae,
+ 0xc2, 0x22, 0x71, 0xac, 0xac, 0x81, 0xea, 0x18, 0xfb, 0x6a, 0xc0, 0x26, 0xef, 0x7f, 0x87, 0xa4,
+ 0x77, 0x06, 0x8a, 0xb1, 0xaf, 0x84, 0x1b, 0x69, 0x5d, 0x20, 0xa7, 0x7b, 0x2a, 0x9b, 0xef, 0x8a,
+ 0x4f, 0xba, 0x47, 0x54, 0xf6, 0x27, 0x19, 0x58, 0x48, 0x74, 0x03, 0x7d, 0x3b, 0xb6, 0xa9, 0xbc,
+ 0x2c, 0xec, 0xc3, 0xe9, 0x23, 0x15, 0xec, 0x2f, 0x1b, 0xd1, 0xfd, 0xe5, 0xd2, 0x09, 0x35, 0x23,
+ 0x5b, 0x4d, 0x03, 0xaa, 0xfc, 0x74, 0x95, 0x0f, 0xfd, 0xb4, 0x43, 0x40, 0x61, 0x74, 0xb3, 0xd1,
+ 0x29, 0xf9, 0xfd, 0x0c, 0x54, 0x38, 0x0f, 0x36, 0x11, 0x4f, 0xcd, 0x22, 0x1e, 0xb0, 0xe5, 0x66,
+ 0x08, 0xd8, 0xf2, 0x69, 0x01, 0xdb, 0x1f, 0xe5, 0xe0, 0x3c, 0xb7, 0x24, 0x23, 0xf6, 0xf0, 0x8a,
+ 0xdd, 0x75, 0xf9, 0xfb, 0xe8, 0x9b, 0x80, 0xb4, 0xd1, 0x97, 0xda, 0xb1, 0x4b, 0x1c, 0x65, 0x5b,
+ 0x73, 0xb0, 0x3a, 0x0e, 0xb4, 0x45, 0x62, 0x98, 0x4d, 0x86, 0xd8, 0xc5, 0x3a, 0xba, 0x01, 0x67,
+ 0x8c, 0xa1, 0x69, 0x39, 0xc4, 0x4d, 0xa7, 0x92, 0xf9, 0x77, 0xf0, 0xfc, 0x5d, 0x2e, 0x43, 0x36,
+ 0x5c, 0x22, 0x22, 0xbb, 0x77, 0x27, 0x81, 0x96, 0x7f, 0x8b, 0x1a, 0x34, 0x41, 0x97, 0x27, 0x0d,
+ 0xb4, 0x98, 0x76, 0x2d, 0xfb, 0x14, 0xbc, 0x29, 0x2a, 0xb0, 0xd3, 0xd2, 0xd1, 0x2d, 0x38, 0x17,
+ 0x28, 0x9e, 0x6a, 0x98, 0x5a, 0xdf, 0x23, 0x56, 0x99, 0xad, 0x6e, 0xae, 0x70, 0xcb, 0x01, 0x41,
+ 0x8b, 0xe3, 0xd9, 0x22, 0x27, 0x23, 0xc8, 0x06, 0x53, 0xd5, 0x8c, 0xa1, 0xed, 0x5f, 0x83, 0xf3,
+ 0xcf, 0xe4, 0x8c, 0xa1, 0x8d, 0x6e, 0xc1, 0x2a, 0xef, 0x8c, 0x89, 0x8f, 0x3c, 0x95, 0xde, 0xc6,
+ 0x0e, 0x6d, 0x75, 0x8c, 0x3d, 0xc7, 0xe8, 0x73, 0x1b, 0x73, 0x96, 0x51, 0xb4, 0xf1, 0x91, 0x77,
+ 0xcf, 0xb2, 0x5b, 0x43, 0x7b, 0x97, 0x62, 0xd1, 0x6d, 0x38, 0xaf, 0xb3, 0xe7, 0x27, 0xea, 0x3e,
+ 0x76, 0x3d, 0x36, 0x16, 0xae, 0x3f, 0xc4, 0xd4, 0xe6, 0x14, 0x95, 0x15, 0x4e, 0x72, 0x07, 0xb3,
+ 0x0f, 0x1a, 0x82, 0x29, 0x90, 0xff, 0x30, 0x07, 0xab, 0xa9, 0xb3, 0xc2, 0xd4, 0xe5, 0xb7, 0x93,
+ 0xf2, 0x8d, 0x4c, 0x4a, 0x06, 0xce, 0xa4, 0x4e, 0x0a, 0xba, 0x1d, 0xb3, 0x42, 0xaf, 0x26, 0x6e,
+ 0x81, 0xd2, 0xd6, 0x56, 0x60, 0x89, 0x6e, 0x45, 0x2d, 0xd1, 0x2b, 0xa7, 0xd4, 0x8e, 0x58, 0xa3,
+ 0x9b, 0x70, 0xf6, 0x81, 0x8b, 0xe9, 0xe1, 0x89, 0x3d, 0xa2, 0x5f, 0x18, 0xb9, 0xa7, 0xee, 0x08,
+ 0x37, 0xe0, 0x4c, 0xbc, 0xce, 0x29, 0xfb, 0x81, 0xfc, 0x19, 0x40, 0x73, 0x7f, 0x68, 0x73, 0xd6,
+ 0x6b, 0xb0, 0xc0, 0xce, 0x75, 0xc7, 0x9c, 0x07, 0x89, 0xca, 0x59, 0x8d, 0x3a, 0x45, 0xf8, 0xbc,
+ 0x1b, 0xf4, 0xa4, 0x79, 0xac, 0x1d, 0x51, 0x87, 0xd2, 0xbf, 0xd0, 0xa7, 0x1b, 0x3f, 0x07, 0xb2,
+ 0xbb, 0xa6, 0xef, 0x43, 0x89, 0xb0, 0x67, 0x52, 0x3c, 0x77, 0xee, 0x2a, 0xe4, 0x09, 0x77, 0xf4,
+ 0x66, 0x6c, 0x9a, 0x96, 0xa2, 0xd7, 0x96, 0xb1, 0x59, 0x79, 0x3d, 0x3a, 0x2b, 0x8b, 0x51, 0xe2,
+ 0xc8, 0x24, 0xdc, 0x00, 0x68, 0x85, 0xa3, 0x93, 0x90, 0x29, 0x93, 0x22, 0xd3, 0x75, 0x28, 0xb5,
+ 0x82, 0x1e, 0xcf, 0x54, 0x43, 0x85, 0x7c, 0xeb, 0x94, 0x5e, 0xb4, 0x9e, 0xa6, 0x17, 0xad, 0x78,
+ 0x2f, 0x7e, 0x99, 0x01, 0x29, 0xae, 0x17, 0xe8, 0xbd, 0x58, 0x6b, 0xc2, 0x36, 0x99, 0xae, 0x77,
+ 0x41, 0xcb, 0xef, 0x44, 0x5b, 0xbe, 0x38, 0xbd, 0x62, 0xe4, 0xc5, 0x80, 0x0c, 0x79, 0xbc, 0x3f,
+ 0xb4, 0x93, 0x5f, 0xde, 0x91, 0x51, 0x57, 0x28, 0x8e, 0xd0, 0x18, 0x84, 0x26, 0xf1, 0x75, 0x5b,
+ 0x8b, 0xd2, 0x10, 0x9c, 0x7c, 0x87, 0xef, 0x6b, 0x3d, 0xcd, 0x19, 0x62, 0x6f, 0x17, 0x8f, 0xf7,
+ 0xb1, 0xe3, 0x1e, 0x18, 0xc2, 0x24, 0x45, 0xfd, 0xd1, 0x4c, 0xd2, 0x1f, 0x95, 0x1b, 0xdc, 0x0a,
+ 0xc7, 0x79, 0x04, 0xb3, 0x76, 0x3a, 0x8b, 0xc0, 0x68, 0xc4, 0x79, 0x9c, 0x6a, 0x34, 0xd2, 0x05,
+ 0x9f, 0xd5, 0x68, 0xa4, 0x8a, 0xec, 0xcf, 0xf4, 0x67, 0x70, 0x61, 0xc7, 0x32, 0x87, 0x3b, 0xc4,
+ 0xff, 0x7a, 0x4a, 0x77, 0x72, 0x86, 0x60, 0x40, 0xfe, 0xb7, 0x0c, 0xbc, 0x34, 0x8d, 0xff, 0xaf,
+ 0xd2, 0xf1, 0x4c, 0x75, 0xd9, 0xf3, 0xe9, 0x2e, 0xfb, 0xfb, 0xb0, 0x9a, 0xa0, 0x75, 0x54, 0x7c,
+ 0x64, 0x1b, 0x4e, 0x10, 0x70, 0x2c, 0xc7, 0x2a, 0x39, 0x4d, 0x86, 0x96, 0xff, 0x38, 0x03, 0x2b,
+ 0xd3, 0x3a, 0x88, 0x3e, 0x8a, 0xcd, 0xab, 0x70, 0xd4, 0x7f, 0xf2, 0xa0, 0x07, 0x53, 0x7b, 0x3b,
+ 0x3a, 0xb5, 0x97, 0x4f, 0x67, 0x10, 0x99, 0xdd, 0x9f, 0xce, 0xc1, 0x3c, 0xf7, 0x2e, 0xd1, 0x7d,
+ 0x58, 0x1c, 0xdb, 0x6a, 0xe2, 0xb9, 0x01, 0x93, 0xec, 0xfc, 0x09, 0x2e, 0xaf, 0xb2, 0x30, 0x4e,
+ 0x38, 0xdb, 0xd7, 0x82, 0x9e, 0x65, 0xe3, 0x8f, 0x45, 0x22, 0x1e, 0x71, 0xd0, 0x91, 0xf8, 0xab,
+ 0x94, 0xdc, 0xcc, 0xaf, 0x52, 0x3e, 0x81, 0x65, 0x3f, 0xa0, 0xe5, 0x9b, 0x1f, 0x7f, 0xb4, 0xe5,
+ 0x1f, 0x70, 0x5f, 0x3c, 0x65, 0x93, 0x54, 0xce, 0x38, 0xa9, 0x5b, 0xf5, 0x3d, 0x40, 0x13, 0x17,
+ 0x87, 0x5b, 0x0b, 0xb3, 0xb7, 0x73, 0xf1, 0x67, 0x00, 0x71, 0x13, 0xa5, 0x48, 0x93, 0xb8, 0x65,
+ 0x4c, 0x5c, 0xbf, 0x16, 0xe2, 0xbd, 0x9b, 0x7e, 0xfd, 0x1a, 0x74, 0xcf, 0xa3, 0xcb, 0x54, 0x1d,
+ 0x07, 0xeb, 0x94, 0x3f, 0x55, 0xb9, 0x78, 0xca, 0x72, 0xe6, 0xdd, 0x4b, 0x18, 0x15, 0x0d, 0xce,
+ 0x93, 0xa8, 0x57, 0x65, 0xf1, 0x70, 0x62, 0xde, 0xd9, 0xd3, 0x16, 0xf9, 0x74, 0x85, 0x52, 0x56,
+ 0x46, 0xd3, 0xf4, 0x3b, 0xf2, 0x90, 0xa4, 0x34, 0xc3, 0x43, 0x92, 0x66, 0xf0, 0x91, 0xb6, 0xe0,
+ 0x9a, 0xf0, 0x45, 0xed, 0x2f, 0x7f, 0x5e, 0x44, 0xe7, 0xa0, 0x48, 0x4f, 0xe5, 0xc7, 0xda, 0x11,
+ 0xb7, 0x2c, 0xf3, 0xa4, 0xbc, 0xab, 0x1d, 0xc9, 0x5b, 0xf4, 0xed, 0x76, 0xd4, 0x5b, 0x79, 0x7a,
+ 0x2e, 0x9f, 0x43, 0xd1, 0xe7, 0x82, 0xae, 0xc7, 0x56, 0xea, 0x4a, 0xb2, 0x1b, 0x31, 0x85, 0xbe,
+ 0x1a, 0x5d, 0x99, 0xcb, 0xc9, 0x0a, 0x91, 0x95, 0x38, 0x81, 0x02, 0x7f, 0x93, 0x78, 0x1e, 0x4a,
+ 0x86, 0xad, 0x46, 0x1e, 0xcf, 0x14, 0x0d, 0xff, 0xc1, 0xe2, 0x6b, 0x50, 0x1f, 0x6b, 0xee, 0xe7,
+ 0xdc, 0x2d, 0x57, 0xc7, 0xfc, 0xd3, 0xfc, 0xaa, 0x52, 0x25, 0x60, 0xe6, 0x92, 0xef, 0x1a, 0x66,
+ 0x82, 0x4e, 0x3b, 0xe2, 0x71, 0x9f, 0x48, 0xa7, 0x1d, 0xc9, 0x3f, 0xcd, 0x00, 0x84, 0x5f, 0x7c,
+ 0x7d, 0xcd, 0x2f, 0xd6, 0x08, 0x6c, 0x64, 0xb8, 0x1e, 0x7d, 0xaa, 0x5d, 0x52, 0xe8, 0x6f, 0xfa,
+ 0x81, 0x5f, 0xf4, 0xf3, 0x6d, 0x29, 0xae, 0xf6, 0xc2, 0x37, 0xdb, 0xdb, 0x50, 0xdc, 0xd5, 0xbc,
+ 0xfe, 0x01, 0x11, 0xe6, 0x72, 0x44, 0x18, 0xc1, 0x1d, 0xa1, 0x14, 0xa7, 0x7c, 0x3c, 0xf7, 0x10,
+ 0x2a, 0x91, 0x30, 0x65, 0x3d, 0xc2, 0x4c, 0x58, 0xbe, 0x22, 0x95, 0xc0, 0xf3, 0x2c, 0x14, 0x84,
+ 0xd0, 0xa7, 0xaa, 0xf0, 0x92, 0xfc, 0x8b, 0x39, 0x80, 0x4d, 0xcb, 0xd4, 0x0d, 0x66, 0x23, 0x6e,
+ 0x00, 0xf0, 0x95, 0x1d, 0x7e, 0x4c, 0x87, 0x62, 0x92, 0xee, 0x61, 0x4f, 0x29, 0x31, 0x2a, 0xd2,
+ 0xad, 0x77, 0xa0, 0x12, 0xdc, 0xa8, 0x91, 0x4a, 0xd9, 0xa9, 0x95, 0x82, 0x17, 0xc1, 0xa4, 0xda,
+ 0x77, 0xa0, 0x16, 0x8b, 0xc9, 0x72, 0xf1, 0xb3, 0x71, 0xb1, 0x2b, 0x4a, 0x45, 0x13, 0xbb, 0x7f,
+ 0x13, 0xca, 0x7e, 0x6d, 0xd2, 0x66, 0x7e, 0xba, 0xa0, 0xac, 0x1a, 0x69, 0xf1, 0xdd, 0x20, 0xf3,
+ 0x86, 0x77, 0x4c, 0x6b, 0xcd, 0x4d, 0xad, 0x55, 0x09, 0x08, 0x49, 0xc5, 0x0f, 0x60, 0x81, 0x04,
+ 0x5c, 0xd1, 0xca, 0x85, 0xa9, 0x95, 0xeb, 0xf8, 0xc8, 0xdb, 0x14, 0xeb, 0x5f, 0x84, 0xb2, 0x63,
+ 0x7f, 0x6e, 0x10, 0x53, 0x34, 0x19, 0x79, 0xd4, 0xcc, 0xcd, 0x29, 0xe0, 0xb0, 0x2f, 0x8b, 0x26,
+ 0x23, 0x0f, 0xdd, 0x06, 0x08, 0xbf, 0x5f, 0xe1, 0xd7, 0xe4, 0xc2, 0x55, 0x57, 0x38, 0x3f, 0xdc,
+ 0x22, 0x92, 0x69, 0x2d, 0x05, 0x9f, 0xb7, 0xa0, 0x3b, 0xb0, 0x38, 0x22, 0xd6, 0x30, 0x26, 0x61,
+ 0x69, 0xaa, 0x84, 0x0b, 0x94, 0x3c, 0x22, 0xe3, 0x65, 0x90, 0xc2, 0xa8, 0xd2, 0x54, 0xa9, 0xda,
+ 0x03, 0x55, 0xfb, 0xaa, 0xc9, 0x83, 0x49, 0x73, 0x87, 0xe8, 0xff, 0x75, 0x28, 0xfb, 0x8f, 0xef,
+ 0x54, 0xc3, 0xa4, 0x6f, 0x7e, 0x6a, 0xe2, 0x12, 0xb8, 0x4b, 0x8f, 0x6f, 0x94, 0x12, 0x7f, 0x7d,
+ 0xd7, 0x32, 0xe5, 0x03, 0x28, 0x05, 0x62, 0xa3, 0x45, 0xa8, 0x2b, 0x9d, 0x07, 0xbd, 0xa6, 0xda,
+ 0xfb, 0xb4, 0x1b, 0x7c, 0x67, 0xb0, 0x0c, 0x8b, 0x02, 0xb0, 0xd5, 0xee, 0x35, 0x95, 0x76, 0x63,
+ 0x47, 0xca, 0xc4, 0x10, 0xcd, 0x47, 0x1c, 0x91, 0x45, 0x4b, 0x20, 0x09, 0x08, 0xfe, 0xa9, 0x88,
+ 0x3c, 0x80, 0x7a, 0xd0, 0xa9, 0x06, 0xcb, 0x1f, 0x73, 0x23, 0xb2, 0x4e, 0x5e, 0x12, 0x07, 0x35,
+ 0x42, 0x28, 0x2c, 0x95, 0x4b, 0x50, 0xf6, 0x07, 0xd2, 0x08, 0xbe, 0x26, 0x12, 0x41, 0x72, 0x1b,
+ 0x4a, 0xbb, 0x58, 0xe7, 0x2d, 0xbc, 0x11, 0x69, 0x61, 0x59, 0xbc, 0x0d, 0xd3, 0x13, 0xbc, 0x97,
+ 0x60, 0xee, 0x50, 0x1b, 0x4d, 0xd8, 0xda, 0xce, 0x29, 0xac, 0x20, 0xab, 0x50, 0x6f, 0xb8, 0x5d,
+ 0x07, 0xdb, 0xd8, 0xf4, 0xb9, 0x4a, 0x90, 0xd3, 0x5c, 0x93, 0xfb, 0xd5, 0xe4, 0x27, 0x59, 0xc1,
+ 0x84, 0x42, 0x0b, 0xae, 0x99, 0x58, 0x09, 0xc9, 0x50, 0x25, 0xdb, 0xfa, 0x08, 0x0f, 0x3c, 0x75,
+ 0x6c, 0xb9, 0xfe, 0xc7, 0x5a, 0xe5, 0x89, 0x8b, 0x77, 0xf0, 0xc0, 0xdb, 0xb5, 0x5c, 0x4f, 0xbe,
+ 0x0d, 0x55, 0xfe, 0x78, 0x9e, 0xb3, 0x3f, 0xf1, 0xbb, 0x19, 0x17, 0x8f, 0x06, 0xdc, 0x03, 0xa5,
+ 0xbf, 0xe5, 0xcb, 0x50, 0xdf, 0xa1, 0x17, 0x05, 0x0e, 0x1e, 0x70, 0x06, 0x41, 0x47, 0xf8, 0x55,
+ 0x18, 0xeb, 0xc8, 0xbf, 0xe4, 0x60, 0x9e, 0x11, 0xb8, 0xe1, 0x2b, 0x51, 0xad, 0x1f, 0x5c, 0xf9,
+ 0xd5, 0x12, 0xaf, 0x44, 0x19, 0x35, 0x7f, 0x25, 0xca, 0x79, 0xbf, 0x0b, 0xa5, 0xf0, 0x6a, 0x3a,
+ 0x1b, 0x7f, 0x1e, 0x1a, 0x9b, 0x38, 0x25, 0xa4, 0x45, 0xaf, 0x42, 0x6e, 0xcc, 0xdd, 0xe3, 0x48,
+ 0xbc, 0x17, 0xcc, 0x84, 0x42, 0xf0, 0xe8, 0x3d, 0x00, 0x62, 0x3c, 0xd8, 0x78, 0x73, 0xdb, 0x71,
+ 0x2e, 0x62, 0x76, 0xc4, 0xa9, 0xa0, 0x26, 0x84, 0x01, 0xd0, 0x07, 0x50, 0x8d, 0x58, 0x02, 0x6e,
+ 0x42, 0x4e, 0x90, 0xae, 0x22, 0x1a, 0x03, 0x74, 0x03, 0xe6, 0xf9, 0xd7, 0x0d, 0xdc, 0x7e, 0x08,
+ 0xea, 0x12, 0x99, 0x20, 0xc5, 0xa7, 0x23, 0xc2, 0xf2, 0x6b, 0x1b, 0x07, 0x0f, 0xb8, 0x8b, 0x74,
+ 0x4e, 0xf4, 0x62, 0x22, 0xf3, 0xe2, 0xdf, 0xe8, 0x38, 0x78, 0x80, 0xee, 0x40, 0x3d, 0x66, 0x16,
+ 0xb8, 0x13, 0x74, 0x82, 0xb8, 0xb5, 0xa8, 0x65, 0x90, 0xbf, 0xca, 0x40, 0x29, 0xf8, 0xae, 0x37,
+ 0xf5, 0x23, 0xd7, 0xb7, 0x01, 0xfa, 0x81, 0x7d, 0xe2, 0xb3, 0xb5, 0x94, 0x66, 0xbb, 0x14, 0x81,
+ 0x0e, 0xbd, 0x01, 0xf3, 0x4c, 0x2d, 0x5c, 0x3e, 0x5b, 0xe2, 0x03, 0x5e, 0x86, 0x50, 0x7c, 0x0a,
+ 0xf9, 0x63, 0x28, 0x70, 0xdf, 0x38, 0x4d, 0x80, 0xb7, 0x00, 0x22, 0x09, 0x01, 0x72, 0xd3, 0xbe,
+ 0x4a, 0x16, 0xc8, 0x68, 0x8a, 0xac, 0xf8, 0x7b, 0x57, 0x74, 0x35, 0xb2, 0x92, 0x4f, 0xf8, 0x54,
+ 0x97, 0xad, 0x65, 0x31, 0x53, 0x4a, 0x76, 0x86, 0x4c, 0x29, 0x29, 0x99, 0x49, 0x22, 0xe9, 0x02,
+ 0xf2, 0xa7, 0xa5, 0x0b, 0x40, 0xd7, 0x60, 0x5e, 0xc7, 0x03, 0x8d, 0x6c, 0x22, 0x73, 0x27, 0xad,
+ 0x26, 0x9f, 0x4a, 0xfe, 0x71, 0x06, 0xaa, 0x04, 0x11, 0x7e, 0x75, 0xf7, 0x0e, 0x94, 0x75, 0xe6,
+ 0xfb, 0xf0, 0x1d, 0x7e, 0x7a, 0x42, 0x03, 0xd0, 0x43, 0x47, 0xea, 0x36, 0x2c, 0xb0, 0x40, 0x46,
+ 0xa5, 0x40, 0x83, 0xbf, 0xd4, 0x49, 0x17, 0x58, 0x62, 0xa4, 0x5b, 0x01, 0xa5, 0xfc, 0x07, 0x19,
+ 0xc8, 0x29, 0x96, 0x86, 0x6a, 0x90, 0xd5, 0xfc, 0x23, 0x9e, 0xac, 0x46, 0xf3, 0xbf, 0x31, 0x47,
+ 0x62, 0x84, 0x7d, 0xc7, 0x2f, 0x04, 0x10, 0x8b, 0x37, 0xd6, 0x28, 0x8a, 0xe7, 0x39, 0x61, 0x25,
+ 0xe1, 0x2d, 0x76, 0x3e, 0xf2, 0x16, 0xdb, 0xff, 0x88, 0x24, 0xb1, 0xaf, 0x2b, 0xdd, 0xfb, 0xad,
+ 0xf0, 0x29, 0xbf, 0xfc, 0x37, 0x19, 0xc8, 0x3d, 0x74, 0x06, 0xa9, 0xda, 0xf4, 0x0a, 0x64, 0x1d,
+ 0x5d, 0x50, 0xe3, 0xe4, 0xab, 0xd4, 0xac, 0xa3, 0xa3, 0x1b, 0x50, 0xe2, 0x8f, 0xa9, 0x1d, 0x8f,
+ 0x7f, 0xc8, 0x37, 0xe5, 0x09, 0x2b, 0x23, 0x53, 0xe8, 0xb7, 0xf3, 0xfc, 0x01, 0xb7, 0xe3, 0xf1,
+ 0xa9, 0x9e, 0x52, 0x85, 0x91, 0x29, 0x1e, 0x7f, 0xf5, 0xca, 0x5e, 0xe7, 0x65, 0x0d, 0x5d, 0xfe,
+ 0x49, 0x06, 0x96, 0xb6, 0xd8, 0xcc, 0xd2, 0xd9, 0xde, 0x32, 0x5c, 0x4f, 0x33, 0xfb, 0x18, 0x6d,
+ 0x40, 0x70, 0x22, 0xcd, 0x0e, 0x9b, 0x55, 0x9d, 0xa3, 0xf8, 0x58, 0x9f, 0xf1, 0xd1, 0x89, 0x7a,
+ 0xf4, 0x6e, 0x3b, 0xa5, 0x1e, 0x9b, 0x8c, 0x33, 0x3e, 0x3a, 0x52, 0x4f, 0xfe, 0xdb, 0x3c, 0x14,
+ 0x58, 0xba, 0xc0, 0xc4, 0x8c, 0x9e, 0x87, 0x52, 0x78, 0x5a, 0xce, 0xbf, 0x5a, 0x75, 0xfc, 0xe3,
+ 0xf1, 0x8b, 0x50, 0x26, 0x8e, 0x05, 0x36, 0xd9, 0xa5, 0x6f, 0x8e, 0x39, 0x42, 0x0c, 0x44, 0x2f,
+ 0x7d, 0x5f, 0x07, 0x89, 0x13, 0xf0, 0xed, 0x88, 0x2f, 0x8b, 0x92, 0x52, 0x67, 0xf0, 0x86, 0x0f,
+ 0x8e, 0x7c, 0x12, 0x32, 0x17, 0xfb, 0x24, 0xe4, 0xcd, 0xd4, 0x48, 0x97, 0x5f, 0x8d, 0x26, 0xa2,
+ 0xd9, 0xcf, 0xa6, 0x07, 0xdc, 0xf3, 0x4f, 0x73, 0xa6, 0x3d, 0x25, 0xec, 0xee, 0xc1, 0x59, 0xbe,
+ 0x1c, 0xe3, 0x63, 0xcc, 0xac, 0xf1, 0x85, 0xc8, 0xe2, 0x4b, 0x4c, 0xae, 0xb2, 0xa4, 0xa7, 0x4d,
+ 0xf9, 0x6d, 0xfa, 0x3a, 0x62, 0x80, 0x75, 0xec, 0xb0, 0x17, 0x35, 0xa5, 0xf8, 0x7e, 0xb2, 0x29,
+ 0xa2, 0x95, 0x28, 0xf5, 0x73, 0xfa, 0x10, 0x23, 0x7e, 0xc8, 0x51, 0x9e, 0xf5, 0x90, 0x43, 0xb6,
+ 0xa0, 0x1a, 0x91, 0xef, 0x84, 0x63, 0xb1, 0xe8, 0x67, 0x7e, 0xd9, 0xc4, 0x67, 0x7e, 0xaf, 0x40,
+ 0x8d, 0x9d, 0x21, 0xa8, 0x9a, 0xab, 0x06, 0xe1, 0x5a, 0x55, 0xa9, 0x30, 0x68, 0xc3, 0x25, 0x6e,
+ 0xab, 0xdc, 0x84, 0xa2, 0x6f, 0x05, 0x4e, 0x70, 0x7e, 0x62, 0xaf, 0x12, 0xb2, 0xf1, 0x57, 0x09,
+ 0xf2, 0x9f, 0xe4, 0xa1, 0x44, 0xf8, 0x04, 0x77, 0x97, 0xfc, 0xe5, 0x46, 0x86, 0xba, 0x73, 0x69,
+ 0x2f, 0x37, 0x98, 0xa3, 0x17, 0x94, 0xc9, 0x82, 0x99, 0xd8, 0xdc, 0x47, 0xcb, 0x4e, 0x6c, 0xd6,
+ 0x64, 0xdf, 0x72, 0x74, 0xd5, 0xb0, 0x0f, 0xdf, 0xe6, 0x67, 0x76, 0xc0, 0x40, 0x2d, 0xfb, 0xf0,
+ 0xed, 0x28, 0xc1, 0x06, 0x37, 0x07, 0x21, 0xc1, 0x06, 0x4d, 0xee, 0xc4, 0x62, 0x36, 0xca, 0x81,
+ 0x3f, 0xa5, 0x60, 0x20, 0x9f, 0x43, 0x48, 0xb0, 0xc1, 0x6f, 0xfd, 0x43, 0x82, 0x0d, 0xd2, 0x0f,
+ 0x17, 0x3b, 0x86, 0x36, 0xe2, 0xb7, 0xfc, 0xbc, 0x84, 0xbe, 0x05, 0x55, 0xff, 0x04, 0x92, 0xf1,
+ 0x2e, 0xd1, 0xce, 0x54, 0x7c, 0x20, 0xe5, 0x1e, 0x23, 0xda, 0xa0, 0x7a, 0x14, 0x25, 0xda, 0x20,
+ 0x44, 0x8c, 0xa7, 0x4a, 0x5f, 0x32, 0x30, 0x55, 0xc9, 0x29, 0x15, 0x06, 0x6c, 0x53, 0x18, 0x91,
+ 0xb3, 0xaf, 0xf5, 0x0f, 0x30, 0xcb, 0xaf, 0x47, 0x1f, 0x25, 0xe6, 0x14, 0xa0, 0x20, 0x9a, 0xc7,
+ 0x00, 0xbd, 0x0a, 0xb5, 0x80, 0x80, 0xe6, 0x10, 0xa0, 0x4f, 0x12, 0x73, 0x4a, 0xd5, 0xa7, 0x61,
+ 0x89, 0x05, 0x2e, 0x40, 0x99, 0x5f, 0xab, 0xeb, 0x9a, 0xa7, 0xd1, 0x0f, 0x54, 0x73, 0x4a, 0x89,
+ 0x5e, 0xa9, 0x6f, 0x69, 0x9e, 0x46, 0x7c, 0x57, 0xec, 0x38, 0x96, 0x43, 0x1f, 0x15, 0xe6, 0x14,
+ 0x56, 0x40, 0x2f, 0x03, 0x97, 0x46, 0xfd, 0x62, 0x82, 0x9d, 0x63, 0xfa, 0x66, 0x30, 0xa7, 0x94,
+ 0x19, 0xec, 0x63, 0x02, 0x62, 0x53, 0xe1, 0x62, 0x8f, 0x53, 0x2c, 0x30, 0x01, 0x29, 0x88, 0x12,
+ 0xc8, 0x9f, 0x42, 0x5e, 0xb1, 0x3f, 0x37, 0x82, 0x9d, 0x28, 0x73, 0xf2, 0x4e, 0x74, 0xc2, 0x15,
+ 0x45, 0xa0, 0x64, 0xfc, 0x40, 0x65, 0xed, 0x87, 0x39, 0x28, 0xb0, 0xd8, 0x0a, 0x55, 0xa0, 0xa8,
+ 0x34, 0xf7, 0x9a, 0xca, 0xc3, 0xe6, 0x96, 0xf4, 0x02, 0x02, 0xc8, 0xb7, 0xba, 0x87, 0x6f, 0x4b,
+ 0x4f, 0x1e, 0xe7, 0xf9, 0xef, 0x0d, 0xe9, 0xc9, 0xe3, 0x22, 0xaa, 0xc2, 0x3c, 0x81, 0xab, 0xbb,
+ 0x9b, 0xd2, 0x57, 0x8f, 0xf3, 0xbc, 0xb8, 0xc1, 0x8a, 0x45, 0x54, 0x87, 0x12, 0xc3, 0x76, 0x77,
+ 0xf6, 0xa4, 0x1f, 0x3d, 0xce, 0x73, 0xc0, 0x86, 0x0f, 0x28, 0xa2, 0x1a, 0x14, 0x29, 0xc5, 0xc3,
+ 0x6e, 0x5b, 0x7a, 0xfc, 0x24, 0xcf, 0xcb, 0x1b, 0xbc, 0x5c, 0x44, 0x0b, 0x50, 0xf6, 0xf1, 0x84,
+ 0xe9, 0x93, 0x27, 0x79, 0x0e, 0xda, 0x08, 0x41, 0x45, 0x22, 0xd1, 0x43, 0xc2, 0xf1, 0xef, 0x1f,
+ 0xeb, 0xe4, 0x77, 0x93, 0xd4, 0xfe, 0xa7, 0xc7, 0x3a, 0x2a, 0x41, 0x4e, 0xe9, 0x6d, 0x4a, 0x3f,
+ 0x7a, 0x92, 0x47, 0x12, 0x00, 0x65, 0xd4, 0x6c, 0x6f, 0x36, 0xba, 0xd2, 0xef, 0x3d, 0xf6, 0x21,
+ 0x1b, 0x01, 0xa4, 0x88, 0x96, 0xa0, 0x76, 0x77, 0xa7, 0xf3, 0x89, 0xba, 0xd7, 0x6d, 0x6e, 0xaa,
+ 0xb4, 0xbb, 0x3f, 0x7e, 0x92, 0x4f, 0x40, 0x37, 0xa4, 0x1f, 0x3f, 0x29, 0xa2, 0x15, 0x40, 0x51,
+ 0x5a, 0x2a, 0xf2, 0x4f, 0x9e, 0xe4, 0x13, 0x98, 0x0d, 0x8e, 0x29, 0xa2, 0xb3, 0x20, 0x85, 0x98,
+ 0x9d, 0x9b, 0x1c, 0xae, 0xa3, 0x1a, 0x14, 0x3a, 0xdd, 0xc6, 0xc7, 0x0f, 0x9a, 0xd2, 0x7f, 0x3e,
+ 0xf9, 0xf9, 0xe3, 0xfc, 0xda, 0x26, 0x14, 0x7d, 0xcf, 0x0e, 0x01, 0x14, 0xb6, 0x77, 0x3a, 0x77,
+ 0x1a, 0x3b, 0xd2, 0x0b, 0x61, 0xbe, 0x02, 0xfa, 0xc8, 0xb2, 0xb1, 0xf5, 0x5d, 0xb5, 0xd5, 0x96,
+ 0xb2, 0xa8, 0x0c, 0xf3, 0xe4, 0x77, 0xe7, 0x41, 0x8f, 0x25, 0x32, 0x78, 0xa8, 0xdc, 0x95, 0xf2,
+ 0x6b, 0x3b, 0x91, 0x4f, 0x77, 0xd9, 0x3e, 0x81, 0x24, 0xa8, 0xec, 0x74, 0x3a, 0xf7, 0x1f, 0x74,
+ 0xd5, 0xe6, 0xa3, 0xc6, 0x66, 0x4f, 0x7a, 0x01, 0x2d, 0x40, 0x95, 0x43, 0x76, 0x3a, 0xed, 0xed,
+ 0xa6, 0x22, 0x65, 0x10, 0x82, 0x1a, 0x07, 0xed, 0xdd, 0xeb, 0x28, 0xbd, 0xa6, 0x22, 0x65, 0xd7,
+ 0xbe, 0xca, 0x40, 0x59, 0x38, 0xce, 0xa2, 0x8f, 0x3c, 0x95, 0xe6, 0xdd, 0xd6, 0x23, 0xe9, 0x05,
+ 0xa2, 0x29, 0xed, 0x66, 0x6b, 0xfb, 0xde, 0x9d, 0x0e, 0xa9, 0x3d, 0x0f, 0xb9, 0x5e, 0x63, 0x9b,
+ 0x8b, 0xb5, 0xa7, 0x76, 0x1b, 0xbd, 0x7b, 0x52, 0x0e, 0x55, 0xa1, 0xb4, 0xd9, 0xd9, 0xdd, 0x7d,
+ 0xd0, 0x6e, 0xf5, 0x3e, 0x95, 0xc8, 0x1c, 0x56, 0x9b, 0x8f, 0x7a, 0x6a, 0x08, 0x9a, 0x23, 0x31,
+ 0xfb, 0x4e, 0x43, 0xd9, 0x6e, 0x0a, 0xc0, 0x02, 0x63, 0xfd, 0xa8, 0xa7, 0xde, 0xeb, 0x74, 0xa5,
+ 0xf9, 0xb5, 0xd7, 0xa1, 0x14, 0x9c, 0x62, 0xd1, 0xc7, 0xee, 0xed, 0x4f, 0xc5, 0x57, 0xef, 0x00,
+ 0x85, 0x56, 0xfb, 0x61, 0x53, 0xe9, 0x49, 0xd9, 0xb5, 0x35, 0x90, 0xe2, 0x67, 0x54, 0xa8, 0x00,
+ 0xd9, 0xe6, 0xc7, 0xd2, 0x0b, 0xe4, 0xef, 0x76, 0x53, 0xca, 0x90, 0xbf, 0x3b, 0x4d, 0x29, 0xbb,
+ 0x76, 0x8d, 0xbf, 0xf5, 0xe2, 0x81, 0x61, 0xf8, 0x9e, 0x9e, 0xbe, 0x92, 0xdd, 0x6c, 0x76, 0x7b,
+ 0x8c, 0xb9, 0xd2, 0xfc, 0x2e, 0x7d, 0x3d, 0xbb, 0xf6, 0x00, 0x16, 0x53, 0x02, 0x7b, 0xd2, 0xa9,
+ 0x40, 0x76, 0xb5, 0xb1, 0x45, 0x96, 0xcd, 0x12, 0x48, 0x21, 0x48, 0x69, 0xee, 0x76, 0x1e, 0x92,
+ 0x86, 0xcf, 0xc0, 0x82, 0x08, 0xe5, 0x0f, 0xf5, 0xd7, 0xae, 0x42, 0x35, 0x12, 0xcd, 0x93, 0x11,
+ 0xdc, 0x6d, 0x6e, 0xa9, 0xbb, 0x1d, 0xc2, 0xaa, 0x0e, 0x65, 0x52, 0xf0, 0xc9, 0x33, 0x6b, 0x1b,
+ 0x50, 0x8f, 0x85, 0x0c, 0xd1, 0xa7, 0xbf, 0x64, 0x38, 0x76, 0xbb, 0x1d, 0x85, 0x4b, 0xdf, 0x7c,
+ 0x44, 0x7f, 0x67, 0x6f, 0xfe, 0xe2, 0x02, 0x14, 0xb7, 0x89, 0x05, 0x68, 0xd8, 0x06, 0xba, 0x0d,
+ 0x45, 0x3f, 0x39, 0x34, 0x3a, 0x17, 0x89, 0x67, 0xc4, 0x84, 0xd1, 0xab, 0x67, 0x13, 0x4e, 0x64,
+ 0x73, 0x6c, 0x7b, 0xc7, 0xe8, 0x7d, 0x98, 0xe7, 0xe9, 0xa1, 0xd1, 0x8a, 0x58, 0x5b, 0xcc, 0x18,
+ 0x7d, 0x42, 0xe5, 0x02, 0x4b, 0x1c, 0x8d, 0x04, 0x87, 0x22, 0x92, 0x5b, 0x7a, 0x75, 0x25, 0x89,
+ 0xe0, 0xe6, 0xf7, 0x7d, 0x98, 0xe7, 0x69, 0x63, 0x51, 0xec, 0x58, 0x39, 0x4c, 0x65, 0x3b, 0xb5,
+ 0xe5, 0x06, 0x40, 0x98, 0x28, 0x16, 0x9d, 0x17, 0x7d, 0xa3, 0x58, 0x5a, 0xe9, 0xa9, 0x2c, 0x36,
+ 0xa1, 0xe8, 0x67, 0x77, 0x16, 0x07, 0x2e, 0x96, 0x4a, 0x7a, 0x75, 0x35, 0x0d, 0xc5, 0xba, 0x70,
+ 0x3d, 0x83, 0xb6, 0x01, 0xc2, 0x5c, 0xb0, 0xa2, 0x1c, 0x89, 0x04, 0xd0, 0xab, 0x2f, 0xa6, 0x23,
+ 0xf9, 0x68, 0x7c, 0x08, 0xa5, 0x20, 0x11, 0x32, 0x5a, 0x9d, 0x9e, 0x1d, 0x79, 0x6a, 0x77, 0x9a,
+ 0x50, 0x11, 0xd3, 0x1c, 0x23, 0xe1, 0x0c, 0x2b, 0x25, 0xfd, 0xf1, 0x49, 0x03, 0x1b, 0xa6, 0x35,
+ 0x16, 0x3b, 0x94, 0x48, 0x76, 0x7c, 0xc2, 0xc0, 0x96, 0x85, 0x54, 0xc7, 0x48, 0xe8, 0x77, 0x32,
+ 0x03, 0xf2, 0x54, 0x26, 0x3b, 0x50, 0x16, 0xf2, 0x11, 0x8b, 0x4c, 0x92, 0x09, 0x8f, 0x57, 0x5f,
+ 0x9a, 0x82, 0x0d, 0xa6, 0xa9, 0x09, 0x15, 0x31, 0x45, 0xb1, 0x38, 0x38, 0x29, 0xa9, 0x8b, 0xa7,
+ 0x0a, 0x75, 0x1f, 0xea, 0xb1, 0xf4, 0xc4, 0xe8, 0x52, 0x9a, 0xea, 0xcd, 0xc4, 0xec, 0x21, 0xd4,
+ 0x63, 0x69, 0x84, 0x45, 0x66, 0xe9, 0x89, 0x8d, 0x57, 0x5f, 0x3e, 0x81, 0x82, 0x6b, 0xd2, 0xc7,
+ 0x80, 0x92, 0x49, 0x85, 0xd1, 0xb7, 0x22, 0x3d, 0x4e, 0x4f, 0x39, 0x3c, 0x55, 0xd4, 0x0f, 0xd8,
+ 0x52, 0xd5, 0xbc, 0x03, 0x94, 0xbc, 0x01, 0xf2, 0x2b, 0x9f, 0x4b, 0xc1, 0x70, 0x91, 0xc2, 0xd5,
+ 0x4a, 0x58, 0x24, 0x57, 0xab, 0xc0, 0xe5, 0xb4, 0xd5, 0x4a, 0x18, 0xc4, 0x57, 0xab, 0x50, 0x7d,
+ 0x35, 0x0d, 0x15, 0xa8, 0x41, 0x2b, 0xb8, 0x20, 0x63, 0xc9, 0x6c, 0xd1, 0x85, 0x84, 0xcc, 0x91,
+ 0x2c, 0xb7, 0xd3, 0xa4, 0xb9, 0x92, 0x41, 0x0d, 0x28, 0xfa, 0xb9, 0x62, 0x45, 0x79, 0x62, 0x69,
+ 0x6a, 0x45, 0x79, 0x12, 0xa9, 0x65, 0x3b, 0x50, 0x11, 0x93, 0xa9, 0xa2, 0xa4, 0x16, 0x47, 0x58,
+ 0x5d, 0x98, 0x86, 0x0e, 0xba, 0xf7, 0x6d, 0x28, 0xb0, 0x0c, 0xab, 0x28, 0x7a, 0xed, 0x16, 0x26,
+ 0x46, 0x9d, 0x3a, 0xbc, 0x1f, 0x42, 0x29, 0x48, 0xb5, 0x2a, 0x9a, 0x9f, 0x78, 0xfe, 0xd5, 0xa9,
+ 0x0c, 0x3e, 0x82, 0x79, 0x9e, 0x5d, 0x55, 0x54, 0x91, 0x68, 0x5a, 0xd6, 0xd5, 0x73, 0x29, 0x98,
+ 0x40, 0xfa, 0x0f, 0xa1, 0x14, 0xa4, 0x00, 0x14, 0x45, 0x88, 0x27, 0x60, 0x3d, 0xc9, 0x02, 0x8a,
+ 0x99, 0xfe, 0xc4, 0xf1, 0x4c, 0xc9, 0xa4, 0x3a, 0x95, 0x4d, 0x0b, 0x20, 0xcc, 0xaa, 0x27, 0x2a,
+ 0x6b, 0x22, 0x15, 0xaa, 0x68, 0xd2, 0x93, 0xe9, 0x4f, 0xe9, 0xee, 0x50, 0x8d, 0x24, 0xd1, 0x13,
+ 0xf5, 0x2d, 0x2d, 0xdd, 0xe9, 0x49, 0x5d, 0x13, 0xf3, 0x8d, 0x8a, 0x5d, 0x4b, 0xc9, 0x43, 0x3a,
+ 0x95, 0xcd, 0x36, 0xd5, 0x7f, 0xe1, 0xe2, 0x33, 0xaa, 0xff, 0x89, 0x6c, 0x99, 0x53, 0x19, 0xed,
+ 0xfa, 0x39, 0xb6, 0x04, 0x5e, 0x2f, 0xc7, 0x87, 0x7b, 0x76, 0x76, 0x0f, 0x58, 0x02, 0x5f, 0x81,
+ 0xd9, 0xc5, 0xe8, 0xc8, 0x26, 0x59, 0x5d, 0x9a, 0x4e, 0x10, 0x0c, 0x7f, 0x07, 0x16, 0x12, 0x79,
+ 0x40, 0x91, 0x9c, 0x98, 0x82, 0xd9, 0xe5, 0x64, 0xdb, 0x48, 0x78, 0xd0, 0x1d, 0xdd, 0x46, 0xe2,
+ 0x79, 0x30, 0x4f, 0xdf, 0x46, 0x42, 0x4e, 0x89, 0x6d, 0x64, 0x66, 0x66, 0x0a, 0x54, 0x23, 0x39,
+ 0x3d, 0xc5, 0x39, 0x4d, 0x4b, 0x0c, 0xba, 0x7a, 0x71, 0x2a, 0x3e, 0x18, 0xb8, 0x5d, 0x90, 0xe2,
+ 0xb9, 0x3d, 0xc5, 0xe9, 0x9d, 0x92, 0xf7, 0x73, 0xaa, 0x88, 0x7b, 0xec, 0x1f, 0x04, 0xc4, 0xcf,
+ 0xd1, 0x5f, 0x49, 0x59, 0xe3, 0x89, 0x34, 0x93, 0x53, 0x99, 0x7e, 0x1a, 0xfc, 0xab, 0x80, 0x38,
+ 0xdf, 0xcb, 0xe9, 0xeb, 0x7e, 0x76, 0xd6, 0x43, 0x96, 0xba, 0x30, 0xc1, 0xf8, 0xd5, 0xb4, 0xe5,
+ 0x9e, 0x64, 0xfb, 0xda, 0x69, 0x64, 0xc1, 0x38, 0xff, 0xbf, 0x20, 0x87, 0x6a, 0xa2, 0xad, 0x2b,
+ 0x53, 0x2c, 0xc5, 0xec, 0xbd, 0x60, 0xfe, 0x35, 0x3d, 0x67, 0x88, 0x6e, 0xda, 0x42, 0x9e, 0xc7,
+ 0xd3, 0xfd, 0x6b, 0x5a, 0x3f, 0xb1, 0x63, 0xcf, 0xc2, 0x82, 0xef, 0xd8, 0x94, 0x41, 0xcc, 0xf0,
+ 0x8b, 0xd5, 0x57, 0xd3, 0x50, 0xc1, 0x08, 0x05, 0xee, 0x68, 0x5c, 0x8e, 0x44, 0xe2, 0xcc, 0x19,
+ 0xdc, 0x51, 0xca, 0x23, 0xe9, 0x8e, 0xce, 0xc2, 0xc4, 0x77, 0xcf, 0x29, 0x8b, 0xb8, 0x7b, 0x3e,
+ 0x0b, 0x03, 0xbe, 0x4c, 0x83, 0xf4, 0x96, 0xf1, 0x65, 0x1a, 0xcf, 0x93, 0x19, 0x5f, 0xa6, 0x89,
+ 0xbc, 0x98, 0xd7, 0x33, 0xa4, 0x67, 0x42, 0xde, 0x4b, 0xb1, 0x67, 0xc9, 0x74, 0x98, 0x27, 0xf5,
+ 0x2c, 0xc8, 0x37, 0x29, 0xf6, 0x2c, 0x9e, 0x84, 0xf2, 0x44, 0x55, 0x09, 0xf2, 0x48, 0x46, 0x54,
+ 0x25, 0x9e, 0x5d, 0x72, 0x2a, 0x0b, 0xe6, 0xb8, 0xdc, 0x19, 0xdb, 0x31, 0xc7, 0x25, 0xcc, 0xe0,
+ 0x78, 0xba, 0xe3, 0x42, 0x6a, 0x27, 0x1c, 0x97, 0xd3, 0x19, 0xec, 0x17, 0x68, 0xf9, 0xad, 0xff,
+ 0x0d, 0x00, 0x00, 0xff, 0xff, 0x8a, 0xb0, 0xc1, 0xa3, 0xb4, 0x69, 0x00, 0x00,
}
diff --git a/api/gobgp.proto b/api/gobgp.proto
index 5f25e59f..ae82e6df 100644
--- a/api/gobgp.proto
+++ b/api/gobgp.proto
@@ -22,72 +22,81 @@
syntax = "proto3";
import "google/protobuf/any.proto";
+import "google/protobuf/empty.proto";
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 UpdateNeighbor(UpdateNeighborRequest) returns (UpdateNeighborResponse) {}
- 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 GetPath(GetPathRequest) returns (stream Path) {}
- 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 UpdatePolicy(UpdatePolicyRequest) returns (UpdatePolicyResponse) {}
- 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) {}
- rpc AddPeerGroup(AddPeerGroupRequest) returns (AddPeerGroupResponse) {}
- rpc DeletePeerGroup(DeletePeerGroupRequest) returns (DeletePeerGroupResponse) {}
- rpc UpdatePeerGroup(UpdatePeerGroupRequest) returns (UpdatePeerGroupResponse) {}
- rpc AddDynamicNeighbor(AddDynamicNeighborRequest) returns (AddDynamicNeighborResponse) {}
- rpc AddCollector(AddCollectorRequest) returns (AddCollectorResponse) {}
- rpc Shutdown(ShutdownRequest) returns (ShutdownResponse) {}
+ rpc StartBgp(StartBgpRequest) returns (google.protobuf.Empty);
+ rpc StopBgp(StopBgpRequest) returns (google.protobuf.Empty);
+ rpc GetBgp(GetBgpRequest) returns (GetBgpResponse);
+
+ rpc AddPeer(AddPeerRequest) returns (google.protobuf.Empty);
+ rpc DeletePeer(DeletePeerRequest) returns (google.protobuf.Empty);
+ rpc ListPeer(ListPeerRequest) returns (stream ListPeerResponse);
+ rpc UpdatePeer(UpdatePeerRequest) returns (UpdatePeerResponse);
+ rpc ResetPeer(ResetPeerRequest) returns (google.protobuf.Empty);
+ rpc ShutdownPeer(ShutdownPeerRequest) returns (google.protobuf.Empty);
+ rpc EnablePeer(EnablePeerRequest) returns (google.protobuf.Empty);
+ rpc DisablePeer(DisablePeerRequest) returns (google.protobuf.Empty);
+ rpc MonitorPeer(MonitorPeerRequest) returns (stream MonitorPeerResponse);
+
+ rpc AddPeerGroup(AddPeerGroupRequest) returns (google.protobuf.Empty);
+ rpc DeletePeerGroup(DeletePeerGroupRequest) returns (google.protobuf.Empty);
+ rpc UpdatePeerGroup(UpdatePeerGroupRequest) returns (UpdatePeerGroupResponse);
+
+ rpc AddDynamicNeighbor(AddDynamicNeighborRequest) returns (google.protobuf.Empty);
+
+ rpc AddPath(AddPathRequest) returns (AddPathResponse);
+ rpc DeletePath(DeletePathRequest) returns (google.protobuf.Empty);
+ rpc ListPath(ListPathRequest) returns (stream ListPathResponse);
+ rpc AddPathStream(stream AddPathStreamRequest) returns (google.protobuf.Empty);
+
+ rpc GetTable(GetTableRequest) returns (GetTableResponse);
+ rpc MonitorTable(MonitorTableRequest) returns (stream MonitorTableResponse);
+
+ rpc AddVrf(AddVrfRequest) returns (google.protobuf.Empty);
+ rpc DeleteVrf(DeleteVrfRequest) returns (google.protobuf.Empty);
+ rpc ListVrf(ListVrfRequest) returns (stream ListVrfResponse);
+
+ rpc AddPolicy(AddPolicyRequest) returns (google.protobuf.Empty);
+ rpc DeletePolicy(DeletePolicyRequest) returns (google.protobuf.Empty);
+ rpc ListPolicy(ListPolicyRequest) returns (stream ListPolicyResponse);
+ rpc ReplacePolicy(ReplacePolicyRequest) returns (google.protobuf.Empty);
+ rpc UpdatePolicy(UpdatePolicyRequest) returns (google.protobuf.Empty);
+
+ rpc AddDefinedSet(AddDefinedSetRequest) returns (google.protobuf.Empty);
+ rpc DeleteDefinedSet(DeleteDefinedSetRequest) returns (google.protobuf.Empty);
+ rpc ListDefinedSet(ListDefinedSetRequest) returns (stream ListDefinedSetResponse);
+ rpc ReplaceDefinedSet(ReplaceDefinedSetRequest) returns (google.protobuf.Empty);
+
+ rpc AddStatement(AddStatementRequest) returns (google.protobuf.Empty);
+ rpc DeleteStatement(DeleteStatementRequest) returns (google.protobuf.Empty);
+ rpc ListStatement(ListStatementRequest) returns (stream ListStatementResponse);
+ rpc ReplaceStatement(ReplaceStatementRequest) returns (google.protobuf.Empty);
+
+ rpc AddPolicyAssignment(AddPolicyAssignmentRequest) returns (google.protobuf.Empty);
+ rpc DeletePolicyAssignment(DeletePolicyAssignmentRequest) returns (google.protobuf.Empty);
+ rpc ListPolicyAssignment(ListPolicyAssignmentRequest) returns (stream ListPolicyAssignmentResponse);
+ rpc ReplacePolicyAssignment(ReplacePolicyAssignmentRequest) returns (google.protobuf.Empty);
+
+ rpc AddRpki(AddRpkiRequest) returns (google.protobuf.Empty);
+ rpc DeleteRpki(DeleteRpkiRequest) returns (google.protobuf.Empty);
+ rpc ListRpki(ListRpkiRequest) returns (stream ListRpkiResponse);
+ rpc EnableRpki(EnableRpkiRequest) returns (google.protobuf.Empty);
+ rpc DisableRpki(DisableRpkiRequest) returns (google.protobuf.Empty);
+ rpc ResetRpki(ResetRpkiRequest) returns (google.protobuf.Empty);
+ rpc ListRpkiTable(ListRpkiTableRequest) returns (stream ListRpkiTableResponse);
+
+ rpc EnableZebra(EnableZebraRequest) returns (google.protobuf.Empty);
+
+ rpc EnableMrt(EnableMrtRequest) returns (google.protobuf.Empty);
+ rpc DisableMrt(DisableMrtRequest) returns (google.protobuf.Empty);
+
+ rpc AddBmp(AddBmpRequest) returns (google.protobuf.Empty);
+ rpc DeleteBmp(DeleteBmpRequest) returns (google.protobuf.Empty);
}
// Constants for address families
@@ -116,64 +125,45 @@ enum Family {
OPAQUE = 1074594033;
}
-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;
- bool current = 4;
-}
-
-message AddPathRequest {
- Resource resource = 1;
- string vrf_id = 2;
- Path path = 3;
+message StartBgpRequest {
+ Global global = 1;
}
-message AddPathResponse {
- bytes uuid = 1;
+message StopBgpRequest {
}
-message DeletePathRequest {
- Resource resource = 1;
- string vrf_id = 2;
- uint32 family = 3;
- Path path = 4;
- bytes uuid = 5;
+message GetBgpRequest {
}
-message DeletePathResponse {
+message GetBgpResponse {
+ Global global = 1;
}
-message AddNeighborRequest {
+message AddPeerRequest {
Peer peer = 1;
}
-message AddNeighborResponse {
+message DeletePeerRequest {
+ string address = 1;
+ string interface = 2;
}
-message DeleteNeighborRequest {
- Peer peer = 1;
+message ListPeerRequest {
+ string address = 1;
+ bool enableAdvertised = 2;
}
-message DeleteNeighborResponse {
+message ListPeerResponse {
+ Peer peer = 1;
}
-message UpdateNeighborRequest {
+message UpdatePeerRequest {
Peer peer = 1;
- // Calls SoftResetIn after updating the neighbor configuration if needed.
+ // Calls SoftResetIn after updating the peer configuration if needed.
bool do_soft_reset_in = 2;
}
-message UpdateNeighborResponse {
+message UpdatePeerResponse {
// Indicates whether calling SoftResetIn is required due to this update. If
// "true" is set, the client should call SoftResetIn manually. If
// "do_soft_reset_in = true" is set in the request, always returned with
@@ -181,405 +171,316 @@ message UpdateNeighborResponse {
bool needs_soft_reset_in = 1;
}
-message AddPeerGroupRequest {
- PeerGroup peer_group = 1;
-}
-
-message AddPeerGroupResponse {
-}
-
-message DeletePeerGroupRequest {
- PeerGroup peer_group = 1;
-}
-
-message DeletePeerGroupResponse {
-}
-
-message UpdatePeerGroupRequest {
- PeerGroup peer_group = 1;
- bool do_soft_reset_in = 2;
-}
-
-message UpdatePeerGroupResponse {
- bool needs_soft_reset_in = 1;
-}
-
-message AddDynamicNeighborRequest {
- DynamicNeighbor dynamic_neighbor = 1;
-}
-
-message AddDynamicNeighborResponse {
-}
-
-message ResetNeighborRequest {
+message ResetPeerRequest {
string address = 1;
string communication = 2;
-}
-
-message ResetNeighborResponse {
-}
-
-message SoftResetNeighborRequest {
- string address = 1;
+ bool soft = 3;
enum SoftResetDirection {
IN = 0;
OUT = 1;
BOTH = 2;
}
- SoftResetDirection direction = 2;
-}
-
-message SoftResetNeighborResponse {
+ SoftResetDirection direction = 4;
}
-message ShutdownNeighborRequest {
+message ShutdownPeerRequest {
string address = 1;
string communication = 2;
}
-message ShutdownNeighborResponse {
-}
-
-message EnableNeighborRequest {
+message EnablePeerRequest {
string address = 1;
}
-message EnableNeighborResponse {
-}
-
-message DisableNeighborRequest {
+message DisablePeerRequest {
string address = 1;
string communication = 2;
}
-message DisableNeighborResponse {
+message MonitorPeerRequest {
+ string address = 1;
+ bool current = 2;
}
-message UpdatePolicyRequest {
- repeated DefinedSet sets = 1;
- repeated Policy policies = 2;
+message MonitorPeerResponse {
+ Peer peer = 1;
}
-message UpdatePolicyResponse {
+message AddPeerGroupRequest {
+ PeerGroup peer_group = 1;
}
-message EnableMrtRequest {
- int32 dump_type = 1;
- string filename = 2;
- uint64 interval = 3;
+message DeletePeerGroupRequest {
+ string name = 1;
}
-message EnableMrtResponse {
+message UpdatePeerGroupRequest {
+ PeerGroup peer_group = 1;
+ bool do_soft_reset_in = 2;
}
-message DisableMrtRequest {
+message UpdatePeerGroupResponse {
+ bool needs_soft_reset_in = 1;
}
-message DisableMrtResponse {
+message AddDynamicNeighborRequest {
+ DynamicNeighbor dynamic_neighbor = 1;
}
-message InjectMrtRequest {
+message AddPathRequest {
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;
- LOCAL = 3;
- ALL = 4;
- }
- 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;
+ Path path = 3;
}
-message DeleteRpkiResponse {
+message AddPathResponse {
+ bytes uuid = 1;
}
-message EnableRpkiRequest {
- string address = 1;
+message DeletePathRequest {
+ Resource resource = 1;
+ string vrf_id = 2;
+ uint32 family = 3;
+ Path path = 4;
+ bytes uuid = 5;
}
-message EnableRpkiResponse {
+message ListPathRequest {
+ Resource type = 1;
+ string name = 2;
+ uint32 family = 3;
+ repeated TableLookupPrefix prefixes = 4;
}
-message DisableRpkiRequest {
- string address = 1;
+message ListPathResponse {
+ Destination destination = 1;
}
-message DisableRpkiResponse {
+message AddPathStreamRequest {
+ Resource resource = 1;
+ string vrf_id = 2;
+ repeated Path paths = 3;
}
-message ResetRpkiRequest {
- string address = 1;
+message GetTableRequest {
+ Resource type = 1;
+ uint32 family = 2;
+ string name = 3;
}
-message ResetRpkiResponse {
+message GetTableResponse {
+ uint64 num_destination = 4;
+ uint64 num_path = 5;
+ uint64 num_accepted = 6; // only meaningful when type == ADJ_IN
}
-message SoftResetRpkiRequest {
- string address = 1;
+message MonitorTableRequest {
+ Resource type = 1;
+ string name = 2;
+ uint32 family = 3;
+ bool current = 4;
+ bool post_policy = 5;
}
-message SoftResetRpkiResponse {
+message MonitorTableResponse {
+ Path path = 1;
}
-message EnableZebraRequest {
- string url = 1;
- repeated string route_types = 2;
- uint32 version = 3;
- bool nexthop_trigger_enable = 4;
- uint32 nexthop_trigger_delay = 5;
+message AddVrfRequest {
+ Vrf vrf = 1;
}
-message EnableZebraResponse {
+message DeleteVrfRequest {
+ string name = 1;
}
-message GetVrfRequest {
+message ListVrfRequest {
+ string name = 1;
}
-message GetVrfResponse {
- repeated Vrf vrfs = 1;
+message ListVrfResponse {
+ Vrf vrf = 1;
}
-message AddVrfRequest {
- Vrf vrf = 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 AddVrfResponse {
+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 DeleteVrfRequest {
- Vrf vrf = 1;
+message ListPolicyRequest {
+ string name = 1;
}
-message DeleteVrfResponse {
+message ListPolicyResponse {
+ Policy policy = 1;
}
-message GetDefinedSetRequest {
- DefinedType type = 1;
- string name = 2;
+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 GetDefinedSetResponse {
+message UpdatePolicyRequest {
repeated DefinedSet sets = 1;
+ repeated Policy policies = 2;
}
message AddDefinedSetRequest {
DefinedSet set = 1;
}
-message AddDefinedSetResponse {
-}
-
message DeleteDefinedSetRequest {
DefinedSet set = 1;
bool all = 2;
}
-message DeleteDefinedSetResponse {
+message ListDefinedSetRequest {
+ DefinedType type = 1;
+ string name = 2;
}
-message ReplaceDefinedSetRequest {
+message ListDefinedSetResponse {
DefinedSet set = 1;
}
-message ReplaceDefinedSetResponse {
-}
-
-message GetStatementRequest {
-}
-
-message GetStatementResponse {
- repeated Statement statements = 1;
+message ReplaceDefinedSetRequest {
+ DefinedSet set = 1;
}
message AddStatementRequest {
Statement statement = 1;
}
-message AddStatementResponse {
-}
-
message DeleteStatementRequest {
Statement statement = 1;
bool all = 2;
}
-message DeleteStatementResponse {
+message ListStatementRequest {
+ string name = 1;
}
-message ReplaceStatementRequest {
+message ListStatementResponse {
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 ReplaceStatementRequest {
+ Statement statement = 1;
}
-message AddPolicyResponse {
+message AddPolicyAssignmentRequest {
+ PolicyAssignment assignment = 1;
}
-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 DeletePolicyAssignmentRequest {
+ PolicyAssignment assignment = 1;
+ bool all = 2;
}
-message DeletePolicyResponse {
+message ListPolicyAssignmentRequest {
+ string name = 1;
+ PolicyDirection direction = 2;
}
-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 ListPolicyAssignmentResponse {
+ PolicyAssignment assignment = 1;
}
-message ReplacePolicyResponse {
+message ReplacePolicyAssignmentRequest {
+ PolicyAssignment assignment = 1;
}
-message GetPolicyAssignmentRequest {
- PolicyAssignment assignment = 1;
+message AddRpkiRequest {
+ string address = 1;
+ uint32 port = 2;
+ int64 lifetime = 3;
}
-message GetPolicyAssignmentResponse {
- PolicyAssignment assignment = 1;
+message DeleteRpkiRequest {
+ string address = 1;
+ uint32 port = 2;
}
-message AddPolicyAssignmentRequest {
- PolicyAssignment assignment = 1;
+message ListRpkiRequest {
+ uint32 family = 1;
}
-message AddPolicyAssignmentResponse {
+message ListRpkiResponse {
+ Rpki server = 1;
}
-message DeletePolicyAssignmentRequest {
- PolicyAssignment assignment = 1;
- bool all = 2;
+message EnableRpkiRequest {
+ string address = 1;
+ uint32 port = 2;
}
-message DeletePolicyAssignmentResponse {
+message DisableRpkiRequest {
+ string address = 1;
+ uint32 port = 2;
}
-message ReplacePolicyAssignmentRequest {
- PolicyAssignment assignment = 1;
+message ResetRpkiRequest {
+ string address = 1;
+ uint32 port = 2;
+ bool soft = 3;
}
-message ReplacePolicyAssignmentResponse {
+message ListRpkiTableRequest {
+ uint32 family = 1;
}
-message GetServerRequest {
+message ListRpkiTableResponse {
+ Roa roa = 1;
}
-message GetServerResponse {
- Global global = 1;
+message EnableZebraRequest {
+ string url = 1;
+ repeated string route_types = 2;
+ uint32 version = 3;
+ bool nexthop_trigger_enable = 4;
+ uint32 nexthop_trigger_delay = 5;
}
-message StartServerRequest {
- Global global = 1;
+message EnableMrtRequest {
+ int32 dump_type = 1;
+ string filename = 2;
+ uint64 interval = 3;
}
-message StartServerResponse {
+message DisableMrtRequest {
}
-message StopServerRequest {
+message AddBmpRequest {
+ string address = 1;
+ uint32 port = 2;
+ enum MonitoringPolicy {
+ PRE = 0;
+ POST = 1;
+ BOTH = 2;
+ LOCAL = 3;
+ ALL = 4;
+ }
+ MonitoringPolicy type = 3;
}
-message StopServerResponse {
+message DeleteBmpRequest {
+ string address = 1;
+ uint32 port = 2;
}
enum Resource {
@@ -654,24 +555,6 @@ message Path {
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;
}
// API representation of table.LookupOption
@@ -687,22 +570,6 @@ message TableLookupPrefix {
TableLookupOption lookup_option = 2;
}
-message GetPathRequest {
- Resource type = 1;
- string name = 2;
- uint32 family = 3;
- repeated TableLookupPrefix prefixes = 4;
-}
-
-message ValidateRibRequest {
- Resource type = 1;
- uint32 family = 2;
- string prefix = 3;
-}
-
-message ValidateRibResponse {
-}
-
message Peer {
// Note: Regarding to the consistency with OpenConfig model, a list of
// address family should be removed from here, and should be configured with
@@ -712,7 +579,7 @@ message Peer {
PeerConf conf = 3;
EbgpMultihop ebgp_multihop = 4;
RouteReflector route_reflector = 5;
- PeerState info = 6;
+ PeerState state= 6;
Timers timers = 7;
Transport transport = 8;
RouteServer route_server = 9;
@@ -847,20 +714,28 @@ message PeerState {
uint32 remove_private_as = 10;
bool route_flap_damping = 11;
uint32 send_community = 12;
- uint32 session_state = 13;
+ enum SessionState {
+ UNKNOWN = 0;
+ IDLE = 1;
+ CONNECT = 2;
+ ACTIVE = 3;
+ OPENSENT = 4;
+ OPENCONFIRM = 5;
+ ESTABLISHED = 6;
+ }
+ SessionState 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;
+ AdminState admin_state = 15;
+ uint32 received = 16;
+ uint32 accepted = 17;
+ uint32 advertised = 18;
+ uint32 out_q = 19;
+ uint32 flops = 20;
}
message Messages {
@@ -869,13 +744,13 @@ message Messages {
}
message Message {
- uint64 NOTIFICATION = 1;
- uint64 UPDATE = 2;
- uint64 OPEN = 3;
- uint64 KEEPALIVE = 4;
- uint64 REFRESH = 5;
- uint64 DISCARDED = 6;
- uint64 TOTAL = 7;
+ uint64 notification = 1;
+ uint64 update = 2;
+ uint64 open = 3;
+ uint64 keepalive = 4;
+ uint64 refresh = 5;
+ uint64 discarded = 6;
+ uint64 total = 7;
}
message Queues {
@@ -1229,14 +1104,14 @@ message Policy {
repeated Statement statements = 2;
}
-enum PolicyType {
- IN = 0;
+enum PolicyDirection {
+ UNKNOWN = 0;
IMPORT = 1;
EXPORT = 2;
}
message PolicyAssignment {
- PolicyType type = 1;
+ PolicyDirection type = 1;
Resource resource = 2;
string name = 3;
repeated Policy policies = 4;
@@ -1256,14 +1131,6 @@ message Roa {
RPKIConf conf = 5;
}
-message GetRoaRequest {
- uint32 family = 1;
-}
-
-message GetRoaResponse {
- repeated Roa roas = 1;
-}
-
message Vrf {
string name = 1;
// Route Distinguisher must be one of
@@ -1309,34 +1176,32 @@ message Confederation {
repeated uint32 member_as_list = 3;
}
-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;
-}
-
-message AddCollectorRequest {
- string url = 1;
- string db_name = 2;
- uint64 table_dump_interval = 3;
+message RPKIConf {
+ string address = 1;
+ uint32 remote_port = 2;
}
-message AddCollectorResponse {
+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 ShutdownRequest{
+message Rpki {
+ RPKIConf conf = 1;
+ RPKIState state = 2;
}
-
-message ShutdownResponse{
-} \ No newline at end of file
diff --git a/cmd/gobgp/cmd/bmp.go b/cmd/gobgp/cmd/bmp.go
index 6de8eac4..c176d770 100644
--- a/cmd/gobgp/cmd/bmp.go
+++ b/cmd/gobgp/cmd/bmp.go
@@ -20,7 +20,7 @@ import (
"net"
"strconv"
- "github.com/osrg/gobgp/internal/pkg/config"
+ api "github.com/osrg/gobgp/api"
"github.com/osrg/gobgp/pkg/packet/bmp"
"github.com/spf13/cobra"
)
@@ -49,29 +49,28 @@ func modBmpServer(cmdType string, args []string) error {
var err error
switch cmdType {
case CMD_ADD:
- policyType := config.BMP_ROUTE_MONITORING_POLICY_TYPE_PRE_POLICY
+ policyType := api.AddBmpRequest_PRE
if len(args) > 1 {
switch args[1] {
- case "pre":
case "post":
- policyType = config.BMP_ROUTE_MONITORING_POLICY_TYPE_POST_POLICY
+ policyType = api.AddBmpRequest_POST
case "both":
- policyType = config.BMP_ROUTE_MONITORING_POLICY_TYPE_BOTH
+ policyType = api.AddBmpRequest_BOTH
case "local-rib":
- policyType = config.BMP_ROUTE_MONITORING_POLICY_TYPE_LOCAL_RIB
+ policyType = api.AddBmpRequest_LOCAL
case "all":
- policyType = config.BMP_ROUTE_MONITORING_POLICY_TYPE_ALL
+ policyType = api.AddBmpRequest_ALL
default:
return fmt.Errorf("invalid bmp policy type. valid type is {pre|post|both|local-rib|all}")
}
}
- err = client.AddBMP(&config.BmpServerConfig{
+ _, err = client.AddBmp(ctx, &api.AddBmpRequest{
Address: address,
Port: port,
- RouteMonitoringPolicy: policyType,
+ Type: policyType,
})
case CMD_DEL:
- err = client.DeleteBMP(&config.BmpServerConfig{
+ _, err = client.DeleteBmp(ctx, &api.DeleteBmpRequest{
Address: address,
Port: port,
})
@@ -80,7 +79,6 @@ func modBmpServer(cmdType string, args []string) error {
}
func NewBmpCmd() *cobra.Command {
-
bmpCmd := &cobra.Command{
Use: CMD_BMP,
}
diff --git a/cmd/gobgp/cmd/common.go b/cmd/gobgp/cmd/common.go
index fbd75767..a1104836 100644
--- a/cmd/gobgp/cmd/common.go
+++ b/cmd/gobgp/cmd/common.go
@@ -17,21 +17,18 @@ package cmd
import (
"bytes"
+ "context"
"encoding/json"
"fmt"
"net"
"os"
- "sort"
"strconv"
- "strings"
"time"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
api "github.com/osrg/gobgp/api"
- cli "github.com/osrg/gobgp/internal/pkg/client"
- "github.com/osrg/gobgp/internal/pkg/config"
"github.com/osrg/gobgp/pkg/packet/bgp"
)
@@ -183,63 +180,8 @@ func extractReserved(args []string, keys map[string]int) (map[string][]string, e
return m, nil
}
-type neighbors []*config.Neighbor
-
-func (n neighbors) Len() int {
- return len(n)
-}
-
-func (n neighbors) Swap(i, j int) {
- n[i], n[j] = n[j], n[i]
-}
-
-func (n neighbors) Less(i, j int) bool {
- p1 := n[i].State.NeighborAddress
- p2 := n[j].State.NeighborAddress
- p1Isv4 := !strings.Contains(p1, ":")
- p2Isv4 := !strings.Contains(p2, ":")
- if p1Isv4 != p2Isv4 {
- return p1Isv4
- }
- addrlen := 128
- if p1Isv4 {
- addrlen = 32
- }
- strings := sort.StringSlice{cidr2prefix(fmt.Sprintf("%s/%d", p1, addrlen)),
- cidr2prefix(fmt.Sprintf("%s/%d", p2, addrlen))}
- return strings.Less(0, 1)
-}
-
-type capabilities []bgp.ParameterCapabilityInterface
-
-func (c capabilities) Len() int {
- return len(c)
-}
-
-func (c capabilities) Swap(i, j int) {
- c[i], c[j] = c[j], c[i]
-}
-
-func (c capabilities) Less(i, j int) bool {
- return c[i].Code() < c[j].Code()
-}
-
-type vrfs []*api.Vrf
-
-func (v vrfs) Len() int {
- return len(v)
-}
-
-func (v vrfs) Swap(i, j int) {
- v[i], v[j] = v[j], v[i]
-}
-
-func (v vrfs) Less(i, j int) bool {
- return v[i].Name < v[j].Name
-}
-
-func newClient() *cli.Client {
- var grpcOpts []grpc.DialOption
+func newClient(ctx context.Context) (api.GobgpApiClient, error) {
+ grpcOpts := []grpc.DialOption{grpc.WithTimeout(time.Second), grpc.WithBlock()}
if globalOpts.TLS {
var creds credentials.TransportCredentials
if globalOpts.CaFile == "" {
@@ -251,18 +193,21 @@ func newClient() *cli.Client {
exitWithError(err)
}
}
- grpcOpts = []grpc.DialOption{
- grpc.WithTimeout(time.Second),
- grpc.WithBlock(),
- grpc.WithTransportCredentials(creds),
- }
+ grpcOpts = append(grpcOpts, grpc.WithTransportCredentials(creds))
+ } else {
+ grpcOpts = append(grpcOpts, grpc.WithInsecure())
}
+
target := net.JoinHostPort(globalOpts.Host, strconv.Itoa(globalOpts.Port))
- client, err := cli.New(target, grpcOpts...)
+ if target == "" {
+ target = ":50051"
+ }
+
+ conn, err := grpc.DialContext(ctx, target, grpcOpts...)
if err != nil {
- exitWithError(fmt.Errorf("failed to connect to %s over gRPC: %s", target, err))
+ return nil, err
}
- return client
+ return api.NewGobgpApiClient(conn), nil
}
func addr2AddressFamily(a net.IP) bgp.RouteFamily {
diff --git a/cmd/gobgp/cmd/global.go b/cmd/gobgp/cmd/global.go
index b71deba9..92f5dfc0 100644
--- a/cmd/gobgp/cmd/global.go
+++ b/cmd/gobgp/cmd/global.go
@@ -29,7 +29,6 @@ import (
api "github.com/osrg/gobgp/api"
"github.com/osrg/gobgp/internal/pkg/apiutil"
- "github.com/osrg/gobgp/internal/pkg/config"
"github.com/osrg/gobgp/internal/pkg/table"
"github.com/osrg/gobgp/pkg/packet/bgp"
@@ -1447,38 +1446,44 @@ usage: %s rib %s key <KEY> [value <VALUE>]`,
return err
}
+ r := api.Resource_GLOBAL
+ if resource == CMD_VRF {
+ r = api.Resource_VRF
+ }
+
if modtype == CMD_ADD {
- if resource == CMD_VRF {
- _, err = client.AddVRFPath(name, []*api.Path{path})
- } else {
- _, err = client.AddPath([]*api.Path{path})
- }
+ _, err = client.AddPath(ctx, &api.AddPathRequest{
+ Resource: r,
+ VrfId: name,
+ Path: path,
+ })
} else {
- if resource == CMD_VRF {
- err = client.DeleteVRFPath(name, []*api.Path{path})
- } else {
- err = client.DeletePath([]*api.Path{path})
- }
+ _, err = client.DeletePath(ctx, &api.DeletePathRequest{
+ Resource: r,
+ VrfId: name,
+ Path: path,
+ })
}
return err
}
func showGlobalConfig() error {
- g, err := client.GetServer()
+ r, err := client.GetBgp(ctx, &api.GetBgpRequest{})
if err != nil {
return err
}
if globalOpts.Json {
- j, _ := json.Marshal(g)
+ j, _ := json.Marshal(r.Global)
fmt.Println(string(j))
return nil
}
- fmt.Println("AS: ", g.Config.As)
- fmt.Println("Router-ID:", g.Config.RouterId)
- if len(g.Config.LocalAddressList) > 0 {
- fmt.Printf("Listening Port: %d, Addresses: %s\n", g.Config.Port, strings.Join(g.Config.LocalAddressList, ", "))
+ g := r.Global
+ fmt.Println("AS: ", g.As)
+ fmt.Println("Router-ID:", g.RouterId)
+ if len(g.ListenAddresses) > 0 {
+ fmt.Printf("Listening Port: %d, Addresses: %s\n", g.ListenPort, strings.Join(g.ListenAddresses, ", "))
}
- if g.UseMultiplePaths.Config.Enabled {
+ if g.UseMultiplePaths {
fmt.Printf("Multipath: enabled")
}
return nil
@@ -1515,19 +1520,16 @@ func modGlobalConfig(args []string) error {
if _, ok := m["use-multipath"]; ok {
useMultipath = true
}
- return client.StartServer(&config.Global{
- Config: config.GlobalConfig{
+ _, err = client.StartBgp(ctx, &api.StartBgpRequest{
+ Global: &api.Global{
As: uint32(asn),
RouterId: id.String(),
- Port: int32(port),
- LocalAddressList: m["listen-addresses"],
- },
- UseMultiplePaths: config.UseMultiplePaths{
- Config: config.UseMultiplePathsConfig{
- Enabled: useMultipath,
- },
+ ListenPort: int32(port),
+ ListenAddresses: m["listen-addresses"],
+ UseMultiplePaths: useMultipath,
},
})
+ return err
}
func NewGlobalCmd() *cobra.Command {
@@ -1577,7 +1579,10 @@ func NewGlobalCmd() *cobra.Command {
if err != nil {
exitWithError(err)
}
- if err = client.DeletePathByFamily(family); err != nil {
+ if _, err = client.DeletePath(ctx, &api.DeletePathRequest{
+ Resource: api.Resource_GLOBAL,
+ Family: uint32(family),
+ }); err != nil {
exitWithError(err)
}
},
@@ -1643,7 +1648,7 @@ func NewGlobalCmd() *cobra.Command {
allCmd := &cobra.Command{
Use: CMD_ALL,
Run: func(cmd *cobra.Command, args []string) {
- if err := client.StopServer(); err != nil {
+ if _, err := client.StopBgp(ctx, &api.StopBgpRequest{}); err != nil {
exitWithError(err)
}
},
diff --git a/cmd/gobgp/cmd/monitor.go b/cmd/gobgp/cmd/monitor.go
index 9055ecf5..e1c18e9b 100644
--- a/cmd/gobgp/cmd/monitor.go
+++ b/cmd/gobgp/cmd/monitor.go
@@ -93,20 +93,20 @@ func NewMonitorCmd() *cobra.Command {
var current bool
monitor := func(recver interface {
- Recv() (*api.Destination, error)
+ Recv() (*api.MonitorTableResponse, error)
}, showIdentifier bgp.BGPAddPathMode) {
for {
- dst, err := recver.Recv()
+ r, err := recver.Recv()
if err == io.EOF {
break
} else if err != nil {
exitWithError(err)
}
if globalOpts.Json {
- j, _ := json.Marshal(apiutil.NewDestination(dst))
+ j, _ := json.Marshal(apiutil.NewDestination(&api.Destination{Paths: []*api.Path{r.Path}}))
fmt.Println(string(j))
} else {
- monitorRoute(dst.Paths, showIdentifier)
+ monitorRoute([]*api.Path{r.Path}, bgp.BGP_ADD_PATH_NONE)
}
}
}
@@ -118,7 +118,11 @@ func NewMonitorCmd() *cobra.Command {
if err != nil {
exitWithError(err)
}
- recver, err := client.MonitorRIB(family, current)
+ recver, err := client.MonitorTable(ctx, &api.MonitorTableRequest{
+ Type: api.Resource_GLOBAL,
+ Family: uint32(family),
+ Current: current,
+ })
if err != nil {
exitWithError(err)
}
@@ -140,24 +144,28 @@ func NewMonitorCmd() *cobra.Command {
if len(args) > 0 {
name = args[0]
}
- stream, err := client.MonitorNeighborState(name, current)
+ stream, err := client.MonitorPeer(ctx, &api.MonitorPeerRequest{
+ Address: name,
+ Current: current,
+ })
if err != nil {
exitWithError(err)
}
for {
- s, err := stream.Recv()
+ r, err := stream.Recv()
if err == io.EOF {
break
} else if err != nil {
exitWithError(err)
}
+ s := r.Peer
if globalOpts.Json {
j, _ := json.Marshal(s)
fmt.Println(string(j))
} else {
- addr := s.State.NeighborAddress
- if s.Config.NeighborInterface != "" {
- addr = fmt.Sprintf("%s(%s)", addr, s.Config.NeighborInterface)
+ addr := s.Conf.NeighborAddress
+ if s.Conf.NeighborInterface != "" {
+ addr = fmt.Sprintf("%s(%s)", addr, s.Conf.NeighborInterface)
}
fmt.Printf("[NEIGH] %s fsm: %s admin: %s\n", addr, s.State.SessionState, s.State.AdminState)
}
@@ -180,7 +188,12 @@ func NewMonitorCmd() *cobra.Command {
if err != nil {
exitWithError(err)
}
- recver, err := client.MonitorAdjRIBIn(name, family, current)
+ recver, err := client.MonitorTable(ctx, &api.MonitorTableRequest{
+ Type: api.Resource_ADJ_IN,
+ Name: name,
+ Family: uint32(family),
+ Current: current,
+ })
if err != nil {
exitWithError(err)
}
diff --git a/cmd/gobgp/cmd/mrt.go b/cmd/gobgp/cmd/mrt.go
index 58b4381d..8fd40791 100644
--- a/cmd/gobgp/cmd/mrt.go
+++ b/cmd/gobgp/cmd/mrt.go
@@ -171,21 +171,20 @@ func injectMrt() error {
close(ch)
}()
- stream, err := client.AddPathByStream()
+ stream, err := client.AddPathStream(ctx)
if err != nil {
return fmt.Errorf("failed to add path: %s", err)
}
for paths := range ch {
- err = stream.Send(paths...)
+ err = stream.Send(&api.AddPathStreamRequest{
+ Resource: api.Resource_GLOBAL,
+ Paths: paths,
+ })
if err != nil {
return fmt.Errorf("failed to send: %s", err)
}
}
-
- if err := stream.Close(); err != nil {
- return fmt.Errorf("failed to send: %s", err)
- }
return nil
}
diff --git a/cmd/gobgp/cmd/neighbor.go b/cmd/gobgp/cmd/neighbor.go
index 9b1e96ee..73670196 100644
--- a/cmd/gobgp/cmd/neighbor.go
+++ b/cmd/gobgp/cmd/neighbor.go
@@ -19,6 +19,7 @@ import (
"bytes"
"encoding/json"
"fmt"
+ "io"
"net"
"sort"
"strconv"
@@ -56,27 +57,36 @@ func updateColumnWidth(nlri, nexthop, aspath, label string) {
}
}
-func getNeighbors(vrf string) (neighbors, error) {
+func getNeighbors(vrf string) ([]*api.Peer, error) {
+ adv := true
if vrf != "" {
- n, err := client.ListNeighborByVRF(vrf)
- return neighbors(n), err
+ adv = false
} else if t := neighborsOpts.Transport; t != "" {
switch t {
- case "ipv4":
- n, err := client.ListNeighborByTransport(bgp.AFI_IP)
- return neighbors(n), err
- case "ipv6":
- n, err := client.ListNeighborByTransport(bgp.AFI_IP6)
- return neighbors(n), err
+ case "ipv4", "ipv6":
+ adv = false
default:
return nil, fmt.Errorf("invalid transport: %s", t)
}
}
- n, err := client.ListNeighbor()
- return neighbors(n), err
+ stream, err := client.ListPeer(ctx, &api.ListPeerRequest{
+ EnableAdvertised: adv,
+ })
+
+ l := make([]*api.Peer, 0, 1024)
+ for {
+ r, err := stream.Recv()
+ if err == io.EOF {
+ break
+ } else if err != nil {
+ return nil, err
+ }
+ l = append(l, r.Peer)
+ }
+ return l, err
}
-func getASN(p *config.Neighbor) string {
+func getASN(p *api.Peer) string {
asn := "*"
if p.State.PeerAs > 0 {
asn = fmt.Sprint(p.State.PeerAs)
@@ -106,11 +116,26 @@ func showNeighbors(vrf string) error {
maxtimelen := len("Up/Down")
timedelta := []string{}
- sort.Sort(m)
+ sort.Slice(m, func(i, j int) bool {
+ p1 := m[i].Conf.NeighborAddress
+ p2 := m[j].Conf.NeighborAddress
+ p1Isv4 := !strings.Contains(p1, ":")
+ p2Isv4 := !strings.Contains(p2, ":")
+ if p1Isv4 != p2Isv4 {
+ return p1Isv4
+ }
+ addrlen := 128
+ if p1Isv4 {
+ addrlen = 32
+ }
+ strings := sort.StringSlice{cidr2prefix(fmt.Sprintf("%s/%d", p1, addrlen)),
+ cidr2prefix(fmt.Sprintf("%s/%d", p2, addrlen))}
+ return strings.Less(0, 1)
+ })
now := time.Now()
for _, n := range m {
- if i := len(n.Config.NeighborInterface); i > maxaddrlen {
+ if i := len(n.Conf.NeighborInterface); i > maxaddrlen {
maxaddrlen = i
} else if j := len(n.State.NeighborAddress); j > maxaddrlen {
maxaddrlen = j
@@ -121,7 +146,7 @@ func showNeighbors(vrf string) error {
timeStr := "never"
if n.Timers.State.Uptime != 0 {
t := int64(n.Timers.State.Downtime)
- if n.State.SessionState == config.SESSION_STATE_ESTABLISHED {
+ if n.State.SessionState == api.PeerState_ESTABLISHED {
t = int64(n.Timers.State.Uptime)
}
timeStr = formatTimedelta(int64(now.Sub(time.Unix(int64(t), 0)).Seconds()))
@@ -135,26 +160,26 @@ func showNeighbors(vrf string) error {
format := "%-" + fmt.Sprint(maxaddrlen) + "s" + " %" + fmt.Sprint(maxaslen) + "s" + " %" + fmt.Sprint(maxtimelen) + "s"
format += " %-11s |%9s %9s\n"
fmt.Printf(format, "Peer", "AS", "Up/Down", "State", "#Received", "Accepted")
- formatFsm := func(admin config.AdminState, fsm config.SessionState) string {
+ formatFsm := func(admin api.PeerState_AdminState, fsm api.PeerState_SessionState) string {
switch admin {
- case config.ADMIN_STATE_DOWN:
+ case api.PeerState_UP:
return "Idle(Admin)"
- case config.ADMIN_STATE_PFX_CT:
+ case api.PeerState_PFX_CT:
return "Idle(PfxCt)"
}
switch fsm {
- case config.SESSION_STATE_IDLE:
+ case api.PeerState_UNKNOWN:
return "Idle"
- case config.SESSION_STATE_CONNECT:
+ case api.PeerState_IDLE:
return "Connect"
- case config.SESSION_STATE_ACTIVE:
+ case api.PeerState_ACTIVE:
return "Active"
- case config.SESSION_STATE_OPENSENT:
+ case api.PeerState_OPENSENT:
return "Sent"
- case config.SESSION_STATE_OPENCONFIRM:
+ case api.PeerState_OPENCONFIRM:
return "Confirm"
- case config.SESSION_STATE_ESTABLISHED:
+ case api.PeerState_ESTABLISHED:
return "Establ"
default:
return string(fsm)
@@ -163,20 +188,29 @@ func showNeighbors(vrf string) error {
for i, n := range m {
neigh := n.State.NeighborAddress
- if n.Config.NeighborInterface != "" {
- neigh = n.Config.NeighborInterface
+ if n.Conf.NeighborInterface != "" {
+ neigh = n.Conf.NeighborInterface
}
- fmt.Printf(format, neigh, getASN(n), timedelta[i], formatFsm(n.State.AdminState, n.State.SessionState), fmt.Sprint(n.State.AdjTable.Received), fmt.Sprint(n.State.AdjTable.Accepted))
+ fmt.Printf(format, neigh, getASN(n), timedelta[i], formatFsm(n.State.AdminState, n.State.SessionState), fmt.Sprint(n.State.Received), fmt.Sprint(n.State.Accepted))
}
return nil
}
func showNeighbor(args []string) error {
- p, e := client.GetNeighbor(args[0], true)
- if e != nil {
- return e
+ stream, err := client.ListPeer(ctx, &api.ListPeerRequest{
+ Address: args[0],
+ EnableAdvertised: true,
+ })
+ if err != nil {
+ return err
+ }
+ r, err := stream.Recv()
+ if err != nil && err != io.EOF {
+ return err
}
+ p := r.Peer
+
if globalOpts.Json {
j, _ := json.Marshal(p)
fmt.Println(string(j))
@@ -185,17 +219,17 @@ func showNeighbor(args []string) error {
fmt.Printf("BGP neighbor is %s, remote AS %s", p.State.NeighborAddress, getASN(p))
- if p.RouteReflector.Config.RouteReflectorClient {
+ if p.RouteReflector.RouteReflectorClient {
fmt.Printf(", route-reflector-client\n")
- } else if p.RouteServer.Config.RouteServerClient {
+ } else if p.RouteServer.RouteServerClient {
fmt.Printf(", route-server-client\n")
} else {
fmt.Printf("\n")
}
id := "unknown"
- if p.State.RemoteRouterId != "" {
- id = p.State.RemoteRouterId
+ if p.Conf.Id != "" {
+ id = p.Conf.Id
}
fmt.Printf(" BGP version 4, remote router ID %s\n", id)
fmt.Printf(" BGP state = %s", p.State.SessionState)
@@ -209,24 +243,24 @@ func showNeighbor(args []string) error {
fmt.Printf(" Configured hold time is %d, keepalive interval is %d seconds\n", int(p.Timers.Config.HoldTime), int(p.Timers.Config.KeepaliveInterval))
elems := make([]string, 0, 3)
- if as := p.AsPathOptions.Config.AllowOwnAs; as > 0 {
+ if as := p.Conf.AllowOwnAs; as > 0 {
elems = append(elems, fmt.Sprintf("Allow Own AS: %d", as))
}
- switch p.Config.RemovePrivateAs {
- case config.REMOVE_PRIVATE_AS_OPTION_ALL:
+ switch p.Conf.RemovePrivateAs {
+ case api.PeerConf_ALL:
elems = append(elems, "Remove private AS: all")
- case config.REMOVE_PRIVATE_AS_OPTION_REPLACE:
+ case api.PeerConf_REPLACE:
elems = append(elems, "Remove private AS: replace")
}
- if p.AsPathOptions.Config.ReplacePeerAs {
+ if p.Conf.ReplacePeerAs {
elems = append(elems, "Replace peer AS: enabled")
}
fmt.Printf(" %s\n", strings.Join(elems, ", "))
fmt.Printf(" Neighbor capabilities:\n")
- caps := capabilities{}
- lookup := func(val bgp.ParameterCapabilityInterface, l capabilities) bgp.ParameterCapabilityInterface {
+ caps := []bgp.ParameterCapabilityInterface{}
+ lookup := func(val bgp.ParameterCapabilityInterface, l []bgp.ParameterCapabilityInterface) bgp.ParameterCapabilityInterface {
for _, v := range l {
if v.Code() == val.Code() {
if v.Code() == bgp.BGP_CAP_MULTIPROTOCOL {
@@ -242,25 +276,28 @@ func showNeighbor(args []string) error {
}
return nil
}
- for _, c := range p.State.LocalCapabilityList {
- caps = append(caps, c)
- }
- for _, c := range p.State.RemoteCapabilityList {
+ lcaps, _ := apiutil.UnmarshalCapabilities(p.Conf.LocalCap)
+ caps = append(caps, lcaps...)
+
+ rcaps, _ := apiutil.UnmarshalCapabilities(p.Conf.RemoteCap)
+ for _, c := range rcaps {
if lookup(c, caps) == nil {
caps = append(caps, c)
}
}
- sort.Sort(caps)
+ sort.Slice(caps, func(i, j int) bool {
+ return caps[i].Code() < caps[j].Code()
+ })
firstMp := true
for _, c := range caps {
support := ""
- if m := lookup(c, p.State.LocalCapabilityList); m != nil {
+ if m := lookup(c, lcaps); m != nil {
support += "advertised"
}
- if lookup(c, p.State.RemoteCapabilityList) != nil {
+ if lookup(c, rcaps) != nil {
if len(support) != 0 {
support += " and "
}
@@ -307,13 +344,13 @@ func showNeighbor(args []string) error {
}
return str
}
- if m := lookup(c, p.State.LocalCapabilityList); m != nil {
+ if m := lookup(c, lcaps); m != nil {
g := m.(*bgp.CapGracefulRestart)
if s := grStr(g); len(s) > 0 {
fmt.Printf(" Local: %s", s)
}
}
- if m := lookup(c, p.State.RemoteCapabilityList); m != nil {
+ if m := lookup(c, rcaps); m != nil {
g := m.(*bgp.CapGracefulRestart)
if s := grStr(g); len(s) > 0 {
fmt.Printf(" Remote: %s", s)
@@ -332,13 +369,13 @@ func showNeighbor(args []string) error {
}
return str
}
- if m := lookup(c, p.State.LocalCapabilityList); m != nil {
+ if m := lookup(c, lcaps); m != nil {
g := m.(*bgp.CapLongLivedGracefulRestart)
if s := grStr(g); len(s) > 0 {
fmt.Printf(" Local:\n%s", s)
}
}
- if m := lookup(c, p.State.RemoteCapabilityList); m != nil {
+ if m := lookup(c, rcaps); m != nil {
g := m.(*bgp.CapLongLivedGracefulRestart)
if s := grStr(g); len(s) > 0 {
fmt.Printf(" Remote:\n%s", s)
@@ -363,13 +400,13 @@ func showNeighbor(args []string) error {
}
return strings.Join(lines, "\n")
}
- if m := lookup(c, p.State.LocalCapabilityList); m != nil {
+ if m := lookup(c, lcaps); m != nil {
e := m.(*bgp.CapExtendedNexthop)
if s := exnhStr(e); len(s) > 0 {
fmt.Printf(" Local: %s\n", s)
}
}
- if m := lookup(c, p.State.RemoteCapabilityList); m != nil {
+ if m := lookup(c, rcaps); m != nil {
e := m.(*bgp.CapExtendedNexthop)
if s := exnhStr(e); len(s) > 0 {
fmt.Printf(" Remote: %s\n", s)
@@ -377,13 +414,13 @@ func showNeighbor(args []string) error {
}
case bgp.BGP_CAP_ADD_PATH:
fmt.Printf(" %s:\t%s\n", c.Code(), support)
- if m := lookup(c, p.State.LocalCapabilityList); m != nil {
+ if m := lookup(c, lcaps); m != nil {
fmt.Println(" Local:")
for _, item := range m.(*bgp.CapAddPath).Tuples {
fmt.Printf(" %s:\t%s\n", item.RouteFamily, item.Mode)
}
}
- if m := lookup(c, p.State.RemoteCapabilityList); m != nil {
+ if m := lookup(c, rcaps); m != nil {
fmt.Println(" Remote:")
for _, item := range m.(*bgp.CapAddPath).Tuples {
fmt.Printf(" %s:\t%s\n", item.RouteFamily, item.Mode)
@@ -403,19 +440,19 @@ func showNeighbor(args []string) error {
fmt.Printf(" Discarded: %10d %10d\n", p.State.Messages.Sent.Discarded, p.State.Messages.Received.Discarded)
fmt.Printf(" Total: %10d %10d\n", p.State.Messages.Sent.Total, p.State.Messages.Received.Total)
fmt.Print(" Route statistics:\n")
- fmt.Printf(" Advertised: %10d\n", p.State.AdjTable.Advertised)
- fmt.Printf(" Received: %10d\n", p.State.AdjTable.Received)
- fmt.Printf(" Accepted: %10d\n", p.State.AdjTable.Accepted)
+ fmt.Printf(" Advertised: %10d\n", p.State.Advertised)
+ fmt.Printf(" Received: %10d\n", p.State.Received)
+ fmt.Printf(" Accepted: %10d\n", p.State.Accepted)
first := true
- for _, afisafi := range p.AfiSafis {
- if afisafi.PrefixLimit.Config.MaxPrefixes > 0 {
+ for _, limit := range p.Conf.PrefixLimits {
+ if limit.MaxPrefixes > 0 {
if first {
fmt.Println(" Prefix Limits:")
first = false
}
- fmt.Printf(" %s:\tMaximum prefixes allowed %d", afisafi.Config.AfiSafiName, afisafi.PrefixLimit.Config.MaxPrefixes)
- if afisafi.PrefixLimit.Config.ShutdownThresholdPct > 0 {
- fmt.Printf(", Threshold for warning message %d%%\n", afisafi.PrefixLimit.Config.ShutdownThresholdPct)
+ fmt.Printf(" %s:\tMaximum prefixes allowed %d", bgp.AddressFamilyNameMap[bgp.RouteFamily(limit.Family)], limit.MaxPrefixes)
+ if limit.ShutdownThresholdPct > 0 {
+ fmt.Printf(", Threshold for warning message %d%%\n", limit.ShutdownThresholdPct)
} else {
fmt.Printf("\n")
}
@@ -665,31 +702,36 @@ func showRibInfo(r, name string) error {
return err
}
- var info *api.TableInfo
+ var t api.Resource
switch r {
case CMD_GLOBAL:
- info, err = client.GetRIBInfo(family)
+ t = api.Resource_GLOBAL
case CMD_LOCAL:
- info, err = client.GetLocalRIBInfo(name, family)
+ t = api.Resource_LOCAL
case CMD_ADJ_IN:
- info, err = client.GetAdjRIBInInfo(name, family)
+ t = api.Resource_ADJ_IN
case CMD_ADJ_OUT:
- info, err = client.GetAdjRIBOutInfo(name, family)
+ t = api.Resource_ADJ_OUT
default:
return fmt.Errorf("invalid resource to show RIB info: %s", r)
}
+ rsp, err := client.GetTable(ctx, &api.GetTableRequest{
+ Type: t,
+ Family: uint32(family),
+ Name: name,
+ })
if err != nil {
return err
}
if globalOpts.Json {
- j, _ := json.Marshal(info)
+ j, _ := json.Marshal(rsp)
fmt.Println(string(j))
return nil
}
fmt.Printf("Table %s\n", family)
- fmt.Printf("Destination: %d, Path: %d\n", info.NumDestination, info.NumPath)
+ fmt.Printf("Destination: %d, Path: %d\n", rsp.NumDestination, rsp.NumPath)
return nil
}
@@ -769,34 +811,60 @@ func showNeighborRib(r string, name string, args []string) error {
}
}
- var rib *api.Table
+ var t api.Resource
switch r {
case CMD_GLOBAL:
- rib, err = client.GetRIB(family, filter)
+ t = api.Resource_GLOBAL
case CMD_LOCAL:
- rib, err = client.GetLocalRIB(name, family, filter)
+ t = api.Resource_LOCAL
case CMD_ADJ_IN, CMD_ACCEPTED, CMD_REJECTED:
+ t = api.Resource_ADJ_IN
showIdentifier = bgp.BGP_ADD_PATH_RECEIVE
- rib, err = client.GetAdjRIBIn(name, family, filter)
case CMD_ADJ_OUT:
+ t = api.Resource_ADJ_OUT
showIdentifier = bgp.BGP_ADD_PATH_SEND
- rib, err = client.GetAdjRIBOut(name, family, filter)
case CMD_VRF:
- rib, err = client.GetVRFRIB(name, family, filter)
+ t = api.Resource_VRF
}
+ stream, err := client.ListPath(ctx, &api.ListPathRequest{
+ Type: t,
+ Family: uint32(family),
+ Name: name,
+ Prefixes: filter,
+ })
if err != nil {
return err
}
+ rib := make([]*api.Destination, 0)
+ for {
+ r, err := stream.Recv()
+ if err == io.EOF {
+ break
+ } else if err != nil {
+ return err
+ }
+ rib = append(rib, r.Destination)
+ }
+
switch r {
case CMD_LOCAL, CMD_ADJ_IN, CMD_ACCEPTED, CMD_REJECTED, CMD_ADJ_OUT:
- if len(rib.Destinations) == 0 {
- peer, err := client.GetNeighbor(name, false)
+ if len(rib) == 0 {
+ stream, err := client.ListPeer(ctx, &api.ListPeerRequest{
+ Address: name,
+ })
if err != nil {
return err
}
- if peer.State.SessionState != config.SESSION_STATE_ESTABLISHED {
+ r, err := stream.Recv()
+ if err != nil && err != io.EOF {
+ return err
+ }
+ if r == nil {
+ return fmt.Errorf("Neighbor %v is not found", name)
+ }
+ if r.Peer.State.SessionState != api.PeerState_ESTABLISHED {
return fmt.Errorf("Neighbor %v's BGP session is not established", name)
}
}
@@ -804,7 +872,7 @@ func showNeighborRib(r string, name string, args []string) error {
if globalOpts.Json {
d := make(map[string]*apiutil.Destination)
- for _, dst := range rib.GetDestinations() {
+ for _, dst := range rib {
d[dst.Prefix] = apiutil.NewDestination(dst)
}
j, _ := json.Marshal(d)
@@ -815,7 +883,7 @@ func showNeighborRib(r string, name string, args []string) error {
if validationTarget != "" {
// show RPKI validation info
d := func() *api.Destination {
- for _, dst := range rib.GetDestinations() {
+ for _, dst := range rib {
if dst.Prefix == validationTarget {
return dst
}
@@ -834,15 +902,15 @@ func showNeighborRib(r string, name string, args []string) error {
}
} else {
// show RIB
- dsts := rib.GetDestinations()
+ var dsts []*api.Destination
switch family {
case bgp.RF_IPv4_UC, bgp.RF_IPv6_UC:
type d struct {
prefix net.IP
dst *api.Destination
}
- l := make([]*d, 0, len(dsts))
- for _, dst := range dsts {
+ l := make([]*d, 0, len(rib))
+ for _, dst := range rib {
_, p, _ := net.ParseCIDR(dst.Prefix)
l = append(l, &d{prefix: p.IP, dst: dst})
}
@@ -851,10 +919,12 @@ func showNeighborRib(r string, name string, args []string) error {
return bytes.Compare(l[i].prefix, l[j].prefix) < 0
})
- dsts = make([]*api.Destination, 0, len(dsts))
+ dsts = make([]*api.Destination, 0, len(rib))
for _, s := range l {
dsts = append(dsts, s.dst)
}
+ default:
+ dsts = append(dsts, rib...)
}
for _, d := range dsts {
@@ -883,21 +953,29 @@ func showNeighborRib(r string, name string, args []string) error {
}
func resetNeighbor(cmd string, remoteIP string, args []string) error {
- family := bgp.RouteFamily(0)
if reasonLen := len(neighborsOpts.Reason); reasonLen > bgp.BGP_ERROR_ADMINISTRATIVE_COMMUNICATION_MAX {
return fmt.Errorf("Too long reason for shutdown communication (max %d bytes)", bgp.BGP_ERROR_ADMINISTRATIVE_COMMUNICATION_MAX)
}
+ var comm string
+ soft := true
+ dir := api.ResetPeerRequest_BOTH
switch cmd {
case CMD_RESET:
- return client.ResetNeighbor(remoteIP, neighborsOpts.Reason)
+ soft = false
+ comm = neighborsOpts.Reason
case CMD_SOFT_RESET:
- return client.SoftReset(remoteIP, family)
case CMD_SOFT_RESET_IN:
- return client.SoftResetIn(remoteIP, family)
+ dir = api.ResetPeerRequest_IN
case CMD_SOFT_RESET_OUT:
- return client.SoftResetOut(remoteIP, family)
- }
- return nil
+ dir = api.ResetPeerRequest_OUT
+ }
+ _, err := client.ResetPeer(ctx, &api.ResetPeerRequest{
+ Address: remoteIP,
+ Communication: comm,
+ Soft: soft,
+ Direction: dir,
+ })
+ return err
}
func stateChangeNeighbor(cmd string, remoteIP string, args []string) error {
@@ -907,11 +985,21 @@ func stateChangeNeighbor(cmd string, remoteIP string, args []string) error {
switch cmd {
case CMD_SHUTDOWN:
fmt.Printf("WARNING: command `%s` is deprecated. use `%s` instead\n", CMD_SHUTDOWN, CMD_DISABLE)
- return client.ShutdownNeighbor(remoteIP, neighborsOpts.Reason)
+ _, err := client.ShutdownPeer(ctx, &api.ShutdownPeerRequest{
+ Address: remoteIP,
+ Communication: neighborsOpts.Reason,
+ })
+ return err
case CMD_ENABLE:
- return client.EnableNeighbor(remoteIP)
+ _, err := client.EnablePeer(ctx, &api.EnablePeerRequest{
+ Address: remoteIP,
+ })
+ return err
case CMD_DISABLE:
- return client.DisableNeighbor(remoteIP, neighborsOpts.Reason)
+ _, err := client.DisablePeer(ctx, &api.DisablePeerRequest{
+ Address: remoteIP,
+ })
+ return err
}
return nil
}
@@ -919,19 +1007,28 @@ func stateChangeNeighbor(cmd string, remoteIP string, args []string) error {
func showNeighborPolicy(remoteIP, policyType string, indent int) error {
var assignment *api.PolicyAssignment
var err error
+ var dir api.PolicyDirection
switch strings.ToLower(policyType) {
case "import":
- assignment, err = client.GetRouteServerImportPolicy(remoteIP)
+ dir = api.PolicyDirection_IMPORT
case "export":
- assignment, err = client.GetRouteServerExportPolicy(remoteIP)
+ dir = api.PolicyDirection_EXPORT
default:
return fmt.Errorf("invalid policy type: choose from (in|import|export)")
}
-
+ stream, err := client.ListPolicyAssignment(ctx, &api.ListPolicyAssignmentRequest{
+ Name: remoteIP,
+ Direction: dir,
+ })
+ if err != nil {
+ return err
+ }
+ r, err := stream.Recv()
if err != nil {
return err
}
+ assignment = r.Assignment
if globalOpts.Json {
j, _ := json.Marshal(assignment)
@@ -981,9 +1078,9 @@ func modNeighborPolicy(remoteIP, policyType, cmdType string, args []string) erro
switch strings.ToLower(policyType) {
case "import":
- assign.Type = api.PolicyType_IMPORT
+ assign.Type = api.PolicyDirection_IMPORT
case "export":
- assign.Type = api.PolicyType_EXPORT
+ assign.Type = api.PolicyDirection_EXPORT
}
usage := fmt.Sprintf("usage: gobgp neighbor %s policy %s %s", remoteIP, policyType, cmdType)
@@ -1012,15 +1109,22 @@ func modNeighborPolicy(remoteIP, policyType, cmdType string, args []string) erro
assign.Policies = ps
switch cmdType {
case CMD_ADD:
- err = client.AddPolicyAssignment(assign)
+ _, err = client.AddPolicyAssignment(ctx, &api.AddPolicyAssignmentRequest{
+ Assignment: assign,
+ })
case CMD_SET:
- err = client.ReplacePolicyAssignment(assign)
+ _, err = client.ReplacePolicyAssignment(ctx, &api.ReplacePolicyAssignmentRequest{
+ Assignment: assign,
+ })
case CMD_DEL:
all := false
if len(args) == 0 {
all = true
}
- err = client.DeletePolicyAssignment(assign, all)
+ _, err = client.DeletePolicyAssignment(ctx, &api.DeletePolicyAssignmentRequest{
+ Assignment: assign,
+ All: all,
+ })
}
return err
}
@@ -1067,96 +1171,97 @@ func modNeighbor(cmdType string, args []string) error {
return m[""][0], nil
}
- getNeighborConfig := func() (*config.Neighbor, error) {
+ getNeighborConfig := func() (*api.Peer, error) {
addr, err := getNeighborAddress()
if err != nil {
return nil, err
}
- var peer *config.Neighbor
+ var peer *api.Peer
switch cmdType {
case CMD_ADD, CMD_DEL:
- peer = &config.Neighbor{}
+ peer = &api.Peer{
+ Conf: &api.PeerConf{},
+ State: &api.PeerState{},
+ }
if unnumbered {
- peer.Config.NeighborInterface = m["interface"][0]
+ peer.Conf.NeighborInterface = m["interface"][0]
} else {
- peer.Config.NeighborAddress = addr
+ peer.Conf.NeighborAddress = addr
}
peer.State.NeighborAddress = addr
case CMD_UPDATE:
- peer, err = client.GetNeighbor(addr)
+ stream, err := client.ListPeer(ctx, &api.ListPeerRequest{
+ Address: addr,
+ })
+ if err != nil {
+ return nil, err
+ }
+ r, err := stream.Recv()
if err != nil {
return nil, err
}
+ peer = r.Peer
default:
return nil, fmt.Errorf("invalid command: %s", cmdType)
}
return peer, nil
}
- updateNeighborConfig := func(peer *config.Neighbor) error {
+ updateNeighborConfig := func(peer *api.Peer) error {
if len(m["as"]) > 0 {
as, err := strconv.ParseUint(m["as"][0], 10, 32)
if err != nil {
return err
}
- peer.Config.PeerAs = uint32(as)
+ peer.Conf.PeerAs = uint32(as)
}
if len(m["family"]) == 1 {
- peer.AfiSafis = make([]config.AfiSafi, 0) // for the case of CMD_UPDATE
- for _, family := range strings.Split(m["family"][0], ",") {
- afiSafiName := config.AfiSafiType(family)
- if afiSafiName.ToInt() == -1 {
- return fmt.Errorf("invalid family value: %s", family)
- }
- peer.AfiSafis = append(peer.AfiSafis, config.AfiSafi{Config: config.AfiSafiConfig{AfiSafiName: afiSafiName}})
+ peer.AfiSafis = make([]*api.AfiSafi, 0) // for the case of CMD_UPDATE
+ for _, f := range strings.Split(m["family"][0], ",") {
+ family := config.AfiSafiType(f).ToInt()
+ peer.AfiSafis = append(peer.AfiSafis, &api.AfiSafi{Config: &api.AfiSafiConfig{Family: uint32(family)}})
}
}
if len(m["vrf"]) == 1 {
- peer.Config.Vrf = m["vrf"][0]
+ peer.Conf.Vrf = m["vrf"][0]
}
if option, ok := m["route-reflector-client"]; ok {
- peer.RouteReflector.Config = config.RouteReflectorConfig{
- RouteReflectorClient: true,
- }
+ peer.RouteReflector.RouteReflectorClient = true
if len(option) == 1 {
- peer.RouteReflector.Config.RouteReflectorClusterId = config.RrClusterIdType(option[0])
+ peer.RouteReflector.RouteReflectorClusterId = option[0]
}
}
if _, ok := m["route-server-client"]; ok {
- peer.RouteServer.Config = config.RouteServerConfig{
- RouteServerClient: true,
- }
+ peer.RouteServer.RouteServerClient = true
}
if option, ok := m["allow-own-as"]; ok {
as, err := strconv.ParseUint(option[0], 10, 8)
if err != nil {
return err
}
- peer.AsPathOptions.Config.AllowOwnAs = uint8(as)
+ peer.Conf.AllowOwnAs = uint32(as)
}
if option, ok := m["remove-private-as"]; ok {
switch option[0] {
case "all":
- peer.Config.RemovePrivateAs = config.REMOVE_PRIVATE_AS_OPTION_ALL
+ peer.Conf.RemovePrivateAs = api.PeerConf_ALL
case "replace":
- peer.Config.RemovePrivateAs = config.REMOVE_PRIVATE_AS_OPTION_REPLACE
+ peer.Conf.RemovePrivateAs = api.PeerConf_REPLACE
default:
return fmt.Errorf("invalid remove-private-as value: all or replace")
}
}
if _, ok := m["replace-peer-as"]; ok {
- peer.AsPathOptions.Config.ReplacePeerAs = true
+ peer.Conf.ReplacePeerAs = true
}
if len(m["ebgp-multihop-ttl"]) == 1 {
ttl, err := strconv.ParseUint(m["ebgp-multihop-ttl"][0], 10, 32)
if err != nil {
return err
}
- peer.EbgpMultihop = config.EbgpMultihop{
- Config: config.EbgpMultihopConfig{
- Enabled: true,
- MultihopTtl: uint8(ttl),
- },
+ peer.EbgpMultihop = &api.EbgpMultihop{
+ Enabled: true,
+ MultihopTtl: uint32(ttl),
}
}
return nil
@@ -1169,20 +1274,27 @@ func modNeighbor(cmdType string, args []string) error {
switch cmdType {
case CMD_ADD:
- if err := updateNeighborConfig(n); err != nil {
+ if err = updateNeighborConfig(n); err != nil {
return err
}
- return client.AddNeighbor(n)
+ _, err = client.AddPeer(ctx, &api.AddPeerRequest{
+ Peer: n,
+ })
case CMD_DEL:
- return client.DeleteNeighbor(n)
+ _, err = client.DeletePeer(ctx, &api.DeletePeerRequest{
+ Address: n.Conf.NeighborAddress,
+ Interface: n.Conf.NeighborInterface,
+ })
case CMD_UPDATE:
- if err := updateNeighborConfig(n); err != nil {
+ if err = updateNeighborConfig(n); err != nil {
return err
}
- _, err := client.UpdateNeighbor(n, true)
- return err
+ _, err = client.UpdatePeer(ctx, &api.UpdatePeerRequest{
+ Peer: n,
+ DoSoftResetIn: true,
+ })
}
- return nil
+ return err
}
func NewNeighborCmd() *cobra.Command {
@@ -1199,6 +1311,20 @@ func NewNeighborCmd() *cobra.Command {
c = append(c, cmds{[]string{CMD_RESET, CMD_SOFT_RESET, CMD_SOFT_RESET_IN, CMD_SOFT_RESET_OUT}, resetNeighbor})
c = append(c, cmds{[]string{CMD_SHUTDOWN, CMD_ENABLE, CMD_DISABLE}, stateChangeNeighbor})
+ getPeer := func(addr string) (*api.Peer, error) {
+ var r *api.ListPeerResponse
+ stream, err := client.ListPeer(ctx, &api.ListPeerRequest{
+ Address: addr,
+ })
+ if err == nil {
+ r, err = stream.Recv()
+ }
+ if err != nil && err != io.EOF {
+ return nil, err
+ }
+ return r.Peer, nil
+ }
+
for _, v := range c {
f := v.f
for _, name := range v.names {
@@ -1213,11 +1339,11 @@ func NewNeighborCmd() *cobra.Command {
}
}
if addr == "" {
- peer, err := client.GetNeighbor(args[len(args)-1], false)
+ p, err := getPeer(args[len(args)-1])
if err != nil {
exitWithError(err)
}
- addr = peer.State.NeighborAddress
+ addr = p.State.NeighborAddress
}
err := f(cmd.Use, addr, args[:len(args)-1])
if err != nil {
@@ -1244,7 +1370,7 @@ func NewNeighborCmd() *cobra.Command {
policyCmd := &cobra.Command{
Use: CMD_POLICY,
Run: func(cmd *cobra.Command, args []string) {
- peer, err := client.GetNeighbor(args[0], false)
+ peer, err := getPeer(args[0])
if err != nil {
exitWithError(err)
}
@@ -1261,7 +1387,7 @@ func NewNeighborCmd() *cobra.Command {
cmd := &cobra.Command{
Use: v,
Run: func(cmd *cobra.Command, args []string) {
- peer, err := client.GetNeighbor(args[0], false)
+ peer, err := getPeer(args[0])
if err != nil {
exitWithError(err)
}
@@ -1277,7 +1403,7 @@ func NewNeighborCmd() *cobra.Command {
subcmd := &cobra.Command{
Use: w,
Run: func(subcmd *cobra.Command, args []string) {
- peer, err := client.GetNeighbor(args[len(args)-1], false)
+ peer, err := getPeer(args[len(args)-1])
if err != nil {
exitWithError(err)
}
diff --git a/cmd/gobgp/cmd/policy.go b/cmd/gobgp/cmd/policy.go
index 6c50858f..df9c5c8f 100644
--- a/cmd/gobgp/cmd/policy.go
+++ b/cmd/gobgp/cmd/policy.go
@@ -19,6 +19,7 @@ import (
"bytes"
"encoding/json"
"fmt"
+ "io"
"net"
"regexp"
"strconv"
@@ -212,20 +213,28 @@ func showDefinedSet(v string, args []string) error {
default:
return fmt.Errorf("unknown defined type: %s", v)
}
- var m []*api.DefinedSet
+ m := make([]*api.DefinedSet, 0)
+ var name string
if len(args) > 0 {
- d, err := client.GetDefinedSetByName(typ, args[0])
- if err != nil {
- return err
- }
- m = []*api.DefinedSet{d}
- } else {
- var err error
- m, err = client.GetDefinedSet(typ)
- if err != nil {
+ name = args[0]
+ }
+ stream, err := client.ListDefinedSet(ctx, &api.ListDefinedSetRequest{
+ Type: typ,
+ Name: name,
+ })
+ if err != nil {
+ return err
+ }
+ for {
+ r, err := stream.Recv()
+ if err == io.EOF {
+ break
+ } else if err != nil {
return err
}
+ m = append(m, r.Set)
}
+
if globalOpts.Json {
j, _ := json.Marshal(m)
fmt.Println(string(j))
@@ -433,15 +442,22 @@ func modDefinedSet(settype string, modtype string, args []string) error {
}
switch modtype {
case CMD_ADD:
- err = client.AddDefinedSet(d)
+ _, err = client.AddDefinedSet(ctx, &api.AddDefinedSetRequest{
+ Set: d,
+ })
case CMD_DEL:
all := false
if len(args) < 2 {
all = true
}
- err = client.DeleteDefinedSet(d, all)
+ _, err = client.DeleteDefinedSet(ctx, &api.DeleteDefinedSetRequest{
+ Set: d,
+ All: all,
+ })
case CMD_SET:
- err = client.ReplaceDefinedSet(d)
+ _, err = client.ReplaceDefinedSet(ctx, &api.ReplaceDefinedSetRequest{
+ Set: d,
+ })
}
return err
}
@@ -525,10 +541,21 @@ func printPolicy(indent int, pd *api.Policy) {
}
func showPolicy(args []string) error {
- policies, err := client.GetPolicy()
+ policies := make([]*api.Policy, 0)
+ stream, err := client.ListPolicy(ctx, &api.ListPolicyRequest{})
if err != nil {
return err
}
+ for {
+ r, err := stream.Recv()
+ if err == io.EOF {
+ break
+ } else if err != nil {
+ return nil
+ }
+ policies = append(policies, r.Policy)
+ }
+
var m []*api.Policy
if len(args) > 0 {
for _, p := range policies {
@@ -563,10 +590,21 @@ func showPolicy(args []string) error {
}
func showStatement(args []string) error {
- stmts, err := client.GetStatement()
+ stmts := make([]*api.Statement, 0)
+ stream, err := client.ListStatement(ctx, &api.ListStatementRequest{})
if err != nil {
return err
}
+ for {
+ r, err := stream.Recv()
+ if err == io.EOF {
+ break
+ } else if err != nil {
+ return err
+ }
+ stmts = append(stmts, r.Statement)
+ }
+
var m []*api.Statement
if len(args) > 0 {
for _, s := range stmts {
@@ -608,9 +646,14 @@ func modStatement(op string, args []string) error {
var err error
switch op {
case CMD_ADD:
- err = client.AddStatement(stmt)
+ _, err = client.AddStatement(ctx, &api.AddStatementRequest{
+ Statement: stmt,
+ })
case CMD_DEL:
- err = client.DeleteStatement(stmt, true)
+ _, err = client.DeleteStatement(ctx, &api.DeleteStatementRequest{
+ Statement: stmt,
+ All: true,
+ })
default:
return fmt.Errorf("invalid operation: %s", op)
}
@@ -803,11 +846,17 @@ func modCondition(name, op string, args []string) error {
var err error
switch op {
case CMD_ADD:
- err = client.AddStatement(stmt)
+ _, err = client.AddStatement(ctx, &api.AddStatementRequest{
+ Statement: stmt,
+ })
case CMD_DEL:
- err = client.DeleteStatement(stmt, false)
+ _, err = client.DeleteStatement(ctx, &api.DeleteStatementRequest{
+ Statement: stmt,
+ })
case CMD_SET:
- err = client.ReplaceStatement(stmt)
+ _, err = client.ReplaceStatement(ctx, &api.ReplaceStatementRequest{
+ Statement: stmt,
+ })
default:
return fmt.Errorf("invalid operation: %s", op)
}
@@ -931,11 +980,17 @@ func modAction(name, op string, args []string) error {
var err error
switch op {
case CMD_ADD:
- err = client.AddStatement(stmt)
+ _, err = client.AddStatement(ctx, &api.AddStatementRequest{
+ Statement: stmt,
+ })
case CMD_DEL:
- err = client.DeleteStatement(stmt, false)
+ _, err = client.DeleteStatement(ctx, &api.DeleteStatementRequest{
+ Statement: stmt,
+ })
case CMD_SET:
- err = client.ReplaceStatement(stmt)
+ _, err = client.ReplaceStatement(ctx, &api.ReplaceStatementRequest{
+ Statement: stmt,
+ })
default:
return fmt.Errorf("invalid operation: %s", op)
}
@@ -960,15 +1015,26 @@ func modPolicy(modtype string, args []string) error {
var err error
switch modtype {
case CMD_ADD:
- err = client.AddPolicy(policy, true)
+ _, err = client.AddPolicy(ctx, &api.AddPolicyRequest{
+ Policy: policy,
+ ReferExistingStatements: true,
+ })
case CMD_DEL:
all := false
if len(args) < 1 {
all = true
}
- err = client.DeletePolicy(policy, all, true)
+ _, err = client.DeletePolicy(ctx, &api.DeletePolicyRequest{
+ Policy: policy,
+ All: all,
+ PreserveStatements: true,
+ })
case CMD_SET:
- err = client.ReplacePolicy(policy, true, true)
+ _, err = client.ReplacePolicy(ctx, &api.ReplacePolicyRequest{
+ Policy: policy,
+ PreserveStatements: true,
+ ReferExistingStatements: true,
+ })
}
return err
}
diff --git a/cmd/gobgp/cmd/root.go b/cmd/gobgp/cmd/root.go
index 90df5ee4..e59c8324 100644
--- a/cmd/gobgp/cmd/root.go
+++ b/cmd/gobgp/cmd/root.go
@@ -16,11 +16,12 @@
package cmd
import (
+ "context"
"fmt"
"net/http"
_ "net/http/pprof"
- cli "github.com/osrg/gobgp/internal/pkg/client"
+ api "github.com/osrg/gobgp/api"
"github.com/spf13/cobra"
)
@@ -37,7 +38,8 @@ var globalOpts struct {
CaFile string
}
-var client *cli.Client
+var client api.GobgpApiClient
+var ctx context.Context
func NewRootCmd() *cobra.Command {
cobra.EnablePrefixMatching = true
@@ -53,7 +55,12 @@ func NewRootCmd() *cobra.Command {
}
if !globalOpts.GenCmpl {
- client = newClient()
+ var err error
+ ctx = context.Background()
+ client, err = newClient(ctx)
+ if err != nil {
+ exitWithError(err)
+ }
}
},
Run: func(cmd *cobra.Command, args []string) {
@@ -64,9 +71,6 @@ func NewRootCmd() *cobra.Command {
}
},
PersistentPostRun: func(cmd *cobra.Command, args []string) {
- if client != nil {
- client.Close()
- }
},
}
diff --git a/cmd/gobgp/cmd/rpki.go b/cmd/gobgp/cmd/rpki.go
index 853892d4..a4926088 100644
--- a/cmd/gobgp/cmd/rpki.go
+++ b/cmd/gobgp/cmd/rpki.go
@@ -17,19 +17,32 @@ package cmd
import (
"fmt"
+ "io"
"net"
+ "strconv"
"time"
+ api "github.com/osrg/gobgp/api"
"github.com/osrg/gobgp/pkg/packet/bgp"
"github.com/spf13/cobra"
)
func showRPKIServer(args []string) error {
- servers, err := client.GetRPKI()
+ servers := make([]*api.Rpki, 0)
+ stream, err := client.ListRpki(ctx, &api.ListRpkiRequest{})
if err != nil {
fmt.Println(err)
return err
}
+ for {
+ r, err := stream.Recv()
+ if err == io.EOF {
+ break
+ } else if err != nil {
+ return err
+ }
+ servers = append(servers, r.Server)
+ }
if len(args) == 0 {
format := "%-23s %-6s %-10s %s\n"
fmt.Printf(format, "Session", "State", "Uptime", "#IPv4/IPv6 records")
@@ -41,32 +54,32 @@ func showRPKIServer(args []string) error {
uptime = fmt.Sprint(formatTimedelta(int64(time.Since(time.Unix(r.State.Uptime, 0)).Seconds())))
}
- fmt.Printf(format, net.JoinHostPort(r.Config.Address, fmt.Sprintf("%d", r.Config.Port)), s, uptime, fmt.Sprintf("%d/%d", r.State.RecordsV4, r.State.RecordsV6))
+ fmt.Printf(format, net.JoinHostPort(r.Conf.Address, fmt.Sprintf("%d", r.Conf.RemotePort)), s, uptime, fmt.Sprintf("%d/%d", r.State.RecordIpv4, r.State.RecordIpv6))
}
return nil
}
for _, r := range servers {
- if r.Config.Address == args[0] {
+ if r.Conf.Address == args[0] {
up := "Down"
if r.State.Up {
up = "Up"
}
- fmt.Printf("Session: %s, State: %s\n", r.Config.Address, up)
- fmt.Println(" Port:", r.Config.Port)
- fmt.Println(" Serial:", r.State.SerialNumber)
- fmt.Printf(" Prefix: %d/%d\n", r.State.PrefixesV4, r.State.PrefixesV6)
- fmt.Printf(" Record: %d/%d\n", r.State.RecordsV4, r.State.RecordsV6)
+ fmt.Printf("Session: %s, State: %s\n", r.Conf.Address, up)
+ fmt.Println(" Port:", r.Conf.RemotePort)
+ fmt.Println(" Serial:", r.State.Serial)
+ fmt.Printf(" Prefix: %d/%d\n", r.State.PrefixIpv4, r.State.PrefixIpv6)
+ fmt.Printf(" Record: %d/%d\n", r.State.RecordIpv4, r.State.RecordIpv6)
fmt.Println(" Message statistics:")
- fmt.Printf(" Receivedv4: %10d\n", r.State.RpkiMessages.RpkiReceived.Ipv4Prefix)
- fmt.Printf(" Receivedv6: %10d\n", r.State.RpkiMessages.RpkiReceived.Ipv4Prefix)
- fmt.Printf(" SerialNotify: %10d\n", r.State.RpkiMessages.RpkiReceived.SerialNotify)
- fmt.Printf(" CacheReset: %10d\n", r.State.RpkiMessages.RpkiReceived.CacheReset)
- fmt.Printf(" CacheResponse: %10d\n", r.State.RpkiMessages.RpkiReceived.CacheResponse)
- fmt.Printf(" EndOfData: %10d\n", r.State.RpkiMessages.RpkiReceived.EndOfData)
- fmt.Printf(" Error: %10d\n", r.State.RpkiMessages.RpkiReceived.Error)
- fmt.Printf(" SerialQuery: %10d\n", r.State.RpkiMessages.RpkiSent.SerialQuery)
- fmt.Printf(" ResetQuery: %10d\n", r.State.RpkiMessages.RpkiSent.ResetQuery)
+ fmt.Printf(" Receivedv4: %10d\n", r.State.ReceivedIpv4)
+ fmt.Printf(" Receivedv6: %10d\n", r.State.ReceivedIpv6)
+ fmt.Printf(" SerialNotify: %10d\n", r.State.SerialNotify)
+ fmt.Printf(" CacheReset: %10d\n", r.State.CacheReset)
+ fmt.Printf(" CacheResponse: %10d\n", r.State.CacheResponse)
+ fmt.Printf(" EndOfData: %10d\n", r.State.EndOfData)
+ fmt.Printf(" Error: %10d\n", r.State.Error)
+ fmt.Printf(" SerialQuery: %10d\n", r.State.SerialQuery)
+ fmt.Printf(" ResetQuery: %10d\n", r.State.ResetQuery)
}
}
return nil
@@ -77,10 +90,22 @@ func showRPKITable(args []string) error {
if err != nil {
exitWithError(err)
}
- roas, err := client.GetROA(family)
+ stream, err := client.ListRpkiTable(ctx, &api.ListRpkiTableRequest{
+ Family: uint32(family),
+ })
if err != nil {
exitWithError(err)
}
+ roas := make([]*api.Roa, 0)
+ for {
+ r, err := stream.Recv()
+ if err == io.EOF {
+ break
+ } else if err != nil {
+ exitWithError(err)
+ }
+ roas = append(roas, r.Roa)
+ }
var format string
afi, _ := bgp.RouteFamilyToAfiSafi(family)
@@ -94,7 +119,7 @@ func showRPKITable(args []string) error {
if len(args) > 0 && args[0] != r.Conf.Address {
continue
}
- fmt.Printf(format, r.Prefix, fmt.Sprint(r.Maxlen), fmt.Sprint(r.As), net.JoinHostPort(r.Conf.Address, r.Conf.RemotePort))
+ fmt.Printf(format, r.Prefix, fmt.Sprint(r.Maxlen), fmt.Sprint(r.As), net.JoinHostPort(r.Conf.Address, strconv.Itoa(int(r.Conf.RemotePort))))
}
return nil
}
@@ -120,15 +145,25 @@ func NewRPKICmd() *cobra.Command {
var err error
switch args[1] {
case "add":
- err = client.AddRPKIServer(addr.String(), 323, 0)
- case "reset":
- err = client.ResetRPKIServer(addr.String())
- case "softreset":
- err = client.SoftResetRPKIServer(addr.String())
+ _, err = client.AddRpki(ctx, &api.AddRpkiRequest{
+ Address: addr.String(),
+ Port: 323,
+ })
+ case "reset", "softreset":
+ _, err = client.ResetRpki(ctx, &api.ResetRpkiRequest{
+ Address: addr.String(),
+ Soft: func() bool {
+ return args[1] != "reset"
+ }(),
+ })
case "enable":
- err = client.EnableRPKIServer(addr.String())
+ _, err = client.EnableRpki(ctx, &api.EnableRpkiRequest{
+ Address: addr.String(),
+ })
case "disable":
- err = client.DisableRPKIServer(addr.String())
+ _, err = client.DisableRpki(ctx, &api.DisableRpkiRequest{
+ Address: addr.String(),
+ })
default:
exitWithError(fmt.Errorf("unknown operation: %s", args[1]))
}
@@ -146,17 +181,6 @@ func NewRPKICmd() *cobra.Command {
},
}
tableCmd.PersistentFlags().StringVarP(&subOpts.AddressFamily, "address-family", "a", "", "address family")
-
- validateCmd := &cobra.Command{
- Use: "validate",
- Run: func(cmd *cobra.Command, args []string) {
- if err := client.ValidateRIBWithRPKI(args...); err != nil {
- exitWithError(err)
- }
- },
- }
- rpkiCmd.AddCommand(validateCmd)
-
rpkiCmd.AddCommand(tableCmd)
return rpkiCmd
}
diff --git a/cmd/gobgp/cmd/rpki_test.go b/cmd/gobgp/cmd/rpki_test.go
index 432d0bbc..72e28d52 100644
--- a/cmd/gobgp/cmd/rpki_test.go
+++ b/cmd/gobgp/cmd/rpki_test.go
@@ -16,6 +16,7 @@
package cmd
import (
+ "context"
"testing"
"time"
@@ -54,8 +55,9 @@ func TestShowRPKITable(test *testing.T) {
globalOpts.Host = "127.0.0.1"
globalOpts.Port = 50052
- client = newClient()
- defer client.Close()
+ ctx = context.Background()
+ client, err = newClient(ctx)
+ assert.Nil(err)
// Wait for downloading ROA info
for i := 0; ; i++ {
diff --git a/cmd/gobgp/cmd/vrf.go b/cmd/gobgp/cmd/vrf.go
index a8c2fcd8..9af7e11c 100644
--- a/cmd/gobgp/cmd/vrf.go
+++ b/cmd/gobgp/cmd/vrf.go
@@ -18,10 +18,12 @@ package cmd
import (
"encoding/json"
"fmt"
+ "io"
"sort"
"strconv"
"strings"
+ api "github.com/osrg/gobgp/api"
"github.com/osrg/gobgp/internal/pkg/apiutil"
"github.com/osrg/gobgp/pkg/packet/bgp"
@@ -29,13 +31,25 @@ import (
"github.com/spf13/cobra"
)
-func getVrfs() (vrfs, error) {
- ret, err := client.GetVRF()
+func getVrfs() ([]*api.Vrf, error) {
+ stream, err := client.ListVrf(ctx, &api.ListVrfRequest{})
if err != nil {
return nil, err
}
- sort.Sort(vrfs(ret))
- return ret, nil
+ vrfs := make([]*api.Vrf, 0)
+ for {
+ r, err := stream.Recv()
+ if err == io.EOF {
+ break
+ } else if err != nil {
+ return nil, err
+ }
+ vrfs = append(vrfs, r.Vrf)
+ }
+ sort.Slice(vrfs, func(i, j int) bool {
+ return vrfs[i].Name < vrfs[j].Name
+ })
+ return vrfs, nil
}
func showVrfs() error {
@@ -106,7 +120,6 @@ func showVrf(name string) error {
}
func modVrf(typ string, args []string) error {
- var err error
switch typ {
case CMD_ADD:
a, err := extractReserved(args, map[string]int{
@@ -153,16 +166,26 @@ func modVrf(typ string, args []string) error {
return err
}
}
- if err := client.AddVRF(name, int(id), rd, importRt, exportRt); err != nil {
- return err
- }
+ _, err = client.AddVrf(ctx, &api.AddVrfRequest{
+ Vrf: &api.Vrf{
+ Name: name,
+ Rd: apiutil.MarshalRD(rd),
+ ImportRt: apiutil.MarshalRTs(importRt),
+ ExportRt: apiutil.MarshalRTs(exportRt),
+ Id: uint32(id),
+ },
+ })
+ return err
case CMD_DEL:
if len(args) != 1 {
return fmt.Errorf("Usage: gobgp vrf del <vrf name>")
}
- err = client.DeleteVRF(args[0])
+ _, err := client.DeleteVrf(ctx, &api.DeleteVrfRequest{
+ Name: args[0],
+ })
+ return err
}
- return err
+ return nil
}
func NewVrfCmd() *cobra.Command {
@@ -199,7 +222,7 @@ func NewVrfCmd() *cobra.Command {
Run: func(cmd *cobra.Command, args []string) {
var err error
if len(args) == 1 {
- var vs vrfs
+ var vs []*api.Vrf
vs, err = getVrfs()
if err != nil {
exitWithError(err)
diff --git a/cmd/gobgpd/main.go b/cmd/gobgpd/main.go
index 31af0f67..146facad 100644
--- a/cmd/gobgpd/main.go
+++ b/cmd/gobgpd/main.go
@@ -175,7 +175,7 @@ func main() {
for {
select {
case <-sigCh:
- apiServer.Shutdown(context.Background(), &api.ShutdownRequest{})
+ apiServer.StopBgp(context.Background(), &api.StopBgpRequest{})
return
case newConfig := <-configCh:
var added, deleted, updated []config.Neighbor
@@ -184,7 +184,7 @@ func main() {
if c == nil {
c = newConfig
- if _, err := apiServer.StartServer(context.Background(), &api.StartServerRequest{
+ if _, err := apiServer.StartBgp(context.Background(), &api.StartBgpRequest{
Global: server.NewGlobalFromConfigStruct(&c.Global),
}); err != nil {
log.Fatalf("failed to set global config: %s", err)
@@ -208,13 +208,7 @@ func main() {
}
if len(newConfig.Collector.Config.Url) > 0 {
- if _, err := apiServer.AddCollector(context.Background(), &api.AddCollectorRequest{
- Url: c.Collector.Config.Url,
- DbName: c.Collector.Config.DbName,
- TableDumpInterval: c.Collector.Config.TableDumpInterval,
- }); err != nil {
- log.Fatalf("failed to set collector config: %s", err)
- }
+ log.Fatal("collector feature is not supported")
}
for _, c := range newConfig.RpkiServers {
@@ -374,7 +368,7 @@ func main() {
for _, pg := range deletedPg {
log.Infof("PeerGroup %s is deleted", pg.Config.PeerGroupName)
if _, err := apiServer.DeletePeerGroup(context.Background(), &api.DeletePeerGroupRequest{
- PeerGroup: server.NewPeerGroupFromConfigStruct(&pg),
+ Name: pg.Config.PeerGroupName,
}); err != nil {
log.Warn(err)
}
@@ -410,7 +404,7 @@ func main() {
}
for _, p := range added {
log.Infof("Peer %v is added", p.State.NeighborAddress)
- if _, err := apiServer.AddNeighbor(context.Background(), &api.AddNeighborRequest{
+ if _, err := apiServer.AddPeer(context.Background(), &api.AddPeerRequest{
Peer: server.NewPeerFromConfigStruct(&p),
}); err != nil {
log.Warn(err)
@@ -418,15 +412,15 @@ func main() {
}
for _, p := range deleted {
log.Infof("Peer %v is deleted", p.State.NeighborAddress)
- if _, err := apiServer.DeleteNeighbor(context.Background(), &api.DeleteNeighborRequest{
- Peer: server.NewPeerFromConfigStruct(&p),
+ if _, err := apiServer.DeletePeer(context.Background(), &api.DeletePeerRequest{
+ Address: p.State.NeighborAddress,
}); err != nil {
log.Warn(err)
}
}
for _, p := range updated {
log.Infof("Peer %v is updated", p.State.NeighborAddress)
- if u, err := apiServer.UpdateNeighbor(context.Background(), &api.UpdateNeighborRequest{
+ if u, err := apiServer.UpdatePeer(context.Background(), &api.UpdatePeerRequest{
Peer: server.NewPeerFromConfigStruct(&p),
}); err != nil {
log.Warn(err)
@@ -436,9 +430,10 @@ func main() {
}
if updatePolicy {
- if _, err := apiServer.SoftResetNeighbor(context.Background(), &api.SoftResetNeighborRequest{
+ if _, err := apiServer.ResetPeer(context.Background(), &api.ResetPeerRequest{
Address: "",
- Direction: api.SoftResetNeighborRequest_IN,
+ Direction: api.ResetPeerRequest_IN,
+ Soft: true,
}); err != nil {
log.Warn(err)
}
diff --git a/internal/pkg/client/client.go b/internal/pkg/client/client.go
deleted file mode 100644
index 61d0ab27..00000000
--- a/internal/pkg/client/client.go
+++ /dev/null
@@ -1,850 +0,0 @@
-// Copyright (C) 2016 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.
-
-// Package client provides a wrapper for GoBGP's gRPC API
-package client
-
-import (
- "fmt"
- "io"
- "net"
- "strconv"
- "time"
-
- "golang.org/x/net/context"
- "google.golang.org/grpc"
-
- api "github.com/osrg/gobgp/api"
- "github.com/osrg/gobgp/internal/pkg/apiutil"
- "github.com/osrg/gobgp/internal/pkg/config"
- "github.com/osrg/gobgp/pkg/packet/bgp"
- "github.com/osrg/gobgp/pkg/server"
-)
-
-type Client struct {
- conn *grpc.ClientConn
- cli api.GobgpApiClient
-}
-
-func defaultGRPCOptions() []grpc.DialOption {
- return []grpc.DialOption{grpc.WithTimeout(time.Second), grpc.WithBlock(), grpc.WithInsecure()}
-}
-
-// New returns a new Client using the given target and options for dialing
-// to the grpc server. If an error occurs during dialing it will be returned and
-// Client will be nil.
-func New(target string, opts ...grpc.DialOption) (*Client, error) {
- return NewWith(context.Background(), target, opts...)
-}
-
-// NewWith is like New, but uses the given ctx to cancel or expire the current
-// attempt to connect if it becomes Done before the connection succeeds.
-func NewWith(ctx context.Context, target string, opts ...grpc.DialOption) (*Client, error) {
- if target == "" {
- target = ":50051"
- }
- if len(opts) == 0 {
- opts = defaultGRPCOptions()
- }
- conn, err := grpc.DialContext(ctx, target, opts...)
- if err != nil {
- return nil, err
- }
- cli := api.NewGobgpApiClient(conn)
- return &Client{conn: conn, cli: cli}, nil
-}
-
-// NewFrom returns a new Client, using the given conn and cli for the
-// underlying connection. The given grpc.ClientConn connection is expected to be
-// initialized and paired with the api client. See New to have the connection
-// dialed for you.
-func NewFrom(conn *grpc.ClientConn, cli api.GobgpApiClient) *Client {
- return &Client{conn: conn, cli: cli}
-}
-
-func (cli *Client) Close() error {
- return cli.conn.Close()
-}
-
-func (cli *Client) StartServer(c *config.Global) error {
- _, err := cli.cli.StartServer(context.Background(), &api.StartServerRequest{
- Global: &api.Global{
- As: c.Config.As,
- RouterId: c.Config.RouterId,
- ListenPort: c.Config.Port,
- ListenAddresses: c.Config.LocalAddressList,
- UseMultiplePaths: c.UseMultiplePaths.Config.Enabled,
- },
- })
- return err
-}
-
-func (cli *Client) StopServer() error {
- _, err := cli.cli.StopServer(context.Background(), &api.StopServerRequest{})
- return err
-}
-
-func (cli *Client) GetServer() (*config.Global, error) {
- ret, err := cli.cli.GetServer(context.Background(), &api.GetServerRequest{})
- if err != nil {
- return nil, err
- }
- return &config.Global{
- Config: config.GlobalConfig{
- As: ret.Global.As,
- RouterId: ret.Global.RouterId,
- Port: ret.Global.ListenPort,
- LocalAddressList: ret.Global.ListenAddresses,
- },
- UseMultiplePaths: config.UseMultiplePaths{
- Config: config.UseMultiplePathsConfig{
- Enabled: ret.Global.UseMultiplePaths,
- },
- },
- }, nil
-}
-
-func (cli *Client) EnableZebra(c *config.Zebra) error {
- req := &api.EnableZebraRequest{
- Url: c.Config.Url,
- Version: uint32(c.Config.Version),
- NexthopTriggerEnable: c.Config.NexthopTriggerEnable,
- NexthopTriggerDelay: uint32(c.Config.NexthopTriggerDelay),
- }
- for _, t := range c.Config.RedistributeRouteTypeList {
- req.RouteTypes = append(req.RouteTypes, string(t))
- }
- _, err := cli.cli.EnableZebra(context.Background(), req)
- return err
-}
-
-func (cli *Client) getNeighbor(name string, afi int, vrf string, enableAdvertised bool) ([]*config.Neighbor, error) {
- ret, err := cli.cli.GetNeighbor(context.Background(), &api.GetNeighborRequest{EnableAdvertised: enableAdvertised, Address: name})
- if err != nil {
- return nil, err
- }
-
- neighbors := make([]*config.Neighbor, 0, len(ret.Peers))
-
- for _, p := range ret.Peers {
- if name != "" && name != p.Info.NeighborAddress && name != p.Conf.NeighborInterface {
- continue
- }
- if vrf != "" && name != p.Conf.Vrf {
- continue
- }
- if afi > 0 {
- v6 := net.ParseIP(p.Info.NeighborAddress).To4() == nil
- if afi == bgp.AFI_IP && v6 || afi == bgp.AFI_IP6 && !v6 {
- continue
- }
- }
- n, err := server.NewNeighborFromAPIStruct(p)
- if err != nil {
- return nil, err
- }
- neighbors = append(neighbors, n)
- }
- return neighbors, nil
-}
-
-func (cli *Client) ListNeighbor() ([]*config.Neighbor, error) {
- return cli.getNeighbor("", 0, "", false)
-}
-
-func (cli *Client) ListNeighborByTransport(afi int) ([]*config.Neighbor, error) {
- return cli.getNeighbor("", afi, "", false)
-}
-
-func (cli *Client) ListNeighborByVRF(vrf string) ([]*config.Neighbor, error) {
- return cli.getNeighbor("", 0, vrf, false)
-}
-
-func (cli *Client) GetNeighbor(name string, options ...bool) (*config.Neighbor, error) {
- enableAdvertised := false
- if len(options) > 0 && options[0] {
- enableAdvertised = true
- }
- ns, err := cli.getNeighbor(name, 0, "", enableAdvertised)
- if err != nil {
- return nil, err
- }
- if len(ns) == 0 {
- return nil, fmt.Errorf("not found neighbor %s", name)
- }
- return ns[0], nil
-}
-
-func (cli *Client) AddNeighbor(c *config.Neighbor) error {
- peer := server.NewPeerFromConfigStruct(c)
- _, err := cli.cli.AddNeighbor(context.Background(), &api.AddNeighborRequest{Peer: peer})
- return err
-}
-
-func (cli *Client) DeleteNeighbor(c *config.Neighbor) error {
- peer := server.NewPeerFromConfigStruct(c)
- _, err := cli.cli.DeleteNeighbor(context.Background(), &api.DeleteNeighborRequest{Peer: peer})
- return err
-}
-
-func (cli *Client) UpdateNeighbor(c *config.Neighbor, doSoftResetIn bool) (bool, error) {
- peer := server.NewPeerFromConfigStruct(c)
- response, err := cli.cli.UpdateNeighbor(context.Background(), &api.UpdateNeighborRequest{Peer: peer, DoSoftResetIn: doSoftResetIn})
- return response.NeedsSoftResetIn, err
-}
-
-func (cli *Client) ShutdownNeighbor(addr, communication string) error {
- _, err := cli.cli.ShutdownNeighbor(context.Background(), &api.ShutdownNeighborRequest{Address: addr, Communication: communication})
- return err
-}
-
-func (cli *Client) ResetNeighbor(addr, communication string) error {
- _, err := cli.cli.ResetNeighbor(context.Background(), &api.ResetNeighborRequest{Address: addr, Communication: communication})
- return err
-}
-
-func (cli *Client) EnableNeighbor(addr string) error {
- _, err := cli.cli.EnableNeighbor(context.Background(), &api.EnableNeighborRequest{Address: addr})
- return err
-}
-
-func (cli *Client) DisableNeighbor(addr, communication string) error {
- _, err := cli.cli.DisableNeighbor(context.Background(), &api.DisableNeighborRequest{Address: addr, Communication: communication})
- return err
-}
-
-func (cli *Client) softreset(addr string, family bgp.RouteFamily, dir api.SoftResetNeighborRequest_SoftResetDirection) error {
- _, err := cli.cli.SoftResetNeighbor(context.Background(), &api.SoftResetNeighborRequest{
- Address: addr,
- Direction: dir,
- })
- return err
-}
-
-func (cli *Client) SoftResetIn(addr string, family bgp.RouteFamily) error {
- return cli.softreset(addr, family, api.SoftResetNeighborRequest_IN)
-}
-
-func (cli *Client) SoftResetOut(addr string, family bgp.RouteFamily) error {
- return cli.softreset(addr, family, api.SoftResetNeighborRequest_OUT)
-}
-
-func (cli *Client) SoftReset(addr string, family bgp.RouteFamily) error {
- return cli.softreset(addr, family, api.SoftResetNeighborRequest_BOTH)
-}
-
-func (cli *Client) getRIB(resource api.Resource, name string, family bgp.RouteFamily, prefixes []*api.TableLookupPrefix) (*api.Table, error) {
- stream, err := cli.cli.GetPath(context.Background(), &api.GetPathRequest{
- Type: resource,
- Family: uint32(family),
- Name: name,
- Prefixes: prefixes,
- })
- if err != nil {
- return nil, err
- }
- pathMap := make(map[string][]*api.Path)
- for {
- p, err := stream.Recv()
- if err != nil {
- if err == io.EOF {
- break
- }
- return nil, err
- }
- nlri, err := apiutil.GetNativeNlri(p)
- if err != nil {
- return nil, err
- }
- nlriStr := nlri.String()
- pathMap[nlriStr] = append(pathMap[nlriStr], p)
- }
- dstList := make([]*api.Destination, 0, len(pathMap))
- for _, pathList := range pathMap {
- nlri, _ := apiutil.GetNativeNlri(pathList[0])
- dstList = append(dstList, &api.Destination{
- Prefix: nlri.String(),
- Paths: pathList,
- })
- }
- return &api.Table{
- Family: uint32(family),
- Destinations: dstList,
- }, nil
-}
-
-func (cli *Client) GetRIB(family bgp.RouteFamily, prefixes []*api.TableLookupPrefix) (*api.Table, error) {
- return cli.getRIB(api.Resource_GLOBAL, "", family, prefixes)
-}
-
-func (cli *Client) GetLocalRIB(name string, family bgp.RouteFamily, prefixes []*api.TableLookupPrefix) (*api.Table, error) {
- return cli.getRIB(api.Resource_LOCAL, name, family, prefixes)
-}
-
-func (cli *Client) GetAdjRIBIn(name string, family bgp.RouteFamily, prefixes []*api.TableLookupPrefix) (*api.Table, error) {
- return cli.getRIB(api.Resource_ADJ_IN, name, family, prefixes)
-}
-
-func (cli *Client) GetAdjRIBOut(name string, family bgp.RouteFamily, prefixes []*api.TableLookupPrefix) (*api.Table, error) {
- return cli.getRIB(api.Resource_ADJ_OUT, name, family, prefixes)
-}
-
-func (cli *Client) GetVRFRIB(name string, family bgp.RouteFamily, prefixes []*api.TableLookupPrefix) (*api.Table, error) {
- return cli.getRIB(api.Resource_VRF, name, family, prefixes)
-}
-
-func (cli *Client) getRIBInfo(resource api.Resource, name string, family bgp.RouteFamily) (*api.TableInfo, error) {
- r, err := cli.cli.GetRibInfo(context.Background(), &api.GetRibInfoRequest{
- Info: &api.TableInfo{
- Type: resource,
- Name: name,
- Family: uint32(family),
- },
- })
- if err != nil {
- return nil, err
- } else {
- return r.Info, nil
- }
-}
-
-func (cli *Client) GetRIBInfo(family bgp.RouteFamily) (*api.TableInfo, error) {
- return cli.getRIBInfo(api.Resource_GLOBAL, "", family)
-}
-
-func (cli *Client) GetLocalRIBInfo(name string, family bgp.RouteFamily) (*api.TableInfo, error) {
- return cli.getRIBInfo(api.Resource_LOCAL, name, family)
-}
-
-func (cli *Client) GetAdjRIBInInfo(name string, family bgp.RouteFamily) (*api.TableInfo, error) {
- return cli.getRIBInfo(api.Resource_ADJ_IN, name, family)
-}
-
-func (cli *Client) GetAdjRIBOutInfo(name string, family bgp.RouteFamily) (*api.TableInfo, error) {
- return cli.getRIBInfo(api.Resource_ADJ_OUT, name, family)
-}
-
-type AddPathByStreamClient struct {
- stream api.GobgpApi_InjectMrtClient
-}
-
-func (c *AddPathByStreamClient) Send(paths ...*api.Path) error {
- return c.stream.Send(&api.InjectMrtRequest{
- Resource: api.Resource_GLOBAL,
- Paths: paths,
- })
-}
-
-func (c *AddPathByStreamClient) Close() error {
- _, err := c.stream.CloseAndRecv()
- return err
-}
-
-func (cli *Client) AddPathByStream() (*AddPathByStreamClient, error) {
- stream, err := cli.cli.InjectMrt(context.Background())
- if err != nil {
- return nil, err
- }
- return &AddPathByStreamClient{stream}, nil
-}
-
-func (cli *Client) addPath(vrfID string, pathList []*api.Path) ([]byte, error) {
- resource := api.Resource_GLOBAL
- if vrfID != "" {
- resource = api.Resource_VRF
- }
- var uuid []byte
- for _, path := range pathList {
- r, err := cli.cli.AddPath(context.Background(), &api.AddPathRequest{
- Resource: resource,
- VrfId: vrfID,
- Path: path,
- })
- if err != nil {
- return nil, err
- }
- uuid = r.Uuid
- }
- return uuid, nil
-}
-
-func (cli *Client) AddPath(pathList []*api.Path) ([]byte, error) {
- return cli.addPath("", pathList)
-}
-
-func (cli *Client) AddVRFPath(vrfID string, pathList []*api.Path) ([]byte, error) {
- if vrfID == "" {
- return nil, fmt.Errorf("VRF ID is empty")
- }
- return cli.addPath(vrfID, pathList)
-}
-
-func (cli *Client) deletePath(uuid []byte, f bgp.RouteFamily, vrfID string, pathList []*api.Path) error {
- var reqs []*api.DeletePathRequest
-
- resource := api.Resource_GLOBAL
- if vrfID != "" {
- resource = api.Resource_VRF
- }
- switch {
- case len(pathList) != 0:
- for _, path := range pathList {
- reqs = append(reqs, &api.DeletePathRequest{
- Resource: resource,
- VrfId: vrfID,
- Path: path,
- })
- }
- default:
- reqs = append(reqs, &api.DeletePathRequest{
- Resource: resource,
- VrfId: vrfID,
- Uuid: uuid,
- Family: uint32(f),
- })
- }
-
- for _, req := range reqs {
- if _, err := cli.cli.DeletePath(context.Background(), req); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (cli *Client) DeletePath(pathList []*api.Path) error {
- return cli.deletePath(nil, bgp.RouteFamily(0), "", pathList)
-}
-
-func (cli *Client) DeleteVRFPath(vrfID string, pathList []*api.Path) error {
- if vrfID == "" {
- return fmt.Errorf("VRF ID is empty")
- }
- return cli.deletePath(nil, bgp.RouteFamily(0), vrfID, pathList)
-}
-
-func (cli *Client) DeletePathByUUID(uuid []byte) error {
- return cli.deletePath(uuid, bgp.RouteFamily(0), "", nil)
-}
-
-func (cli *Client) DeletePathByFamily(family bgp.RouteFamily) error {
- return cli.deletePath(nil, family, "", nil)
-}
-
-func (cli *Client) GetVRF() ([]*api.Vrf, error) {
- ret, err := cli.cli.GetVrf(context.Background(), &api.GetVrfRequest{})
- if err != nil {
- return nil, err
- }
- return ret.Vrfs, nil
-}
-
-func (cli *Client) AddVRF(name string, id int, rd bgp.RouteDistinguisherInterface, im, ex []bgp.ExtendedCommunityInterface) error {
- arg := &api.AddVrfRequest{
- Vrf: &api.Vrf{
- Name: name,
- Rd: apiutil.MarshalRD(rd),
- Id: uint32(id),
- ImportRt: apiutil.MarshalRTs(im),
- ExportRt: apiutil.MarshalRTs(ex),
- },
- }
- _, err := cli.cli.AddVrf(context.Background(), arg)
- return err
-}
-
-func (cli *Client) DeleteVRF(name string) error {
- arg := &api.DeleteVrfRequest{
- Vrf: &api.Vrf{
- Name: name,
- },
- }
- _, err := cli.cli.DeleteVrf(context.Background(), arg)
- return err
-}
-
-func (cli *Client) getDefinedSet(typ api.DefinedType, name string) ([]*api.DefinedSet, error) {
- ret, err := cli.cli.GetDefinedSet(context.Background(), &api.GetDefinedSetRequest{
- Type: api.DefinedType(typ),
- Name: name,
- })
- if err != nil {
- return nil, err
- }
- return ret.Sets, nil
-}
-
-func (cli *Client) GetDefinedSet(typ api.DefinedType) ([]*api.DefinedSet, error) {
- return cli.getDefinedSet(typ, "")
-}
-
-func (cli *Client) GetDefinedSetByName(typ api.DefinedType, name string) (*api.DefinedSet, error) {
- sets, err := cli.getDefinedSet(typ, name)
- if err != nil {
- return nil, err
- }
- if len(sets) == 0 {
- return nil, fmt.Errorf("not found defined set: %s", name)
- } else if len(sets) > 1 {
- return nil, fmt.Errorf("invalid response for GetDefinedSetByName")
- }
- return sets[0], nil
-}
-
-func (cli *Client) AddDefinedSet(d *api.DefinedSet) error {
- _, err := cli.cli.AddDefinedSet(context.Background(), &api.AddDefinedSetRequest{
- Set: d,
- })
- return err
-}
-
-func (cli *Client) DeleteDefinedSet(d *api.DefinedSet, all bool) error {
- _, err := cli.cli.DeleteDefinedSet(context.Background(), &api.DeleteDefinedSetRequest{
- Set: d,
- All: all,
- })
- return err
-}
-
-func (cli *Client) ReplaceDefinedSet(d *api.DefinedSet) error {
- _, err := cli.cli.ReplaceDefinedSet(context.Background(), &api.ReplaceDefinedSetRequest{
- Set: d,
- })
- return err
-}
-
-func (cli *Client) GetStatement() ([]*api.Statement, error) {
- ret, err := cli.cli.GetStatement(context.Background(), &api.GetStatementRequest{})
- if err != nil {
- return nil, err
- }
- return ret.Statements, nil
-}
-
-func (cli *Client) AddStatement(t *api.Statement) error {
- _, err := cli.cli.AddStatement(context.Background(), &api.AddStatementRequest{
- Statement: t,
- })
- return err
-}
-
-func (cli *Client) DeleteStatement(t *api.Statement, all bool) error {
- _, err := cli.cli.DeleteStatement(context.Background(), &api.DeleteStatementRequest{
- Statement: t,
- All: all,
- })
- return err
-}
-
-func (cli *Client) ReplaceStatement(t *api.Statement) error {
- _, err := cli.cli.ReplaceStatement(context.Background(), &api.ReplaceStatementRequest{
- Statement: t,
- })
- return err
-}
-
-func (cli *Client) GetPolicy() ([]*api.Policy, error) {
- ret, err := cli.cli.GetPolicy(context.Background(), &api.GetPolicyRequest{})
- if err != nil {
- return nil, err
- }
- return ret.Policies, nil
-}
-
-func (cli *Client) AddPolicy(a *api.Policy, refer bool) error {
- _, err := cli.cli.AddPolicy(context.Background(), &api.AddPolicyRequest{
- Policy: a,
- ReferExistingStatements: refer,
- })
- return err
-}
-
-func (cli *Client) DeletePolicy(a *api.Policy, all, preserve bool) error {
- _, err := cli.cli.DeletePolicy(context.Background(), &api.DeletePolicyRequest{
- Policy: a,
- All: all,
- PreserveStatements: preserve,
- })
- return err
-}
-
-func (cli *Client) ReplacePolicy(a *api.Policy, refer, preserve bool) error {
- _, err := cli.cli.ReplacePolicy(context.Background(), &api.ReplacePolicyRequest{
- Policy: a,
- ReferExistingStatements: refer,
- PreserveStatements: preserve,
- })
- return err
-}
-
-func (cli *Client) getPolicyAssignment(name string, typ api.PolicyType) (*api.PolicyAssignment, error) {
- resource := api.Resource_GLOBAL
- if name != "" {
- resource = api.Resource_LOCAL
- }
-
- ret, err := cli.cli.GetPolicyAssignment(context.Background(), &api.GetPolicyAssignmentRequest{
- Assignment: &api.PolicyAssignment{
- Name: name,
- Resource: resource,
- Type: typ,
- },
- })
- if err != nil {
- return nil, err
- }
-
- return &api.PolicyAssignment{
- Name: name,
- Type: typ,
- Policies: ret.Assignment.Policies,
- Default: ret.Assignment.Default,
- }, nil
-}
-
-func (cli *Client) GetImportPolicy() (*api.PolicyAssignment, error) {
- return cli.getPolicyAssignment("", api.PolicyType_IMPORT)
-}
-
-func (cli *Client) GetExportPolicy() (*api.PolicyAssignment, error) {
- return cli.getPolicyAssignment("", api.PolicyType_EXPORT)
-}
-
-func (cli *Client) GetRouteServerImportPolicy(name string) (*api.PolicyAssignment, error) {
- return cli.getPolicyAssignment(name, api.PolicyType_IMPORT)
-}
-
-func (cli *Client) GetRouteServerExportPolicy(name string) (*api.PolicyAssignment, error) {
- return cli.getPolicyAssignment(name, api.PolicyType_EXPORT)
-}
-
-func (cli *Client) AddPolicyAssignment(assignment *api.PolicyAssignment) error {
- _, err := cli.cli.AddPolicyAssignment(context.Background(), &api.AddPolicyAssignmentRequest{
- Assignment: assignment,
- })
- return err
-}
-
-func (cli *Client) DeletePolicyAssignment(assignment *api.PolicyAssignment, all bool) error {
- _, err := cli.cli.DeletePolicyAssignment(context.Background(), &api.DeletePolicyAssignmentRequest{
- Assignment: assignment,
- All: all})
- return err
-}
-
-func (cli *Client) ReplacePolicyAssignment(assignment *api.PolicyAssignment) error {
- _, err := cli.cli.ReplacePolicyAssignment(context.Background(), &api.ReplacePolicyAssignmentRequest{
- Assignment: assignment,
- })
- return err
-}
-
-//func (cli *Client) EnableMrt(c *config.MrtConfig) error {
-//}
-//
-//func (cli *Client) DisableMrt(c *config.MrtConfig) error {
-//}
-//
-
-func (cli *Client) GetRPKI() ([]*config.RpkiServer, error) {
- rsp, err := cli.cli.GetRpki(context.Background(), &api.GetRpkiRequest{})
- if err != nil {
- return nil, err
- }
- servers := make([]*config.RpkiServer, 0, len(rsp.Servers))
- for _, s := range rsp.Servers {
- // Note: RpkiServerConfig.Port is uint32 type, but the TCP/UDP port is
- // 16-bit length.
- port, err := strconv.ParseUint(s.Conf.RemotePort, 10, 16)
- if err != nil {
- return nil, err
- }
- server := &config.RpkiServer{
- Config: config.RpkiServerConfig{
- Address: s.Conf.Address,
- Port: uint32(port),
- },
- State: config.RpkiServerState{
- Up: s.State.Up,
- SerialNumber: s.State.Serial,
- RecordsV4: s.State.RecordIpv4,
- RecordsV6: s.State.RecordIpv6,
- PrefixesV4: s.State.PrefixIpv4,
- PrefixesV6: s.State.PrefixIpv6,
- Uptime: s.State.Uptime,
- Downtime: s.State.Downtime,
- RpkiMessages: config.RpkiMessages{
- RpkiReceived: config.RpkiReceived{
- SerialNotify: s.State.SerialNotify,
- CacheReset: s.State.CacheReset,
- CacheResponse: s.State.CacheResponse,
- Ipv4Prefix: s.State.ReceivedIpv4,
- Ipv6Prefix: s.State.ReceivedIpv6,
- EndOfData: s.State.EndOfData,
- Error: s.State.Error,
- },
- RpkiSent: config.RpkiSent{
- SerialQuery: s.State.SerialQuery,
- ResetQuery: s.State.ResetQuery,
- },
- },
- },
- }
- servers = append(servers, server)
- }
- return servers, nil
-}
-
-func (cli *Client) GetROA(family bgp.RouteFamily) ([]*api.Roa, error) {
- rsp, err := cli.cli.GetRoa(context.Background(), &api.GetRoaRequest{
- Family: uint32(family),
- })
- if err != nil {
- return nil, err
- }
- return rsp.Roas, nil
-}
-
-func (cli *Client) AddRPKIServer(address string, port, lifetime int) error {
- _, err := cli.cli.AddRpki(context.Background(), &api.AddRpkiRequest{
- Address: address,
- Port: uint32(port),
- Lifetime: int64(lifetime),
- })
- return err
-}
-
-func (cli *Client) DeleteRPKIServer(address string) error {
- _, err := cli.cli.DeleteRpki(context.Background(), &api.DeleteRpkiRequest{
- Address: address,
- })
- return err
-}
-
-func (cli *Client) EnableRPKIServer(address string) error {
- _, err := cli.cli.EnableRpki(context.Background(), &api.EnableRpkiRequest{
- Address: address,
- })
- return err
-}
-
-func (cli *Client) DisableRPKIServer(address string) error {
- _, err := cli.cli.DisableRpki(context.Background(), &api.DisableRpkiRequest{
- Address: address,
- })
- return err
-}
-
-func (cli *Client) ResetRPKIServer(address string) error {
- _, err := cli.cli.ResetRpki(context.Background(), &api.ResetRpkiRequest{
- Address: address,
- })
- return err
-}
-
-func (cli *Client) SoftResetRPKIServer(address string) error {
- _, err := cli.cli.SoftResetRpki(context.Background(), &api.SoftResetRpkiRequest{
- Address: address,
- })
- return err
-}
-
-func (cli *Client) ValidateRIBWithRPKI(prefixes ...string) error {
- req := &api.ValidateRibRequest{}
- if len(prefixes) > 1 {
- return fmt.Errorf("too many prefixes: %d", len(prefixes))
- } else if len(prefixes) == 1 {
- req.Prefix = prefixes[0]
- }
- _, err := cli.cli.ValidateRib(context.Background(), req)
- return err
-}
-
-func (cli *Client) AddBMP(c *config.BmpServerConfig) error {
- _, err := cli.cli.AddBmp(context.Background(), &api.AddBmpRequest{
- Address: c.Address,
- Port: c.Port,
- Type: api.AddBmpRequest_MonitoringPolicy(c.RouteMonitoringPolicy.ToInt()),
- })
- return err
-}
-
-func (cli *Client) DeleteBMP(c *config.BmpServerConfig) error {
- _, err := cli.cli.DeleteBmp(context.Background(), &api.DeleteBmpRequest{
- Address: c.Address,
- Port: c.Port,
- })
- return err
-}
-
-type MonitorRIBClient struct {
- stream api.GobgpApi_MonitorRibClient
-}
-
-func (c *MonitorRIBClient) Recv() (*api.Destination, error) {
- return c.stream.Recv()
-}
-
-func (cli *Client) MonitorRIB(family bgp.RouteFamily, current bool) (*MonitorRIBClient, error) {
- stream, err := cli.cli.MonitorRib(context.Background(), &api.MonitorRibRequest{
- Table: &api.Table{
- Type: api.Resource_GLOBAL,
- Family: uint32(family),
- },
- Current: current,
- })
- if err != nil {
- return nil, err
- }
- return &MonitorRIBClient{stream}, nil
-}
-
-func (cli *Client) MonitorAdjRIBIn(name string, family bgp.RouteFamily, current bool) (*MonitorRIBClient, error) {
- stream, err := cli.cli.MonitorRib(context.Background(), &api.MonitorRibRequest{
- Table: &api.Table{
- Type: api.Resource_ADJ_IN,
- Name: name,
- Family: uint32(family),
- },
- Current: current,
- })
- if err != nil {
- return nil, err
- }
- return &MonitorRIBClient{stream}, nil
-}
-
-type MonitorNeighborStateClient struct {
- stream api.GobgpApi_MonitorPeerStateClient
-}
-
-func (c *MonitorNeighborStateClient) Recv() (*config.Neighbor, error) {
- p, err := c.stream.Recv()
- if err != nil {
- return nil, err
- }
- return server.NewNeighborFromAPIStruct(p)
-}
-
-func (cli *Client) MonitorNeighborState(name string, current bool) (*MonitorNeighborStateClient, error) {
- stream, err := cli.cli.MonitorPeerState(context.Background(), &api.Arguments{
- Name: name,
- Current: current,
- })
- if err != nil {
- return nil, err
- }
- return &MonitorNeighborStateClient{stream}, nil
-}
diff --git a/internal/pkg/client/client_test.go b/internal/pkg/client/client_test.go
deleted file mode 100644
index a737172d..00000000
--- a/internal/pkg/client/client_test.go
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (C) 2016 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.
-
-package client
-
-import (
- "testing"
- "time"
-
- "github.com/osrg/gobgp/internal/pkg/config"
- "github.com/osrg/gobgp/pkg/server"
- "github.com/stretchr/testify/assert"
-)
-
-func TestGetNeighbor(test *testing.T) {
- assert := assert.New(test)
- s := server.NewBgpServer()
- go s.Serve()
- g := server.NewGrpcServer(s, ":50051")
- go g.Serve()
- time.Sleep(time.Second)
- cli, err := New("")
- assert.Nil(err)
- err = cli.StartServer(&config.Global{
- Config: config.GlobalConfig{
- As: 1,
- RouterId: "1.1.1.1",
- Port: 1790,
- },
- })
- assert.Nil(err)
- err = cli.AddNeighbor(&config.Neighbor{
- Config: config.NeighborConfig{
- NeighborAddress: "10.0.0.1",
- PeerAs: 2,
- },
- })
- assert.Nil(err)
- _, err = cli.GetNeighbor("10.0.0.1")
- assert.Nil(err)
- _, err = cli.GetNeighbor("10.0.0.2")
- assert.Equal(err.Error(), "not found neighbor 10.0.0.2")
-}
diff --git a/internal/pkg/table/message_test.go b/internal/pkg/table/message_test.go
index 28a380fe..8b3287d3 100644
--- a/internal/pkg/table/message_test.go
+++ b/internal/pkg/table/message_test.go
@@ -480,7 +480,7 @@ func TestBMP(t *testing.T) {
}
func unreachIndex(msgs []*bgp.BGPMessage) int {
- for i, _ := range msgs {
+ for i := range msgs {
for _, a := range msgs[i].Body.(*bgp.BGPUpdate).PathAttributes {
if a.GetType() == bgp.BGP_ATTR_TYPE_MP_UNREACH_NLRI {
return i
diff --git a/internal/pkg/table/path_test.go b/internal/pkg/table/path_test.go
index 449c4a8e..421502fa 100644
--- a/internal/pkg/table/path_test.go
+++ b/internal/pkg/table/path_test.go
@@ -205,7 +205,7 @@ func TestPathPrependAsnToFullPathAttr(t *testing.T) {
origin := bgp.NewPathAttributeOrigin(0)
asns := make([]uint16, 255)
- for i, _ := range asns {
+ for i := range asns {
asns[i] = 65000 + uint16(i)
}
diff --git a/pkg/server/grpc_server.go b/pkg/server/grpc_server.go
index 79878815..abce6ab4 100644
--- a/pkg/server/grpc_server.go
+++ b/pkg/server/grpc_server.go
@@ -29,6 +29,7 @@ import (
farm "github.com/dgryski/go-farm"
"github.com/golang/protobuf/ptypes/any"
+ "github.com/golang/protobuf/ptypes/empty"
log "github.com/sirupsen/logrus"
"golang.org/x/net/context"
"google.golang.org/grpc"
@@ -131,17 +132,13 @@ func NewAfiSafiConfigFromConfigStruct(c *config.AfiSafi) *api.AfiSafiConfig {
func NewApplyPolicyFromConfigStruct(c *config.ApplyPolicy) *api.ApplyPolicy {
applyPolicy := &api.ApplyPolicy{
ImportPolicy: &api.PolicyAssignment{
- Type: api.PolicyType_IMPORT,
+ Type: api.PolicyDirection_IMPORT,
Default: api.RouteAction(c.Config.DefaultImportPolicy.ToInt()),
},
ExportPolicy: &api.PolicyAssignment{
- Type: api.PolicyType_EXPORT,
+ Type: api.PolicyDirection_EXPORT,
Default: api.RouteAction(c.Config.DefaultExportPolicy.ToInt()),
},
- InPolicy: &api.PolicyAssignment{
- Type: api.PolicyType_IN,
- Default: api.RouteAction(c.Config.DefaultInPolicy.ToInt()),
- },
}
for _, pname := range c.Config.ImportPolicyList {
@@ -150,9 +147,6 @@ func NewApplyPolicyFromConfigStruct(c *config.ApplyPolicy) *api.ApplyPolicy {
for _, pname := range c.Config.ExportPolicyList {
applyPolicy.ExportPolicy.Policies = append(applyPolicy.ExportPolicy.Policies, &api.Policy{Name: pname})
}
- for _, pname := range c.Config.InPolicyList {
- applyPolicy.InPolicy.Policies = append(applyPolicy.InPolicy.Policies, &api.Policy{Name: pname})
- }
return applyPolicy
}
@@ -299,27 +293,27 @@ func NewPeerFromConfigStruct(pconf *config.Neighbor) *api.Peer {
RemovePrivateAs: removePrivateAs,
ReplacePeerAs: pconf.AsPathOptions.Config.ReplacePeerAs,
},
- Info: &api.PeerState{
- BgpState: string(s.SessionState),
- AdminState: api.PeerState_AdminState(s.AdminState.ToInt()),
+ State: &api.PeerState{
+ SessionState: api.PeerState_SessionState(api.PeerState_SessionState_value[strings.ToUpper(string(s.SessionState))]),
+ AdminState: api.PeerState_AdminState(s.AdminState.ToInt()),
Messages: &api.Messages{
Received: &api.Message{
- NOTIFICATION: s.Messages.Received.Notification,
- UPDATE: s.Messages.Received.Update,
- OPEN: s.Messages.Received.Open,
- KEEPALIVE: s.Messages.Received.Keepalive,
- REFRESH: s.Messages.Received.Refresh,
- DISCARDED: s.Messages.Received.Discarded,
- TOTAL: s.Messages.Received.Total,
+ Notification: s.Messages.Received.Notification,
+ Update: s.Messages.Received.Update,
+ Open: s.Messages.Received.Open,
+ Keepalive: s.Messages.Received.Keepalive,
+ Refresh: s.Messages.Received.Refresh,
+ Discarded: s.Messages.Received.Discarded,
+ Total: s.Messages.Received.Total,
},
Sent: &api.Message{
- NOTIFICATION: s.Messages.Sent.Notification,
- UPDATE: s.Messages.Sent.Update,
- OPEN: s.Messages.Sent.Open,
- KEEPALIVE: s.Messages.Sent.Keepalive,
- REFRESH: s.Messages.Sent.Refresh,
- DISCARDED: s.Messages.Sent.Discarded,
- TOTAL: s.Messages.Sent.Total,
+ Notification: s.Messages.Sent.Notification,
+ Update: s.Messages.Sent.Update,
+ Open: s.Messages.Sent.Open,
+ Keepalive: s.Messages.Sent.Keepalive,
+ Refresh: s.Messages.Sent.Refresh,
+ Discarded: s.Messages.Sent.Discarded,
+ Total: s.Messages.Sent.Total,
},
},
Received: s.AdjTable.Received,
@@ -328,6 +322,7 @@ func NewPeerFromConfigStruct(pconf *config.Neighbor) *api.Peer {
PeerAs: s.PeerAs,
PeerType: uint32(s.PeerType.ToInt()),
NeighborAddress: pconf.State.NeighborAddress,
+ Queues: &api.Queues{},
},
EbgpMultihop: &api.EbgpMultihop{
Enabled: pconf.EbgpMultihop.Config.Enabled,
@@ -441,16 +436,17 @@ func NewPeerGroupFromConfigStruct(pconf *config.PeerGroup) *api.PeerGroup {
}
}
-func (s *Server) GetNeighbor(ctx context.Context, arg *api.GetNeighborRequest) (*api.GetNeighborResponse, error) {
+func (s *Server) ListPeer(arg *api.ListPeerRequest, stream api.GobgpApi_ListPeerServer) error {
if arg == nil {
- return nil, fmt.Errorf("invalid request")
+ return fmt.Errorf("invalid request")
}
neighbors := s.bgpServer.GetNeighbor(arg.Address, arg.EnableAdvertised)
- peers := make([]*api.Peer, 0, len(neighbors))
for _, e := range neighbors {
- peers = append(peers, NewPeerFromConfigStruct(e))
+ if err := stream.Send(&api.ListPeerResponse{Peer: NewPeerFromConfigStruct(e)}); err != nil {
+ return err
+ }
}
- return &api.GetNeighborResponse{Peers: peers}, nil
+ return nil
}
func NewValidationFromTableStruct(v *table.Validation) *api.RPKIValidation {
@@ -515,84 +511,7 @@ func getValidation(v []*table.Validation, i int) *table.Validation {
}
}
-func (s *Server) GetRib(ctx context.Context, arg *api.GetRibRequest) (*api.GetRibResponse, error) {
- if arg == nil || arg.Table == nil {
- return nil, fmt.Errorf("invalid request")
- }
- f := func() []*table.LookupPrefix {
- l := make([]*table.LookupPrefix, 0, len(arg.Table.Destinations))
- for _, p := range arg.Table.Destinations {
- l = append(l, &table.LookupPrefix{
- Prefix: p.Prefix,
- LookupOption: func() table.LookupOption {
- if p.LongerPrefixes {
- return table.LOOKUP_LONGER
- } else if p.ShorterPrefixes {
- return table.LOOKUP_SHORTER
- }
- return table.LOOKUP_EXACT
- }(),
- })
- }
- return l
- }
-
- var in bool
- var err error
- var tbl *table.Table
- var v []*table.Validation
-
- family := bgp.RouteFamily(arg.Table.Family)
- switch arg.Table.Type {
- case api.Resource_LOCAL, api.Resource_GLOBAL:
- tbl, v, err = s.bgpServer.GetRib(arg.Table.Name, family, f())
- case api.Resource_ADJ_IN:
- in = true
- fallthrough
- case api.Resource_ADJ_OUT:
- tbl, v, err = s.bgpServer.GetAdjRib(arg.Table.Name, family, in, f())
- case api.Resource_VRF:
- tbl, err = s.bgpServer.GetVrfRib(arg.Table.Name, family, []*table.LookupPrefix{})
- default:
- return nil, fmt.Errorf("unsupported resource type: %v", arg.Table.Type)
- }
-
- if err != nil {
- return nil, err
- }
-
- tblDsts := tbl.GetDestinations()
- dsts := make([]*api.Destination, 0, len(tblDsts))
- idx := 0
- for _, dst := range tblDsts {
- dsts = append(dsts, &api.Destination{
- Prefix: dst.GetNlri().String(),
- Paths: func(paths []*table.Path) []*api.Path {
- l := make([]*api.Path, 0, len(paths))
- for i, p := range paths {
- pp := ToPathApi(p, getValidation(v, idx))
- idx++
- switch arg.Table.Type {
- case api.Resource_LOCAL, api.Resource_GLOBAL:
- if i == 0 && !table.SelectionOptions.DisableBestPathSelection {
- pp.Best = true
- }
- }
- l = append(l, pp)
- }
- return l
- }(dst.GetAllKnownPathList()),
- })
- }
-
- return &api.GetRibResponse{Table: &api.Table{
- Type: arg.Table.Type,
- Family: uint32(tbl.GetRoutefamily()),
- Destinations: dsts},
- }, err
-}
-
-func (s *Server) GetPath(arg *api.GetPathRequest, stream api.GobgpApi_GetPathServer) error {
+func (s *Server) ListPath(arg *api.ListPathRequest, stream api.GobgpApi_ListPathServer) error {
f := func() []*table.LookupPrefix {
l := make([]*table.LookupPrefix, 0, len(arg.Prefixes))
for _, p := range arg.Prefixes {
@@ -629,6 +548,10 @@ func (s *Server) GetPath(arg *api.GetPathRequest, stream api.GobgpApi_GetPathSer
idx := 0
return func() error {
for _, dst := range tbl.GetDestinations() {
+ d := api.Destination{
+ Prefix: dst.GetNlri().String(),
+ Paths: make([]*api.Path, 0, len(dst.GetAllKnownPathList())),
+ }
for i, path := range dst.GetAllKnownPathList() {
p := ToPathApi(path, getValidation(v, idx))
idx++
@@ -638,31 +561,31 @@ func (s *Server) GetPath(arg *api.GetPathRequest, stream api.GobgpApi_GetPathSer
p.Best = true
}
}
- if err := stream.Send(p); err != nil {
- return err
- }
+ d.Paths = append(d.Paths, p)
+ }
+ if err := stream.Send(&api.ListPathResponse{Destination: &d}); err != nil {
+ return err
}
}
return nil
}()
}
-func (s *Server) MonitorRib(arg *api.MonitorRibRequest, stream api.GobgpApi_MonitorRibServer) error {
- if arg == nil || arg.Table == nil {
+func (s *Server) MonitorTable(arg *api.MonitorTableRequest, stream api.GobgpApi_MonitorTableServer) error {
+ if arg == nil {
return fmt.Errorf("invalid request")
}
- t := arg.Table
w, err := func() (*Watcher, error) {
- switch t.Type {
+ switch arg.Type {
case api.Resource_GLOBAL:
return s.bgpServer.Watch(WatchBestPath(arg.Current)), nil
case api.Resource_ADJ_IN:
- if t.PostPolicy {
+ if arg.PostPolicy {
return s.bgpServer.Watch(WatchPostUpdate(arg.Current)), nil
}
return s.bgpServer.Watch(WatchUpdate(arg.Current)), nil
default:
- return nil, fmt.Errorf("unsupported resource type: %v", t.Type)
+ return nil, fmt.Errorf("unsupported resource type: %v", arg.Type)
}
}()
if err != nil {
@@ -673,22 +596,11 @@ func (s *Server) MonitorRib(arg *api.MonitorRibRequest, stream api.GobgpApi_Moni
defer func() { w.Stop() }()
sendPath := func(pathList []*table.Path) error {
- dsts := make(map[string]*api.Destination)
for _, path := range pathList {
- if path == nil || (t.Family != 0 && bgp.RouteFamily(t.Family) != path.GetRouteFamily()) {
+ if path == nil || (arg.Family != 0 && bgp.RouteFamily(arg.Family) != path.GetRouteFamily()) {
continue
}
- if dst, y := dsts[path.GetNlri().String()]; y {
- dst.Paths = append(dst.Paths, ToPathApi(path, nil))
- } else {
- dsts[path.GetNlri().String()] = &api.Destination{
- Prefix: path.GetNlri().String(),
- Paths: []*api.Path{ToPathApi(path, nil)},
- }
- }
- }
- for _, dst := range dsts {
- if err := stream.Send(dst); err != nil {
+ if err := stream.Send(&api.MonitorTableResponse{Path: ToPathApi(path, nil)}); err != nil {
return err
}
}
@@ -721,7 +633,7 @@ func (s *Server) MonitorRib(arg *api.MonitorRibRequest, stream api.GobgpApi_Moni
}()
}
-func (s *Server) MonitorPeerState(arg *api.Arguments, stream api.GobgpApi_MonitorPeerStateServer) error {
+func (s *Server) MonitorPeer(arg *api.MonitorPeerRequest, stream api.GobgpApi_MonitorPeerServer) error {
if arg == nil {
return fmt.Errorf("invalid request")
}
@@ -732,30 +644,31 @@ func (s *Server) MonitorPeerState(arg *api.Arguments, stream api.GobgpApi_Monito
for ev := range w.Event() {
switch msg := ev.(type) {
case *WatchEventPeerState:
- if len(arg.Name) > 0 && arg.Name != msg.PeerAddress.String() && arg.Name != msg.PeerInterface {
+ if len(arg.Address) > 0 && arg.Address != msg.PeerAddress.String() && arg.Address != msg.PeerInterface {
continue
}
- if err := stream.Send(&api.Peer{
- Conf: &api.PeerConf{
- PeerAs: msg.PeerAS,
- LocalAs: msg.LocalAS,
- NeighborAddress: msg.PeerAddress.String(),
- Id: msg.PeerID.String(),
- NeighborInterface: msg.PeerInterface,
- },
- Info: &api.PeerState{
- PeerAs: msg.PeerAS,
- LocalAs: msg.LocalAS,
- NeighborAddress: msg.PeerAddress.String(),
- BgpState: msg.State.String(),
- AdminState: api.PeerState_AdminState(msg.AdminState),
- },
- Transport: &api.Transport{
- LocalAddress: msg.LocalAddress.String(),
- LocalPort: uint32(msg.LocalPort),
- RemotePort: uint32(msg.PeerPort),
- },
- }); err != nil {
+ if err := stream.Send(&api.MonitorPeerResponse{
+ Peer: &api.Peer{
+ Conf: &api.PeerConf{
+ PeerAs: msg.PeerAS,
+ LocalAs: msg.LocalAS,
+ NeighborAddress: msg.PeerAddress.String(),
+ Id: msg.PeerID.String(),
+ NeighborInterface: msg.PeerInterface,
+ },
+ State: &api.PeerState{
+ PeerAs: msg.PeerAS,
+ LocalAs: msg.LocalAS,
+ NeighborAddress: msg.PeerAddress.String(),
+ SessionState: api.PeerState_SessionState(int(msg.State) + 1),
+ AdminState: api.PeerState_AdminState(msg.AdminState),
+ },
+ Transport: &api.Transport{
+ LocalAddress: msg.LocalAddress.String(),
+ LocalPort: uint32(msg.LocalPort),
+ RemotePort: uint32(msg.PeerPort),
+ },
+ }}); err != nil {
return err
}
}
@@ -764,46 +677,45 @@ func (s *Server) MonitorPeerState(arg *api.Arguments, stream api.GobgpApi_Monito
}()
}
-func (s *Server) ResetNeighbor(ctx context.Context, arg *api.ResetNeighborRequest) (*api.ResetNeighborResponse, error) {
- return &api.ResetNeighborResponse{}, s.bgpServer.ResetNeighbor(arg.Address, arg.Communication)
-}
-
-func (s *Server) SoftResetNeighbor(ctx context.Context, arg *api.SoftResetNeighborRequest) (*api.SoftResetNeighborResponse, error) {
- var err error
- addr := arg.Address
- if addr == "all" {
- addr = ""
- }
- family := bgp.RouteFamily(0)
- switch arg.Direction {
- case api.SoftResetNeighborRequest_IN:
- err = s.bgpServer.SoftResetIn(addr, family)
- case api.SoftResetNeighborRequest_OUT:
- err = s.bgpServer.SoftResetOut(addr, family)
- default:
- err = s.bgpServer.SoftReset(addr, family)
+func (s *Server) ResetPeer(ctx context.Context, arg *api.ResetPeerRequest) (*empty.Empty, error) {
+ if arg.Soft {
+ var err error
+ addr := arg.Address
+ if addr == "all" {
+ addr = ""
+ }
+ family := bgp.RouteFamily(0)
+ switch arg.Direction {
+ case api.ResetPeerRequest_IN:
+ err = s.bgpServer.SoftResetIn(addr, family)
+ case api.ResetPeerRequest_OUT:
+ err = s.bgpServer.SoftResetOut(addr, family)
+ default:
+ err = fmt.Errorf("unknown direction")
+ }
+ return &empty.Empty{}, err
}
- return &api.SoftResetNeighborResponse{}, err
+ return &empty.Empty{}, s.bgpServer.ResetNeighbor(arg.Address, arg.Communication)
}
-func (s *Server) ShutdownNeighbor(ctx context.Context, arg *api.ShutdownNeighborRequest) (*api.ShutdownNeighborResponse, error) {
- return &api.ShutdownNeighborResponse{}, s.bgpServer.ShutdownNeighbor(arg.Address, arg.Communication)
+func (s *Server) ShutdownPeer(ctx context.Context, arg *api.ShutdownPeerRequest) (*empty.Empty, error) {
+ return &empty.Empty{}, s.bgpServer.ShutdownNeighbor(arg.Address, arg.Communication)
}
-func (s *Server) EnableNeighbor(ctx context.Context, arg *api.EnableNeighborRequest) (*api.EnableNeighborResponse, error) {
- return &api.EnableNeighborResponse{}, s.bgpServer.EnableNeighbor(arg.Address)
+func (s *Server) EnablePeer(ctx context.Context, arg *api.EnablePeerRequest) (*empty.Empty, error) {
+ return &empty.Empty{}, s.bgpServer.EnableNeighbor(arg.Address)
}
-func (s *Server) DisableNeighbor(ctx context.Context, arg *api.DisableNeighborRequest) (*api.DisableNeighborResponse, error) {
- return &api.DisableNeighborResponse{}, s.bgpServer.DisableNeighbor(arg.Address, arg.Communication)
+func (s *Server) DisablePeer(ctx context.Context, arg *api.DisablePeerRequest) (*empty.Empty, error) {
+ return &empty.Empty{}, s.bgpServer.DisableNeighbor(arg.Address, arg.Communication)
}
-func (s *Server) UpdatePolicy(ctx context.Context, arg *api.UpdatePolicyRequest) (*api.UpdatePolicyResponse, error) {
+func (s *Server) UpdatePolicy(ctx context.Context, arg *api.UpdatePolicyRequest) (*empty.Empty, error) {
rp, err := NewRoutingPolicyFromApiStruct(arg)
if err != nil {
return nil, err
}
- return &api.UpdatePolicyResponse{}, s.bgpServer.UpdatePolicy(*rp)
+ return &empty.Empty{}, s.bgpServer.UpdatePolicy(*rp)
}
func NewAPIRoutingPolicyFromConfigStruct(c *config.RoutingPolicy) (*api.RoutingPolicy, error) {
@@ -929,7 +841,7 @@ func (s *Server) AddPath(ctx context.Context, arg *api.AddPathRequest) (*api.Add
return &api.AddPathResponse{Uuid: uuid}, err
}
-func (s *Server) DeletePath(ctx context.Context, arg *api.DeletePathRequest) (*api.DeletePathResponse, error) {
+func (s *Server) DeletePath(ctx context.Context, arg *api.DeletePathRequest) (*empty.Empty, error) {
pathList, err := func() ([]*table.Path, error) {
if arg.Path != nil {
arg.Path.IsWithdraw = true
@@ -940,22 +852,22 @@ func (s *Server) DeletePath(ctx context.Context, arg *api.DeletePathRequest) (*a
if err != nil {
return nil, err
}
- return &api.DeletePathResponse{}, s.bgpServer.DeletePath(arg.Uuid, bgp.RouteFamily(arg.Family), arg.VrfId, pathList)
+ return &empty.Empty{}, s.bgpServer.DeletePath(arg.Uuid, bgp.RouteFamily(arg.Family), arg.VrfId, pathList)
}
-func (s *Server) EnableMrt(ctx context.Context, arg *api.EnableMrtRequest) (*api.EnableMrtResponse, error) {
- return &api.EnableMrtResponse{}, s.bgpServer.EnableMrt(&config.MrtConfig{
+func (s *Server) EnableMrt(ctx context.Context, arg *api.EnableMrtRequest) (*empty.Empty, error) {
+ return &empty.Empty{}, s.bgpServer.EnableMrt(&config.MrtConfig{
RotationInterval: arg.Interval,
DumpType: config.IntToMrtTypeMap[int(arg.DumpType)],
FileName: arg.Filename,
})
}
-func (s *Server) DisableMrt(ctx context.Context, arg *api.DisableMrtRequest) (*api.DisableMrtResponse, error) {
- return &api.DisableMrtResponse{}, s.bgpServer.DisableMrt(&config.MrtConfig{})
+func (s *Server) DisableMrt(ctx context.Context, arg *api.DisableMrtRequest) (*empty.Empty, error) {
+ return &empty.Empty{}, s.bgpServer.DisableMrt(&config.MrtConfig{})
}
-func (s *Server) InjectMrt(stream api.GobgpApi_InjectMrtServer) error {
+func (s *Server) AddPathStream(stream api.GobgpApi_AddPathStreamServer) error {
for {
arg, err := stream.Recv()
@@ -977,84 +889,81 @@ func (s *Server) InjectMrt(stream api.GobgpApi_InjectMrtServer) error {
}
}
}
- return stream.SendAndClose(&api.InjectMrtResponse{})
+ return stream.SendAndClose(&empty.Empty{})
}
-func (s *Server) AddBmp(ctx context.Context, arg *api.AddBmpRequest) (*api.AddBmpResponse, error) {
+func (s *Server) AddBmp(ctx context.Context, arg *api.AddBmpRequest) (*empty.Empty, error) {
t, ok := config.IntToBmpRouteMonitoringPolicyTypeMap[int(arg.Type)]
if !ok {
return nil, fmt.Errorf("invalid bmp route monitoring policy: %d", arg.Type)
}
- return &api.AddBmpResponse{}, s.bgpServer.AddBmp(&config.BmpServerConfig{
+ return &empty.Empty{}, s.bgpServer.AddBmp(&config.BmpServerConfig{
Address: arg.Address,
Port: arg.Port,
RouteMonitoringPolicy: t,
})
}
-func (s *Server) DeleteBmp(ctx context.Context, arg *api.DeleteBmpRequest) (*api.DeleteBmpResponse, error) {
- return &api.DeleteBmpResponse{}, s.bgpServer.DeleteBmp(&config.BmpServerConfig{
+func (s *Server) DeleteBmp(ctx context.Context, arg *api.DeleteBmpRequest) (*empty.Empty, error) {
+ return &empty.Empty{}, s.bgpServer.DeleteBmp(&config.BmpServerConfig{
Address: arg.Address,
Port: arg.Port,
})
}
-func (s *Server) ValidateRib(ctx context.Context, arg *api.ValidateRibRequest) (*api.ValidateRibResponse, error) {
- return &api.ValidateRibResponse{}, nil
-}
-
-func (s *Server) AddRpki(ctx context.Context, arg *api.AddRpkiRequest) (*api.AddRpkiResponse, error) {
- return &api.AddRpkiResponse{}, s.bgpServer.AddRpki(&config.RpkiServerConfig{
+func (s *Server) AddRpki(ctx context.Context, arg *api.AddRpkiRequest) (*empty.Empty, error) {
+ return &empty.Empty{}, s.bgpServer.AddRpki(&config.RpkiServerConfig{
Address: arg.Address,
Port: arg.Port,
RecordLifetime: arg.Lifetime,
})
}
-func (s *Server) DeleteRpki(ctx context.Context, arg *api.DeleteRpkiRequest) (*api.DeleteRpkiResponse, error) {
- return &api.DeleteRpkiResponse{}, s.bgpServer.DeleteRpki(&config.RpkiServerConfig{
+func (s *Server) DeleteRpki(ctx context.Context, arg *api.DeleteRpkiRequest) (*empty.Empty, error) {
+ return &empty.Empty{}, s.bgpServer.DeleteRpki(&config.RpkiServerConfig{
Address: arg.Address,
Port: arg.Port,
})
}
-func (s *Server) EnableRpki(ctx context.Context, arg *api.EnableRpkiRequest) (*api.EnableRpkiResponse, error) {
- return &api.EnableRpkiResponse{}, s.bgpServer.EnableRpki(&config.RpkiServerConfig{
- Address: arg.Address,
- })
-}
-
-func (s *Server) DisableRpki(ctx context.Context, arg *api.DisableRpkiRequest) (*api.DisableRpkiResponse, error) {
- return &api.DisableRpkiResponse{}, s.bgpServer.DisableRpki(&config.RpkiServerConfig{
+func (s *Server) EnableRpki(ctx context.Context, arg *api.EnableRpkiRequest) (*empty.Empty, error) {
+ return &empty.Empty{}, s.bgpServer.EnableRpki(&config.RpkiServerConfig{
Address: arg.Address,
})
}
-func (s *Server) ResetRpki(ctx context.Context, arg *api.ResetRpkiRequest) (*api.ResetRpkiResponse, error) {
- return &api.ResetRpkiResponse{}, s.bgpServer.ResetRpki(&config.RpkiServerConfig{
+func (s *Server) DisableRpki(ctx context.Context, arg *api.DisableRpkiRequest) (*empty.Empty, error) {
+ return &empty.Empty{}, s.bgpServer.DisableRpki(&config.RpkiServerConfig{
Address: arg.Address,
})
}
-func (s *Server) SoftResetRpki(ctx context.Context, arg *api.SoftResetRpkiRequest) (*api.SoftResetRpkiResponse, error) {
- return &api.SoftResetRpkiResponse{}, s.bgpServer.SoftResetRpki(&config.RpkiServerConfig{
- Address: arg.Address,
- })
+func (s *Server) ResetRpki(ctx context.Context, arg *api.ResetRpkiRequest) (*empty.Empty, error) {
+ var err error
+ if arg.Soft {
+ err = s.bgpServer.SoftResetRpki(&config.RpkiServerConfig{
+ Address: arg.Address,
+ })
+ } else {
+ err = s.bgpServer.ResetRpki(&config.RpkiServerConfig{
+ Address: arg.Address,
+ })
+ }
+ return &empty.Empty{}, err
}
-func (s *Server) GetRpki(ctx context.Context, arg *api.GetRpkiRequest) (*api.GetRpkiResponse, error) {
+func (s *Server) ListRpki(arg *api.ListRpkiRequest, stream api.GobgpApi_ListRpkiServer) error {
servers, err := s.bgpServer.GetRpki()
if err != nil {
- return nil, err
+ return err
}
- l := make([]*api.Rpki, 0, len(servers))
for _, s := range servers {
received := &s.State.RpkiMessages.RpkiReceived
sent := &s.State.RpkiMessages.RpkiSent
rpki := &api.Rpki{
Conf: &api.RPKIConf{
Address: s.Config.Address,
- RemotePort: strconv.Itoa(int(s.Config.Port)),
+ RemotePort: uint32(s.Config.Port),
},
State: &api.RPKIState{
Uptime: s.State.Uptime,
@@ -1076,26 +985,33 @@ func (s *Server) GetRpki(ctx context.Context, arg *api.GetRpkiRequest) (*api.Get
ResetQuery: sent.ResetQuery,
},
}
- l = append(l, rpki)
+ if err := stream.Send(&api.ListRpkiResponse{Server: rpki}); err != nil {
+ return err
+ }
}
- return &api.GetRpkiResponse{Servers: l}, nil
+ return nil
}
-func (s *Server) GetRoa(ctx context.Context, arg *api.GetRoaRequest) (*api.GetRoaResponse, error) {
+func (s *Server) ListRpkiTable(arg *api.ListRpkiTableRequest, stream api.GobgpApi_ListRpkiTableServer) error {
roas, err := s.bgpServer.GetRoa(bgp.RouteFamily(arg.Family))
if err != nil {
- return nil, err
+ return err
}
- return &api.GetRoaResponse{Roas: NewRoaListFromTableStructList(roas)}, nil
+ for _, roa := range NewRoaListFromTableStructList(roas) {
+ if err := stream.Send(&api.ListRpkiTableResponse{Roa: roa}); err != nil {
+ return err
+ }
+ }
+ return nil
}
-func (s *Server) EnableZebra(ctx context.Context, arg *api.EnableZebraRequest) (*api.EnableZebraResponse, error) {
+func (s *Server) EnableZebra(ctx context.Context, arg *api.EnableZebraRequest) (*empty.Empty, error) {
for _, p := range arg.RouteTypes {
if _, err := zebra.RouteTypeFromString(p); err != nil {
- return &api.EnableZebraResponse{}, err
+ return &empty.Empty{}, err
}
}
- return &api.EnableZebraResponse{}, s.bgpServer.StartZebraClient(&config.ZebraConfig{
+ return &empty.Empty{}, s.bgpServer.StartZebraClient(&config.ZebraConfig{
Url: arg.Url,
RedistributeRouteTypeList: arg.RouteTypes,
Version: uint8(arg.Version),
@@ -1104,7 +1020,7 @@ func (s *Server) EnableZebra(ctx context.Context, arg *api.EnableZebraRequest) (
})
}
-func (s *Server) GetVrf(ctx context.Context, arg *api.GetVrfRequest) (*api.GetVrfResponse, error) {
+func (s *Server) ListVrf(arg *api.ListVrfRequest, stream api.GobgpApi_ListVrfServer) error {
toApi := func(v *table.Vrf) *api.Vrf {
return &api.Vrf{
Name: v.Name,
@@ -1115,14 +1031,15 @@ func (s *Server) GetVrf(ctx context.Context, arg *api.GetVrfRequest) (*api.GetVr
}
}
vrfs := s.bgpServer.GetVrf()
- l := make([]*api.Vrf, 0, len(vrfs))
for _, v := range vrfs {
- l = append(l, toApi(v))
+ if err := stream.Send(&api.ListVrfResponse{Vrf: toApi(v)}); err != nil {
+ return err
+ }
}
- return &api.GetVrfResponse{Vrfs: l}, nil
+ return nil
}
-func (s *Server) AddVrf(ctx context.Context, arg *api.AddVrfRequest) (r *api.AddVrfResponse, err error) {
+func (s *Server) AddVrf(ctx context.Context, arg *api.AddVrfRequest) (*empty.Empty, error) {
if arg == nil || arg.Vrf == nil {
return nil, fmt.Errorf("invalid request")
}
@@ -1138,14 +1055,14 @@ func (s *Server) AddVrf(ctx context.Context, arg *api.AddVrfRequest) (r *api.Add
if err != nil {
return nil, err
}
- return &api.AddVrfResponse{}, s.bgpServer.AddVrf(arg.Vrf.Name, arg.Vrf.Id, rd, im, ex)
+ return &empty.Empty{}, s.bgpServer.AddVrf(arg.Vrf.Name, arg.Vrf.Id, rd, im, ex)
}
-func (s *Server) DeleteVrf(ctx context.Context, arg *api.DeleteVrfRequest) (*api.DeleteVrfResponse, error) {
- if arg == nil || arg.Vrf == nil {
+func (s *Server) DeleteVrf(ctx context.Context, arg *api.DeleteVrfRequest) (*empty.Empty, error) {
+ if arg == nil || arg.Name == "" {
return nil, fmt.Errorf("invalid request")
}
- return &api.DeleteVrfResponse{}, s.bgpServer.DeleteVrf(arg.Vrf.Name)
+ return &empty.Empty{}, s.bgpServer.DeleteVrf(arg.Name)
}
func ReadMpGracefulRestartFromAPIStruct(c *config.MpGracefulRestart, a *api.MpGracefulRestart) {
@@ -1398,34 +1315,34 @@ func NewNeighborFromAPIStruct(a *api.Peer) (*config.Neighbor, error) {
pconf.EbgpMultihop.Config.Enabled = a.EbgpMultihop.Enabled
pconf.EbgpMultihop.Config.MultihopTtl = uint8(a.EbgpMultihop.MultihopTtl)
}
- if a.Info != nil {
- pconf.State.SessionState = config.SessionState(a.Info.BgpState)
- pconf.State.AdminState = config.IntToAdminStateMap[int(a.Info.AdminState)]
-
- pconf.State.AdjTable.Received = a.Info.Received
- pconf.State.AdjTable.Accepted = a.Info.Accepted
- pconf.State.AdjTable.Advertised = a.Info.Advertised
- pconf.State.PeerAs = a.Info.PeerAs
- pconf.State.PeerType = config.IntToPeerTypeMap[int(a.Info.PeerType)]
- pconf.State.NeighborAddress = a.Info.NeighborAddress
-
- if a.Info.Messages != nil {
- if a.Info.Messages.Sent != nil {
- pconf.State.Messages.Sent.Update = a.Info.Messages.Sent.UPDATE
- pconf.State.Messages.Sent.Notification = a.Info.Messages.Sent.NOTIFICATION
- pconf.State.Messages.Sent.Open = a.Info.Messages.Sent.OPEN
- pconf.State.Messages.Sent.Refresh = a.Info.Messages.Sent.REFRESH
- pconf.State.Messages.Sent.Keepalive = a.Info.Messages.Sent.KEEPALIVE
- pconf.State.Messages.Sent.Discarded = a.Info.Messages.Sent.DISCARDED
- pconf.State.Messages.Sent.Total = a.Info.Messages.Sent.TOTAL
+ if a.State != nil {
+ pconf.State.SessionState = config.SessionState(strings.ToUpper(string(a.State.SessionState)))
+ pconf.State.AdminState = config.IntToAdminStateMap[int(a.State.AdminState)]
+
+ pconf.State.AdjTable.Received = a.State.Received
+ pconf.State.AdjTable.Accepted = a.State.Accepted
+ pconf.State.AdjTable.Advertised = a.State.Advertised
+ pconf.State.PeerAs = a.State.PeerAs
+ pconf.State.PeerType = config.IntToPeerTypeMap[int(a.State.PeerType)]
+ pconf.State.NeighborAddress = a.State.NeighborAddress
+
+ if a.State.Messages != nil {
+ if a.State.Messages.Sent != nil {
+ pconf.State.Messages.Sent.Update = a.State.Messages.Sent.Update
+ pconf.State.Messages.Sent.Notification = a.State.Messages.Sent.Notification
+ pconf.State.Messages.Sent.Open = a.State.Messages.Sent.Open
+ pconf.State.Messages.Sent.Refresh = a.State.Messages.Sent.Refresh
+ pconf.State.Messages.Sent.Keepalive = a.State.Messages.Sent.Keepalive
+ pconf.State.Messages.Sent.Discarded = a.State.Messages.Sent.Discarded
+ pconf.State.Messages.Sent.Total = a.State.Messages.Sent.Total
}
- if a.Info.Messages.Received != nil {
- pconf.State.Messages.Received.Update = a.Info.Messages.Received.UPDATE
- pconf.State.Messages.Received.Open = a.Info.Messages.Received.OPEN
- pconf.State.Messages.Received.Refresh = a.Info.Messages.Received.REFRESH
- pconf.State.Messages.Received.Keepalive = a.Info.Messages.Received.KEEPALIVE
- pconf.State.Messages.Received.Discarded = a.Info.Messages.Received.DISCARDED
- pconf.State.Messages.Received.Total = a.Info.Messages.Received.TOTAL
+ if a.State.Messages.Received != nil {
+ pconf.State.Messages.Received.Update = a.State.Messages.Received.Update
+ pconf.State.Messages.Received.Open = a.State.Messages.Received.Open
+ pconf.State.Messages.Received.Refresh = a.State.Messages.Received.Refresh
+ pconf.State.Messages.Received.Keepalive = a.State.Messages.Received.Keepalive
+ pconf.State.Messages.Received.Discarded = a.State.Messages.Received.Discarded
+ pconf.State.Messages.Received.Total = a.State.Messages.Received.Total
}
}
}
@@ -1539,22 +1456,22 @@ func NewPeerGroupFromAPIStruct(a *api.PeerGroup) (*config.PeerGroup, error) {
return pconf, nil
}
-func (s *Server) AddNeighbor(ctx context.Context, arg *api.AddNeighborRequest) (*api.AddNeighborResponse, error) {
+func (s *Server) AddPeer(ctx context.Context, arg *api.AddPeerRequest) (*empty.Empty, error) {
c, err := NewNeighborFromAPIStruct(arg.Peer)
if err != nil {
return nil, err
}
- return &api.AddNeighborResponse{}, s.bgpServer.AddNeighbor(c)
+ return &empty.Empty{}, s.bgpServer.AddNeighbor(c)
}
-func (s *Server) DeleteNeighbor(ctx context.Context, arg *api.DeleteNeighborRequest) (*api.DeleteNeighborResponse, error) {
- return &api.DeleteNeighborResponse{}, s.bgpServer.DeleteNeighbor(&config.Neighbor{Config: config.NeighborConfig{
- NeighborAddress: arg.Peer.Conf.NeighborAddress,
- NeighborInterface: arg.Peer.Conf.NeighborInterface,
+func (s *Server) DeletePeer(ctx context.Context, arg *api.DeletePeerRequest) (*empty.Empty, error) {
+ return &empty.Empty{}, s.bgpServer.DeleteNeighbor(&config.Neighbor{Config: config.NeighborConfig{
+ NeighborAddress: arg.Address,
+ NeighborInterface: arg.Interface,
}})
}
-func (s *Server) UpdateNeighbor(ctx context.Context, arg *api.UpdateNeighborRequest) (*api.UpdateNeighborResponse, error) {
+func (s *Server) UpdatePeer(ctx context.Context, arg *api.UpdatePeerRequest) (*api.UpdatePeerResponse, error) {
c, err := NewNeighborFromAPIStruct(arg.Peer)
if err != nil {
return nil, err
@@ -1564,22 +1481,22 @@ func (s *Server) UpdateNeighbor(ctx context.Context, arg *api.UpdateNeighborRequ
return nil, err
}
if arg.DoSoftResetIn && needsSoftResetIn {
- return &api.UpdateNeighborResponse{NeedsSoftResetIn: false}, s.bgpServer.SoftResetIn("", bgp.RouteFamily(0))
+ return &api.UpdatePeerResponse{NeedsSoftResetIn: false}, s.bgpServer.SoftResetIn("", bgp.RouteFamily(0))
}
- return &api.UpdateNeighborResponse{NeedsSoftResetIn: needsSoftResetIn}, nil
+ return &api.UpdatePeerResponse{NeedsSoftResetIn: needsSoftResetIn}, nil
}
-func (s *Server) AddPeerGroup(ctx context.Context, arg *api.AddPeerGroupRequest) (*api.AddPeerGroupResponse, error) {
+func (s *Server) AddPeerGroup(ctx context.Context, arg *api.AddPeerGroupRequest) (*empty.Empty, error) {
c, err := NewPeerGroupFromAPIStruct(arg.PeerGroup)
if err != nil {
return nil, err
}
- return &api.AddPeerGroupResponse{}, s.bgpServer.AddPeerGroup(c)
+ return &empty.Empty{}, s.bgpServer.AddPeerGroup(c)
}
-func (s *Server) DeletePeerGroup(ctx context.Context, arg *api.DeletePeerGroupRequest) (*api.DeletePeerGroupResponse, error) {
- return &api.DeletePeerGroupResponse{}, s.bgpServer.DeletePeerGroup(&config.PeerGroup{Config: config.PeerGroupConfig{
- PeerGroupName: arg.PeerGroup.Conf.PeerGroupName,
+func (s *Server) DeletePeerGroup(ctx context.Context, arg *api.DeletePeerGroupRequest) (*empty.Empty, error) {
+ return &empty.Empty{}, s.bgpServer.DeletePeerGroup(&config.PeerGroup{Config: config.PeerGroupConfig{
+ PeerGroupName: arg.Name,
}})
}
@@ -1598,8 +1515,8 @@ func (s *Server) UpdatePeerGroup(ctx context.Context, arg *api.UpdatePeerGroupRe
return &api.UpdatePeerGroupResponse{NeedsSoftResetIn: needsSoftResetIn}, nil
}
-func (s *Server) AddDynamicNeighbor(ctx context.Context, arg *api.AddDynamicNeighborRequest) (*api.AddDynamicNeighborResponse, error) {
- return &api.AddDynamicNeighborResponse{}, s.bgpServer.AddDynamicNeighbor(&config.DynamicNeighbor{Config: config.DynamicNeighborConfig{
+func (s *Server) AddDynamicNeighbor(ctx context.Context, arg *api.AddDynamicNeighborRequest) (*empty.Empty, error) {
+ return &empty.Empty{}, s.bgpServer.AddDynamicNeighbor(&config.DynamicNeighbor{Config: config.DynamicNeighborConfig{
Prefix: arg.DynamicNeighbor.Prefix,
PeerGroup: arg.DynamicNeighbor.PeerGroup,
}})
@@ -1870,10 +1787,10 @@ func NewDefinedSetFromApiStruct(a *api.DefinedSet) (table.DefinedSet, error) {
var _regexpPrefixMaskLengthRange = regexp.MustCompile(`(\d+)\.\.(\d+)`)
-func (s *Server) GetDefinedSet(ctx context.Context, arg *api.GetDefinedSetRequest) (*api.GetDefinedSetResponse, error) {
+func (s *Server) ListDefinedSet(arg *api.ListDefinedSetRequest, stream api.GobgpApi_ListDefinedSetServer) error {
cd, err := s.bgpServer.GetDefinedSet(table.DefinedType(arg.Type), arg.Name)
if err != nil {
- return nil, err
+ return err
}
sets := make([]*api.DefinedSet, 0)
for _, cs := range cd.PrefixSets {
@@ -1935,11 +1852,15 @@ func (s *Server) GetDefinedSet(ctx context.Context, arg *api.GetDefinedSetReques
}
sets = append(sets, ad)
}
-
- return &api.GetDefinedSetResponse{Sets: sets}, nil
+ for _, set := range sets {
+ if err := stream.Send(&api.ListDefinedSetResponse{Set: set}); err != nil {
+ return err
+ }
+ }
+ return nil
}
-func (s *Server) AddDefinedSet(ctx context.Context, arg *api.AddDefinedSetRequest) (*api.AddDefinedSetResponse, error) {
+func (s *Server) AddDefinedSet(ctx context.Context, arg *api.AddDefinedSetRequest) (*empty.Empty, error) {
if arg == nil || arg.Set == nil {
return nil, fmt.Errorf("invalid request")
}
@@ -1947,10 +1868,10 @@ func (s *Server) AddDefinedSet(ctx context.Context, arg *api.AddDefinedSetReques
if err != nil {
return nil, err
}
- return &api.AddDefinedSetResponse{}, s.bgpServer.AddDefinedSet(set)
+ return &empty.Empty{}, s.bgpServer.AddDefinedSet(set)
}
-func (s *Server) DeleteDefinedSet(ctx context.Context, arg *api.DeleteDefinedSetRequest) (*api.DeleteDefinedSetResponse, error) {
+func (s *Server) DeleteDefinedSet(ctx context.Context, arg *api.DeleteDefinedSetRequest) (*empty.Empty, error) {
if arg == nil || arg.Set == nil {
return nil, fmt.Errorf("invalid request")
}
@@ -1958,10 +1879,10 @@ func (s *Server) DeleteDefinedSet(ctx context.Context, arg *api.DeleteDefinedSet
if err != nil {
return nil, err
}
- return &api.DeleteDefinedSetResponse{}, s.bgpServer.DeleteDefinedSet(set, arg.All)
+ return &empty.Empty{}, s.bgpServer.DeleteDefinedSet(set, arg.All)
}
-func (s *Server) ReplaceDefinedSet(ctx context.Context, arg *api.ReplaceDefinedSetRequest) (*api.ReplaceDefinedSetResponse, error) {
+func (s *Server) ReplaceDefinedSet(ctx context.Context, arg *api.ReplaceDefinedSetRequest) (*empty.Empty, error) {
if arg == nil || arg.Set == nil {
return nil, fmt.Errorf("invalid request")
}
@@ -1969,7 +1890,7 @@ func (s *Server) ReplaceDefinedSet(ctx context.Context, arg *api.ReplaceDefinedS
if err != nil {
return nil, err
}
- return &api.ReplaceDefinedSetResponse{}, s.bgpServer.ReplaceDefinedSet(set)
+ return &empty.Empty{}, s.bgpServer.ReplaceDefinedSet(set)
}
func NewAPIStatementFromTableStruct(t *table.Statement) *api.Statement {
@@ -2507,15 +2428,16 @@ func NewStatementFromApiStruct(a *api.Statement) (*table.Statement, error) {
}, nil
}
-func (s *Server) GetStatement(ctx context.Context, arg *api.GetStatementRequest) (*api.GetStatementResponse, error) {
- l := make([]*api.Statement, 0)
+func (s *Server) ListStatement(arg *api.ListStatementRequest, stream api.GobgpApi_ListStatementServer) error {
for _, s := range s.bgpServer.GetStatement() {
- l = append(l, toStatementApi(s))
+ if err := stream.Send(&api.ListStatementResponse{Statement: toStatementApi(s)}); err != nil {
+ return err
+ }
}
- return &api.GetStatementResponse{Statements: l}, nil
+ return nil
}
-func (s *Server) AddStatement(ctx context.Context, arg *api.AddStatementRequest) (*api.AddStatementResponse, error) {
+func (s *Server) AddStatement(ctx context.Context, arg *api.AddStatementRequest) (*empty.Empty, error) {
if arg == nil || arg.Statement == nil {
return nil, fmt.Errorf("invalid request")
}
@@ -2523,21 +2445,21 @@ func (s *Server) AddStatement(ctx context.Context, arg *api.AddStatementRequest)
if err == nil {
err = s.bgpServer.AddStatement(st)
}
- return &api.AddStatementResponse{}, err
+ return &empty.Empty{}, err
}
-func (s *Server) DeleteStatement(ctx context.Context, arg *api.DeleteStatementRequest) (*api.DeleteStatementResponse, error) {
+func (s *Server) DeleteStatement(ctx context.Context, arg *api.DeleteStatementRequest) (*empty.Empty, error) {
if arg == nil || arg.Statement == nil {
- return nil, fmt.Errorf("invalid request")
+ return &empty.Empty{}, fmt.Errorf("invalid request")
}
st, err := NewStatementFromApiStruct(arg.Statement)
if err == nil {
err = s.bgpServer.DeleteStatement(st, arg.All)
}
- return &api.DeleteStatementResponse{}, err
+ return &empty.Empty{}, err
}
-func (s *Server) ReplaceStatement(ctx context.Context, arg *api.ReplaceStatementRequest) (*api.ReplaceStatementResponse, error) {
+func (s *Server) ReplaceStatement(ctx context.Context, arg *api.ReplaceStatementRequest) (*empty.Empty, error) {
if arg == nil || arg.Statement == nil {
return nil, fmt.Errorf("invalid request")
}
@@ -2545,7 +2467,7 @@ func (s *Server) ReplaceStatement(ctx context.Context, arg *api.ReplaceStatement
if err == nil {
err = s.bgpServer.ReplaceStatement(st)
}
- return &api.ReplaceStatementResponse{}, err
+ return &empty.Empty{}, err
}
func NewAPIPolicyFromTableStruct(p *table.Policy) *api.Policy {
@@ -2567,15 +2489,15 @@ func toPolicyApi(p *config.PolicyDefinition) *api.Policy {
func NewAPIPolicyAssignmentFromTableStruct(t *table.PolicyAssignment) *api.PolicyAssignment {
return &api.PolicyAssignment{
- Type: func() api.PolicyType {
+ Type: func() api.PolicyDirection {
switch t.Type {
case table.POLICY_DIRECTION_IMPORT:
- return api.PolicyType_IMPORT
+ return api.PolicyDirection_IMPORT
case table.POLICY_DIRECTION_EXPORT:
- return api.PolicyType_EXPORT
+ return api.PolicyDirection_EXPORT
}
log.Errorf("invalid policy-type: %s", t.Type)
- return api.PolicyType(-1)
+ return api.PolicyDirection_UNKNOWN
}(),
Default: func() api.RouteAction {
switch t.Default {
@@ -2649,7 +2571,8 @@ func NewPolicyFromApiStruct(a *api.Policy) (*table.Policy, error) {
func NewRoaListFromTableStructList(origin []*table.ROA) []*api.Roa {
l := make([]*api.Roa, 0)
for _, r := range origin {
- host, port, _ := net.SplitHostPort(r.Src)
+ host, portStr, _ := net.SplitHostPort(r.Src)
+ port, _ := strconv.ParseUint(portStr, 10, 32)
l = append(l, &api.Roa{
As: r.AS,
Maxlen: uint32(r.MaxLen),
@@ -2657,22 +2580,23 @@ func NewRoaListFromTableStructList(origin []*table.ROA) []*api.Roa {
Prefix: r.Prefix.Prefix.String(),
Conf: &api.RPKIConf{
Address: host,
- RemotePort: port,
+ RemotePort: uint32(port),
},
})
}
return l
}
-func (s *Server) GetPolicy(ctx context.Context, arg *api.GetPolicyRequest) (*api.GetPolicyResponse, error) {
- l := make([]*api.Policy, 0)
+func (s *Server) ListPolicy(arg *api.ListPolicyRequest, stream api.GobgpApi_ListPolicyServer) error {
for _, p := range s.bgpServer.GetPolicy() {
- l = append(l, toPolicyApi(p))
+ if err := stream.Send(&api.ListPolicyResponse{Policy: toPolicyApi(p)}); err != nil {
+ return err
+ }
}
- return &api.GetPolicyResponse{Policies: l}, nil
+ return nil
}
-func (s *Server) AddPolicy(ctx context.Context, arg *api.AddPolicyRequest) (*api.AddPolicyResponse, error) {
+func (s *Server) AddPolicy(ctx context.Context, arg *api.AddPolicyRequest) (*empty.Empty, error) {
if arg == nil || arg.Policy == nil {
return nil, fmt.Errorf("invalid request")
}
@@ -2680,21 +2604,21 @@ func (s *Server) AddPolicy(ctx context.Context, arg *api.AddPolicyRequest) (*api
if err != nil {
return nil, err
}
- return &api.AddPolicyResponse{}, s.bgpServer.AddPolicy(x, arg.ReferExistingStatements)
+ return &empty.Empty{}, s.bgpServer.AddPolicy(x, arg.ReferExistingStatements)
}
-func (s *Server) DeletePolicy(ctx context.Context, arg *api.DeletePolicyRequest) (*api.DeletePolicyResponse, error) {
+func (s *Server) DeletePolicy(ctx context.Context, arg *api.DeletePolicyRequest) (*empty.Empty, error) {
if arg == nil || arg.Policy == nil {
- return nil, fmt.Errorf("invalid request")
+ return &empty.Empty{}, fmt.Errorf("invalid request")
}
x, err := NewPolicyFromApiStruct(arg.Policy)
if err != nil {
- return nil, err
+ return &empty.Empty{}, err
}
- return &api.DeletePolicyResponse{}, s.bgpServer.DeletePolicy(x, arg.All, arg.PreserveStatements)
+ return &empty.Empty{}, s.bgpServer.DeletePolicy(x, arg.All, arg.PreserveStatements)
}
-func (s *Server) ReplacePolicy(ctx context.Context, arg *api.ReplacePolicyRequest) (*api.ReplacePolicyResponse, error) {
+func (s *Server) ReplacePolicy(ctx context.Context, arg *api.ReplacePolicyRequest) (*empty.Empty, error) {
if arg == nil || arg.Policy == nil {
return nil, fmt.Errorf("invalid request")
}
@@ -2702,25 +2626,25 @@ func (s *Server) ReplacePolicy(ctx context.Context, arg *api.ReplacePolicyReques
if err != nil {
return nil, err
}
- return &api.ReplacePolicyResponse{}, s.bgpServer.ReplacePolicy(x, arg.ReferExistingStatements, arg.PreserveStatements)
+ return &empty.Empty{}, s.bgpServer.ReplacePolicy(x, arg.ReferExistingStatements, arg.PreserveStatements)
}
func toPolicyAssignmentName(a *api.PolicyAssignment) (string, table.PolicyDirection, error) {
switch a.Resource {
case api.Resource_GLOBAL:
switch a.Type {
- case api.PolicyType_IMPORT:
+ case api.PolicyDirection_IMPORT:
return "", table.POLICY_DIRECTION_IMPORT, nil
- case api.PolicyType_EXPORT:
+ case api.PolicyDirection_EXPORT:
return "", table.POLICY_DIRECTION_EXPORT, nil
default:
return "", table.POLICY_DIRECTION_NONE, fmt.Errorf("invalid policy type")
}
case api.Resource_LOCAL:
switch a.Type {
- case api.PolicyType_IMPORT:
+ case api.PolicyDirection_IMPORT:
return a.Name, table.POLICY_DIRECTION_IMPORT, nil
- case api.PolicyType_EXPORT:
+ case api.PolicyDirection_EXPORT:
return a.Name, table.POLICY_DIRECTION_EXPORT, nil
default:
return "", table.POLICY_DIRECTION_NONE, fmt.Errorf("invalid policy type")
@@ -2731,33 +2655,36 @@ func toPolicyAssignmentName(a *api.PolicyAssignment) (string, table.PolicyDirect
}
-func (s *Server) GetPolicyAssignment(ctx context.Context, arg *api.GetPolicyAssignmentRequest) (*api.GetPolicyAssignmentResponse, error) {
- if arg == nil || arg.Assignment == nil {
- return nil, fmt.Errorf("invalid request")
- }
- name, dir, err := toPolicyAssignmentName(arg.Assignment)
- if err != nil {
- return nil, err
+func (s *Server) ListPolicyAssignment(arg *api.ListPolicyAssignmentRequest, stream api.GobgpApi_ListPolicyAssignmentServer) error {
+ if arg == nil || arg.Name == "" || arg.Direction == api.PolicyDirection_UNKNOWN {
+ return fmt.Errorf("invalid request")
}
- def, pols, err := s.bgpServer.GetPolicyAssignment(name, dir)
+ dir := func() table.PolicyDirection {
+ if arg.Direction == api.PolicyDirection_EXPORT {
+ return table.POLICY_DIRECTION_EXPORT
+ }
+ return table.POLICY_DIRECTION_IMPORT
+ }()
+
+ def, pols, err := s.bgpServer.GetPolicyAssignment(arg.Name, dir)
if err != nil {
- return nil, err
+ return err
}
policies := make([]*table.Policy, 0, len(pols))
for _, p := range pols {
t, err := table.NewPolicy(*p)
if err != nil {
- return nil, err
+ return err
}
policies = append(policies, t)
}
t := &table.PolicyAssignment{
- Name: name,
+ Name: arg.Name,
Type: dir,
Default: def,
Policies: policies,
}
- return &api.GetPolicyAssignmentResponse{NewAPIPolicyAssignmentFromTableStruct(t)}, err
+ return stream.Send(&api.ListPolicyAssignmentResponse{Assignment: NewAPIPolicyAssignmentFromTableStruct(t)})
}
func defaultRouteType(d api.RouteAction) table.RouteType {
@@ -2779,7 +2706,7 @@ func toPolicyDefinition(policies []*api.Policy) []*config.PolicyDefinition {
return l
}
-func (s *Server) AddPolicyAssignment(ctx context.Context, arg *api.AddPolicyAssignmentRequest) (*api.AddPolicyAssignmentResponse, error) {
+func (s *Server) AddPolicyAssignment(ctx context.Context, arg *api.AddPolicyAssignmentRequest) (*empty.Empty, error) {
if arg == nil || arg.Assignment == nil {
return nil, fmt.Errorf("invalid request")
}
@@ -2787,10 +2714,10 @@ func (s *Server) AddPolicyAssignment(ctx context.Context, arg *api.AddPolicyAssi
if err != nil {
return nil, err
}
- return &api.AddPolicyAssignmentResponse{}, s.bgpServer.AddPolicyAssignment(name, dir, toPolicyDefinition(arg.Assignment.Policies), defaultRouteType(arg.Assignment.Default))
+ return &empty.Empty{}, s.bgpServer.AddPolicyAssignment(name, dir, toPolicyDefinition(arg.Assignment.Policies), defaultRouteType(arg.Assignment.Default))
}
-func (s *Server) DeletePolicyAssignment(ctx context.Context, arg *api.DeletePolicyAssignmentRequest) (*api.DeletePolicyAssignmentResponse, error) {
+func (s *Server) DeletePolicyAssignment(ctx context.Context, arg *api.DeletePolicyAssignmentRequest) (*empty.Empty, error) {
if arg == nil || arg.Assignment == nil {
return nil, fmt.Errorf("invalid request")
}
@@ -2798,10 +2725,10 @@ func (s *Server) DeletePolicyAssignment(ctx context.Context, arg *api.DeletePoli
if err != nil {
return nil, err
}
- return &api.DeletePolicyAssignmentResponse{}, s.bgpServer.DeletePolicyAssignment(name, dir, toPolicyDefinition(arg.Assignment.Policies), arg.All)
+ return &empty.Empty{}, s.bgpServer.DeletePolicyAssignment(name, dir, toPolicyDefinition(arg.Assignment.Policies), arg.All)
}
-func (s *Server) ReplacePolicyAssignment(ctx context.Context, arg *api.ReplacePolicyAssignmentRequest) (*api.ReplacePolicyAssignmentResponse, error) {
+func (s *Server) ReplacePolicyAssignment(ctx context.Context, arg *api.ReplacePolicyAssignmentRequest) (*empty.Empty, error) {
if arg == nil || arg.Assignment == nil {
return nil, fmt.Errorf("invalid request")
}
@@ -2809,12 +2736,12 @@ func (s *Server) ReplacePolicyAssignment(ctx context.Context, arg *api.ReplacePo
if err != nil {
return nil, err
}
- return &api.ReplacePolicyAssignmentResponse{}, s.bgpServer.ReplacePolicyAssignment(name, dir, toPolicyDefinition(arg.Assignment.Policies), defaultRouteType(arg.Assignment.Default))
+ return &empty.Empty{}, s.bgpServer.ReplacePolicyAssignment(name, dir, toPolicyDefinition(arg.Assignment.Policies), defaultRouteType(arg.Assignment.Default))
}
-func (s *Server) GetServer(ctx context.Context, arg *api.GetServerRequest) (*api.GetServerResponse, error) {
+func (s *Server) GetBgp(ctx context.Context, arg *api.GetBgpRequest) (*api.GetBgpResponse, error) {
g := s.bgpServer.GetServer()
- return &api.GetServerResponse{
+ return &api.GetBgpResponse{
Global: &api.Global{
As: g.Config.As,
RouterId: g.Config.RouterId,
@@ -2953,9 +2880,9 @@ func NewGlobalFromConfigStruct(c *config.Global) *api.Global {
}
}
-func (s *Server) StartServer(ctx context.Context, arg *api.StartServerRequest) (*api.StartServerResponse, error) {
+func (s *Server) StartBgp(ctx context.Context, arg *api.StartBgpRequest) (*empty.Empty, error) {
if arg == nil || arg.Global == nil {
- return nil, fmt.Errorf("invalid request")
+ return &empty.Empty{}, fmt.Errorf("invalid request")
}
g := arg.Global
if net.ParseIP(g.RouterId) == nil {
@@ -2964,58 +2891,40 @@ func (s *Server) StartServer(ctx context.Context, arg *api.StartServerRequest) (
global := NewGlobalFromAPIStruct(arg.Global)
- return &api.StartServerResponse{}, s.bgpServer.Start(global)
+ return &empty.Empty{}, s.bgpServer.Start(global)
}
-func (s *Server) StopServer(ctx context.Context, arg *api.StopServerRequest) (*api.StopServerResponse, error) {
- return &api.StopServerResponse{}, s.bgpServer.Stop()
+func (s *Server) StopBgp(ctx context.Context, arg *api.StopBgpRequest) (*empty.Empty, error) {
+ return &empty.Empty{}, s.bgpServer.Stop()
}
-func (s *Server) GetRibInfo(ctx context.Context, arg *api.GetRibInfoRequest) (*api.GetRibInfoResponse, error) {
- if arg == nil || arg.Info == nil {
+func (s *Server) GetTable(ctx context.Context, arg *api.GetTableRequest) (*api.GetTableResponse, error) {
+ if arg == nil || arg.Name == "" {
return nil, fmt.Errorf("invalid request")
}
- family := bgp.RouteFamily(arg.Info.Family)
+ family := bgp.RouteFamily(arg.Family)
var in bool
var err error
var info *table.TableInfo
- switch arg.Info.Type {
+ switch arg.Type {
case api.Resource_GLOBAL, api.Resource_LOCAL:
- info, err = s.bgpServer.GetRibInfo(arg.Info.Name, family)
+ info, err = s.bgpServer.GetRibInfo(arg.Name, family)
case api.Resource_ADJ_IN:
in = true
fallthrough
case api.Resource_ADJ_OUT:
- info, err = s.bgpServer.GetAdjRibInfo(arg.Info.Name, family, in)
+ info, err = s.bgpServer.GetAdjRibInfo(arg.Name, family, in)
default:
- return nil, fmt.Errorf("unsupported resource type: %s", arg.Info.Type)
+ return nil, fmt.Errorf("unsupported resource type: %s", arg.Type)
}
if err != nil {
return nil, err
}
- return &api.GetRibInfoResponse{
- Info: &api.TableInfo{
- Type: arg.Info.Type,
- Family: arg.Info.Family,
- Name: arg.Info.Name,
- NumDestination: uint64(info.NumDestination),
- NumPath: uint64(info.NumPath),
- NumAccepted: uint64(info.NumAccepted),
- },
+ return &api.GetTableResponse{
+ NumDestination: uint64(info.NumDestination),
+ NumPath: uint64(info.NumPath),
+ NumAccepted: uint64(info.NumAccepted),
}, nil
}
-
-func (s *Server) AddCollector(ctx context.Context, arg *api.AddCollectorRequest) (*api.AddCollectorResponse, error) {
- return &api.AddCollectorResponse{}, s.bgpServer.AddCollector(&config.CollectorConfig{
- Url: arg.Url,
- DbName: arg.DbName,
- TableDumpInterval: arg.TableDumpInterval,
- })
-}
-
-func (s *Server) Shutdown(ctx context.Context, arg *api.ShutdownRequest) (*api.ShutdownResponse, error) {
- s.bgpServer.Shutdown()
- return &api.ShutdownResponse{}, nil
-}
diff --git a/pkg/server/peer.go b/pkg/server/peer.go
index 2f7d6cc2..c125a5ba 100644
--- a/pkg/server/peer.go
+++ b/pkg/server/peer.go
@@ -206,7 +206,7 @@ func (peer *Peer) negotiatedRFList() []bgp.RouteFamily {
peer.fsm.lock.RLock()
defer peer.fsm.lock.RUnlock()
l := make([]bgp.RouteFamily, 0, len(peer.fsm.rfMap))
- for family, _ := range peer.fsm.rfMap {
+ for family := range peer.fsm.rfMap {
l = append(l, family)
}
return l
diff --git a/pkg/server/server.go b/pkg/server/server.go
index c21d4770..6dbcc013 100644
--- a/pkg/server/server.go
+++ b/pkg/server/server.go
@@ -1913,7 +1913,7 @@ func (s *BgpServer) DeleteVrf(name string) error {
func (s *BgpServer) Stop() error {
return s.mgmtOperation(func() error {
- for k, _ := range s.neighborMap {
+ for k := range s.neighborMap {
if err := s.deleteNeighbor(&config.Neighbor{Config: config.NeighborConfig{
NeighborAddress: k}}, bgp.BGP_ERROR_CEASE, bgp.BGP_ERROR_SUB_PEER_DECONFIGURED); err != nil {
return err
diff --git a/test/lib/gobgp.py b/test/lib/gobgp.py
index bc1f96e9..72a9bc2d 100644
--- a/test/lib/gobgp.py
+++ b/test/lib/gobgp.py
@@ -42,6 +42,9 @@ from lib.base import (
BGP_ATTR_TYPE_MP_REACH_NLRI,
GRACEFUL_RESTART_TIME,
LONG_LIVED_GRACEFUL_RESTART_TIME,
+ BGP_FSM_IDLE,
+ BGP_FSM_ACTIVE,
+ BGP_FSM_ESTABLISHED,
)
@@ -299,7 +302,14 @@ class GoBGPContainer(BGPContainer):
return json.loads(self.local(cmd, capture=True))
def get_neighbor_state(self, peer):
- return self.get_neighbor(peer)['state']['session-state']
+ s = self.get_neighbor(peer)['state']['session_state']
+ if s == 1:
+ return BGP_FSM_IDLE
+ elif s == 3:
+ return BGP_FSM_ACTIVE
+ elif s == 6:
+ return BGP_FSM_ESTABLISHED
+ return "unknown"
def clear_policy(self):
self.policies = {}
diff --git a/test/scenario_test/aspath_test.py b/test/scenario_test/aspath_test.py
index 25518bfa..d6349efe 100644
--- a/test/scenario_test/aspath_test.py
+++ b/test/scenario_test/aspath_test.py
@@ -73,12 +73,12 @@ class GoBGPTestBase(unittest.TestCase):
def test_02_check_reject_as_loop(self):
def f():
- adj = self.g2.get_neighbor(self.q1)['state']['adj-table']
- self.assertTrue('received' in adj)
- self.assertEqual(adj['received'], 1)
+ s = self.g2.get_neighbor(self.q1)['state']
+ self.assertTrue('received' in s)
+ self.assertEqual(s.get('received', 0), 1)
# hacky. 'accepted' is zero so the key was deleted due to
# omitempty tag in bgp_configs.go.
- self.assertFalse('accepted' in adj)
+ self.assertFalse('accepted' in s)
assert_several_times(f)
@@ -89,11 +89,11 @@ class GoBGPTestBase(unittest.TestCase):
def test_04_check_accept_as_loop(self):
def f():
- adj = self.g2.get_neighbor(self.q1)['state']['adj-table']
- self.assertTrue('received' in adj)
- self.assertEqual(adj['received'], 1)
- self.assertTrue('accepted' in adj)
- self.assertEqual(adj['accepted'], 1)
+ s = self.g2.get_neighbor(self.q1)['state']
+ self.assertTrue('received' in s)
+ self.assertEqual(s.get('received', 0), 1)
+ self.assertTrue('accepted' in s)
+ self.assertEqual(s.get('accepted', 0), 1)
assert_several_times(f)
diff --git a/test/scenario_test/route_server_softreset_test.py b/test/scenario_test/route_server_softreset_test.py
index 23f646eb..90096be0 100644
--- a/test/scenario_test/route_server_softreset_test.py
+++ b/test/scenario_test/route_server_softreset_test.py
@@ -95,7 +95,8 @@ class GoBGPTestBase(unittest.TestCase):
time.sleep(1)
- num = g2.get_neighbor(g1)['state']['messages']['received']['update']
+ num = g2.get_neighbor(g1)['state']['messages']['received'].get('update', 0)
+ num = g2.get_neighbor(g1)['state']['messages']['received'].get('update', 0)
ps0 = {'prefix-set-name': 'ps0', 'prefix-list': [p1]}
g1.set_prefix_set(ps0)
@@ -105,14 +106,14 @@ class GoBGPTestBase(unittest.TestCase):
time.sleep(1)
- num2 = g2.get_neighbor(g1)['state']['messages']['received']['update']
+ num2 = g2.get_neighbor(g1)['state']['messages']['received'].get('update', 0)
self.assertTrue((num + 1) == num2)
g3.softreset(g1, type='out')
time.sleep(1)
- num3 = g2.get_neighbor(g1)['state']['messages']['received']['update']
+ num3 = g2.get_neighbor(g1)['state']['messages']['received'].get('update', 0)
self.assertTrue(num2 == num3)
def test_03_softresetin_test2(self):
@@ -122,13 +123,13 @@ class GoBGPTestBase(unittest.TestCase):
g2.add_route('10.0.10.0/24')
time.sleep(1)
- num = g2.get_neighbor(g1)['state']['messages']['received']['update']
+ num = g2.get_neighbor(g1)['state']['messages']['received'].get('update', 0)
time.sleep(3)
g1.local('gobgp n all softresetin')
time.sleep(3)
- num1 = g2.get_neighbor(g1)['state']['messages']['received']['update']
+ num1 = g2.get_neighbor(g1)['state']['messages']['received'].get('update', 0)
self.assertTrue(num == num1)
diff --git a/test/scenario_test/route_server_test2.py b/test/scenario_test/route_server_test2.py
index 61c546b8..3bbfeada 100644
--- a/test/scenario_test/route_server_test2.py
+++ b/test/scenario_test/route_server_test2.py
@@ -89,10 +89,10 @@ class GoBGPTestBase(unittest.TestCase):
def test_04_withdraw_path(self):
self.clients['g2'].local('gobgp global rib del 10.0.0.0/24')
time.sleep(1)
- info = self.gobgp.get_neighbor(self.clients['g2'])['state']['adj-table']
- self.assertTrue(info['advertised'] == 1)
- self.assertTrue('accepted' not in info) # means info['accepted'] == 0
- self.assertTrue('received' not in info) # means info['received'] == 0
+ s = self.gobgp.get_neighbor(self.clients['g2'])['state']
+ self.assertTrue(s.get('advertised', 0) == 1)
+ self.assertTrue(s.get('accepted') == None) # means info['accepted'] == 0
+ self.assertTrue(s.get('received') == None) # means info['received'] == 0
if __name__ == '__main__':
diff --git a/test/scenario_test/rtc_test.py b/test/scenario_test/rtc_test.py
index 13bc8b25..98a91c70 100644
--- a/test/scenario_test/rtc_test.py
+++ b/test/scenario_test/rtc_test.py
@@ -38,8 +38,8 @@ class GoBGPTestBase(unittest.TestCase):
def assert_upd_count(self, src, dst, sent, received):
messages = src.get_neighbor(dst)['state']['messages']
- self.assertEqual(messages['sent']['update'], sent)
- self.assertEqual(messages['received']['update'], received)
+ self.assertEqual(messages['sent'].get('update', 0), sent)
+ self.assertEqual(messages['received'].get('update', 0), received)
@classmethod
def setUpClass(cls):