Skip to content
Snippets Groups Projects
Commit cb622cba authored by Oliver Herms's avatar Oliver Herms
Browse files

RIS: Implement initial dump signaling in ObserveFIB

parent bfebb0f2
No related branches found
No related tags found
No related merge requests found
...@@ -10,8 +10,6 @@ import ( ...@@ -10,8 +10,6 @@ import (
api1 "github.com/bio-routing/bio-rd/route/api" api1 "github.com/bio-routing/bio-rd/route/api"
proto "github.com/golang/protobuf/proto" proto "github.com/golang/protobuf/proto"
grpc "google.golang.org/grpc" grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
math "math" math "math"
) )
...@@ -415,6 +413,7 @@ func (m *ObserveRIBRequest) GetAfisafi() ObserveRIBRequest_AFISAFI { ...@@ -415,6 +413,7 @@ func (m *ObserveRIBRequest) GetAfisafi() ObserveRIBRequest_AFISAFI {
type RIBUpdate struct { type RIBUpdate struct {
Advertisement bool `protobuf:"varint,1,opt,name=advertisement,proto3" json:"advertisement,omitempty"` Advertisement bool `protobuf:"varint,1,opt,name=advertisement,proto3" json:"advertisement,omitempty"`
IsInitialDump bool `protobuf:"varint,3,opt,name=is_initial_dump,json=isInitialDump,proto3" json:"is_initial_dump,omitempty"`
Route *api1.Route `protobuf:"bytes,2,opt,name=route,proto3" json:"route,omitempty"` Route *api1.Route `protobuf:"bytes,2,opt,name=route,proto3" json:"route,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
...@@ -453,6 +452,13 @@ func (m *RIBUpdate) GetAdvertisement() bool { ...@@ -453,6 +452,13 @@ func (m *RIBUpdate) GetAdvertisement() bool {
return false return false
} }
func (m *RIBUpdate) GetIsInitialDump() bool {
if m != nil {
return m.IsInitialDump
}
return false
}
func (m *RIBUpdate) GetRoute() *api1.Route { func (m *RIBUpdate) GetRoute() *api1.Route {
if m != nil { if m != nil {
return m.Route return m.Route
...@@ -702,56 +708,58 @@ func init() { ...@@ -702,56 +708,58 @@ func init() {
} }
var fileDescriptor_ffe1202aa518913f = []byte{ var fileDescriptor_ffe1202aa518913f = []byte{
// 633 bytes of a gzipped FileDescriptorProto // 659 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0xdb, 0x4e, 0xdb, 0x4c, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0x4d, 0x4f, 0xdb, 0x4c,
0x10, 0xc6, 0x04, 0x62, 0x32, 0xf9, 0x7f, 0x0e, 0x4b, 0x29, 0xc1, 0xbd, 0x68, 0x6a, 0x55, 0x95, 0x10, 0x66, 0x09, 0xc4, 0x64, 0xf2, 0x42, 0x60, 0x79, 0x29, 0xc1, 0x3d, 0x34, 0xb5, 0x2a, 0x14,
0x11, 0xaa, 0x83, 0x42, 0x45, 0x55, 0xf5, 0x24, 0x10, 0x22, 0xb2, 0x04, 0x6d, 0xb4, 0x88, 0x4a, 0x84, 0xea, 0xa0, 0x50, 0x51, 0x55, 0xfd, 0x12, 0x08, 0x11, 0x59, 0x82, 0x36, 0x5a, 0x44, 0x0f,
0xed, 0x45, 0x91, 0x13, 0xaf, 0xe9, 0x4a, 0xf8, 0xd0, 0xdd, 0x8d, 0x45, 0x9e, 0xa2, 0x8f, 0xd1, 0x3d, 0x34, 0x72, 0xe2, 0x35, 0x5d, 0x09, 0x7f, 0x74, 0x77, 0x13, 0x91, 0x63, 0x7f, 0x41, 0x7f,
0xab, 0xbe, 0x63, 0xe5, 0x5d, 0xdb, 0xb1, 0x4b, 0x4a, 0x0b, 0x15, 0x37, 0x89, 0x77, 0x66, 0xbf, 0x46, 0x4f, 0xfd, 0x8f, 0x95, 0x77, 0x1d, 0xc7, 0x2e, 0x94, 0x16, 0x2a, 0x2e, 0x89, 0x77, 0x66,
0x99, 0x6f, 0x3e, 0xcd, 0xcc, 0xc2, 0xce, 0x39, 0x15, 0x5f, 0x46, 0x03, 0x7b, 0x18, 0x05, 0x9d, 0x9f, 0x99, 0x67, 0x1e, 0xcd, 0xcc, 0xc2, 0xee, 0x39, 0x93, 0x9f, 0x87, 0x7d, 0x7b, 0x10, 0x05,
0x01, 0x8d, 0x9e, 0xb2, 0x68, 0x24, 0x68, 0x78, 0xae, 0xbe, 0xbd, 0xce, 0x30, 0xf0, 0x3a, 0x8c, 0xad, 0x3e, 0x8b, 0x9e, 0xf2, 0x68, 0x28, 0x59, 0x78, 0xae, 0xbf, 0xbd, 0xd6, 0x20, 0xf0, 0x5a,
0xf2, 0x8e, 0x1b, 0xd3, 0xf4, 0xdf, 0x8e, 0x59, 0x24, 0x22, 0xa4, 0x0f, 0x68, 0x64, 0x33, 0xca, 0x9c, 0x89, 0x96, 0x1b, 0xb3, 0xe4, 0xdf, 0x8e, 0x79, 0x24, 0x23, 0x6c, 0xf4, 0x59, 0x64, 0x73,
0x8d, 0xce, 0xf5, 0xe8, 0x90, 0x08, 0x89, 0x0c, 0x89, 0x50, 0x48, 0xe3, 0x0f, 0xe9, 0xd2, 0x23, 0x26, 0xcc, 0xd6, 0xcd, 0xe8, 0x90, 0x4a, 0x85, 0x0c, 0xa9, 0xd4, 0x48, 0xf3, 0x0f, 0xe9, 0x92,
0x51, 0xc9, 0xd2, 0x2f, 0x05, 0x32, 0x3f, 0x03, 0x1c, 0xf5, 0x8f, 0x31, 0xf9, 0x3a, 0x22, 0x5c, 0x23, 0xd5, 0xc9, 0x92, 0x2f, 0x0d, 0xb2, 0x3e, 0x01, 0x1c, 0x77, 0x4f, 0x08, 0xfd, 0x32, 0xa4,
0xa0, 0xfb, 0x50, 0x97, 0x4e, 0xd6, 0xd2, 0xda, 0x9a, 0xd5, 0xc0, 0xd9, 0x09, 0xad, 0x41, 0x3d, 0x42, 0xe2, 0x07, 0x50, 0x56, 0x4e, 0x5e, 0x47, 0x0d, 0xd4, 0xac, 0x90, 0xf4, 0x84, 0xd7, 0xa0,
0x61, 0xfe, 0x19, 0xf5, 0x5a, 0xb3, 0x6d, 0xcd, 0x9a, 0xc3, 0xf3, 0x09, 0xf3, 0x1d, 0x0f, 0x3d, 0x3c, 0xe2, 0x7e, 0x8f, 0x79, 0xf5, 0xd9, 0x06, 0x6a, 0xce, 0x91, 0xf9, 0x11, 0xf7, 0x1d, 0x0f,
0x82, 0x5a, 0xec, 0x5f, 0xb6, 0x6a, 0x6d, 0xcd, 0x6a, 0x76, 0x97, 0xec, 0x94, 0x79, 0x4a, 0xa7, 0x3f, 0x86, 0x52, 0xec, 0x5f, 0xd6, 0x4b, 0x0d, 0xd4, 0xac, 0xb6, 0x6b, 0x76, 0xc2, 0x3c, 0xa1,
0xcf, 0x88, 0x4f, 0x2f, 0x71, 0xea, 0x33, 0x9f, 0x43, 0x53, 0xc6, 0xe7, 0x71, 0x14, 0x72, 0x82, 0xd3, 0xe5, 0xd4, 0x67, 0x97, 0x24, 0xf1, 0x59, 0xcf, 0xa1, 0xaa, 0xe2, 0x8b, 0x38, 0x0a, 0x05,
0xac, 0x2c, 0x01, 0x6f, 0x69, 0xed, 0x9a, 0xd5, 0xec, 0x2e, 0x4b, 0x90, 0x22, 0x84, 0xd3, 0xdf, 0xc5, 0xcd, 0x34, 0x81, 0xa8, 0xa3, 0x46, 0xa9, 0x59, 0x6d, 0x2f, 0x2b, 0x90, 0x26, 0x44, 0x92,
0x2c, 0x25, 0x4f, 0x89, 0xf5, 0x88, 0xb8, 0x53, 0x62, 0x32, 0xfe, 0x8d, 0x89, 0x79, 0xb0, 0xdc, 0xdf, 0x34, 0xa5, 0x48, 0x88, 0x75, 0xa8, 0xbc, 0x57, 0x62, 0x2a, 0xfe, 0xad, 0x89, 0x79, 0xb0,
0x23, 0xe2, 0x28, 0x0a, 0xcf, 0x09, 0xbb, 0x3b, 0x7a, 0xaf, 0x61, 0xa5, 0x94, 0xe5, 0xc6, 0x24, 0xdc, 0xa1, 0xf2, 0x38, 0x0a, 0xcf, 0x29, 0xbf, 0x3f, 0x7a, 0xaf, 0x61, 0x25, 0x97, 0xe5, 0xd6,
0x7f, 0x68, 0xb0, 0xf2, 0x7e, 0xc0, 0x09, 0x4b, 0x08, 0x76, 0xf6, 0x6f, 0x49, 0xf3, 0x15, 0xe8, 0x24, 0x7f, 0x20, 0x58, 0x79, 0xdf, 0x17, 0x94, 0x8f, 0x28, 0x71, 0x0e, 0xee, 0x48, 0xf3, 0x15,
0xae, 0x4f, 0xb9, 0xeb, 0x53, 0x49, 0x75, 0xb1, 0x6b, 0xda, 0x59, 0x73, 0xda, 0x57, 0x62, 0xdb, 0x18, 0xae, 0xcf, 0x84, 0xeb, 0x33, 0x45, 0x75, 0xa9, 0x6d, 0xd9, 0x69, 0x73, 0xda, 0x57, 0x62,
0x7b, 0x87, 0xce, 0xc9, 0xde, 0xa1, 0x83, 0x73, 0x88, 0xb9, 0x05, 0x7a, 0x66, 0x43, 0x4b, 0xd0, 0xdb, 0xfb, 0x47, 0xce, 0xe9, 0xfe, 0x91, 0x43, 0x26, 0x10, 0x6b, 0x1b, 0x8c, 0xd4, 0x86, 0x6b,
0x74, 0xfa, 0xc9, 0xb3, 0xd3, 0x90, 0x0e, 0x5d, 0x2e, 0x96, 0x67, 0x32, 0xc3, 0x6e, 0x6e, 0xd0, 0x50, 0x75, 0xba, 0xa3, 0x67, 0x67, 0x21, 0x1b, 0xb8, 0x42, 0x2e, 0xcf, 0xa4, 0x86, 0xbd, 0x89,
0xcc, 0x8f, 0xd0, 0xc0, 0xce, 0xfe, 0x69, 0xec, 0xb9, 0x82, 0xa0, 0xc7, 0xf0, 0xbf, 0xeb, 0x25, 0x01, 0x59, 0x5f, 0x11, 0x54, 0x88, 0x73, 0x70, 0x16, 0x7b, 0xae, 0xa4, 0xf8, 0x09, 0x2c, 0xba,
0x84, 0x09, 0xca, 0x49, 0x40, 0x42, 0x21, 0xd9, 0x2e, 0xe0, 0xaa, 0x11, 0x3d, 0x81, 0x79, 0x49, 0xde, 0x88, 0x72, 0xc9, 0x04, 0x0d, 0x68, 0x28, 0x15, 0xdd, 0x05, 0x52, 0x34, 0xe2, 0x4d, 0xa8,
0x5f, 0x72, 0x9e, 0xa6, 0x85, 0x72, 0x9b, 0xdf, 0x35, 0x58, 0x3c, 0x18, 0x05, 0xf1, 0xed, 0x75, 0x31, 0xd1, 0x63, 0x21, 0x93, 0xcc, 0xbd, 0xe8, 0x79, 0xc3, 0x20, 0x56, 0x34, 0x17, 0xc8, 0x22,
0x78, 0xf1, 0xab, 0x0e, 0x0f, 0x0b, 0x1d, 0xaa, 0x81, 0xff, 0x51, 0x84, 0x5d, 0xf8, 0xaf, 0x88, 0x13, 0x8e, 0xb6, 0x1e, 0x0e, 0x83, 0x18, 0x6f, 0xc2, 0xbc, 0xaa, 0x53, 0x15, 0x77, 0x9d, 0x68,
0x17, 0x5f, 0x8c, 0x27, 0x15, 0x6a, 0xd7, 0x57, 0xb8, 0x2a, 0x7b, 0x45, 0x9a, 0x18, 0xcf, 0xa8, 0xda, 0x6d, 0x7d, 0x47, 0xb0, 0x94, 0x00, 0xee, 0x2e, 0xd8, 0x8b, 0x5f, 0x05, 0x7b, 0x94, 0x09,
0x98, 0x1f, 0xa0, 0xae, 0x2c, 0x68, 0x03, 0x16, 0xf8, 0x98, 0x9f, 0x85, 0x6e, 0x40, 0xb2, 0x7a, 0x56, 0x0c, 0xfc, 0x8f, 0x6a, 0xed, 0xc1, 0x7f, 0x59, 0xbc, 0xf8, 0x62, 0x3c, 0xad, 0x10, 0xdd,
0x75, 0x3e, 0xe6, 0xef, 0xdc, 0x80, 0xa0, 0x75, 0xd0, 0x55, 0xc1, 0xbc, 0x35, 0xdb, 0xae, 0x59, 0x5c, 0xe1, 0xaa, 0x6a, 0x2a, 0x65, 0xe2, 0x22, 0xa5, 0x62, 0x7d, 0x80, 0xb2, 0xb6, 0xe0, 0x0d,
0x73, 0xb8, 0x2e, 0x2b, 0xe6, 0xa8, 0x05, 0xba, 0xeb, 0x79, 0x8c, 0x70, 0x2e, 0x4b, 0x6e, 0xe0, 0x58, 0x10, 0x63, 0xd1, 0x0b, 0xdd, 0x80, 0xa6, 0xf5, 0x1a, 0x62, 0x2c, 0xde, 0xb9, 0x01, 0xc5,
0xfc, 0x68, 0xbe, 0x05, 0x54, 0x4e, 0x96, 0x75, 0xe6, 0x26, 0xe8, 0x4a, 0xc3, 0xbc, 0x35, 0x97, 0xeb, 0x60, 0xe8, 0x82, 0x45, 0x7d, 0xb6, 0x51, 0x6a, 0xce, 0x91, 0xb2, 0xaa, 0x58, 0xe0, 0x3a,
0x0a, 0x89, 0xd4, 0x55, 0x9c, 0xfb, 0xbb, 0xdf, 0x6a, 0xb0, 0x81, 0xd5, 0x6a, 0x72, 0x42, 0x3f, 0x18, 0xae, 0xe7, 0x71, 0x2a, 0x84, 0x2a, 0xb9, 0x42, 0x26, 0x47, 0xeb, 0x2d, 0xe0, 0x7c, 0xb2,
0x62, 0x81, 0x2b, 0x68, 0x14, 0x9e, 0x10, 0x96, 0xd0, 0x21, 0x41, 0x5d, 0xa8, 0x1d, 0xf5, 0x8f, 0xb4, 0x85, 0xb7, 0xc0, 0xd0, 0x1a, 0x4e, 0x7a, 0xb8, 0x96, 0x49, 0xa4, 0xaf, 0x92, 0x89, 0xbf,
0xd1, 0x6a, 0x01, 0x9f, 0x6c, 0x27, 0xe3, 0x5e, 0xd5, 0xa8, 0x52, 0x9b, 0x33, 0x29, 0xa6, 0x47, 0xfd, 0xad, 0x04, 0x1b, 0x44, 0xef, 0x30, 0x27, 0xf4, 0x23, 0x1e, 0xb8, 0x92, 0x45, 0xe1, 0x29,
0x44, 0x09, 0x33, 0x59, 0x1c, 0x25, 0x4c, 0x69, 0xda, 0xcd, 0x19, 0xd4, 0x53, 0xeb, 0x45, 0x71, 0xe5, 0x23, 0x36, 0xa0, 0xb8, 0x0d, 0xa5, 0xe3, 0xee, 0x09, 0x5e, 0xcd, 0xe0, 0xd3, 0x35, 0x66,
0x42, 0x46, 0xe5, 0x56, 0x45, 0x48, 0xe3, 0xc1, 0x54, 0x5f, 0x11, 0xe8, 0x00, 0x1a, 0xc5, 0xa0, 0xfe, 0x5f, 0x34, 0xea, 0xd4, 0xd6, 0x4c, 0x82, 0xe9, 0x50, 0x99, 0xc3, 0x4c, 0x37, 0x4c, 0x0e,
0xa2, 0x8d, 0xf2, 0xdd, 0xca, 0x8a, 0x30, 0x8c, 0x69, 0xae, 0x22, 0xca, 0x1b, 0x80, 0xc9, 0x48, 0x93, 0x5b, 0x0b, 0xd6, 0x0c, 0xee, 0xe8, 0x3d, 0xa4, 0x39, 0x61, 0xb3, 0x70, 0xab, 0x20, 0xa4,
0x95, 0xe8, 0x5c, 0x99, 0x33, 0x03, 0x4d, 0x84, 0xcd, 0x07, 0x66, 0x5b, 0x43, 0x2f, 0x41, 0xcf, 0xf9, 0xf0, 0x5a, 0x5f, 0x16, 0xe8, 0x10, 0x2a, 0xd9, 0x44, 0xe3, 0x8d, 0xfc, 0xdd, 0xc2, 0x2e,
0x5a, 0x07, 0xad, 0xff, 0xa6, 0x39, 0x8d, 0xb5, 0xab, 0x8e, 0xf8, 0x62, 0xbc, 0xad, 0xed, 0x6f, 0x31, 0xcd, 0xeb, 0x5c, 0x59, 0x94, 0x37, 0x00, 0xd3, 0xd9, 0xcb, 0xd1, 0xb9, 0x32, 0x90, 0x26,
0x7d, 0xda, 0xfc, 0xeb, 0x97, 0x6a, 0x50, 0x97, 0xef, 0xc6, 0xce, 0xcf, 0x00, 0x00, 0x00, 0xff, 0x9e, 0x0a, 0x3b, 0x19, 0xac, 0x1d, 0x84, 0x5f, 0x82, 0x91, 0xb6, 0x0e, 0x5e, 0xff, 0x4d, 0x73,
0xff, 0x61, 0xf9, 0x2b, 0x4e, 0xdd, 0x06, 0x00, 0x00, 0x9a, 0x6b, 0x57, 0x1d, 0xf1, 0xc5, 0x78, 0x07, 0x1d, 0x6c, 0x7f, 0xdc, 0xfa, 0xeb, 0x27, 0xad,
0x5f, 0x56, 0x0f, 0xcc, 0xee, 0xcf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x57, 0x19, 0x12, 0xf0, 0x06,
0x07, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
var _ context.Context var _ context.Context
var _ grpc.ClientConnInterface var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file // This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against. // is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6 const _ = grpc.SupportPackageIsVersion4
// RoutingInformationServiceClient is the client API for RoutingInformationService service. // RoutingInformationServiceClient is the client API for RoutingInformationService service.
// //
...@@ -766,10 +774,10 @@ type RoutingInformationServiceClient interface { ...@@ -766,10 +774,10 @@ type RoutingInformationServiceClient interface {
} }
type routingInformationServiceClient struct { type routingInformationServiceClient struct {
cc grpc.ClientConnInterface cc *grpc.ClientConn
} }
func NewRoutingInformationServiceClient(cc grpc.ClientConnInterface) RoutingInformationServiceClient { func NewRoutingInformationServiceClient(cc *grpc.ClientConn) RoutingInformationServiceClient {
return &routingInformationServiceClient{cc} return &routingInformationServiceClient{cc}
} }
...@@ -883,29 +891,6 @@ type RoutingInformationServiceServer interface { ...@@ -883,29 +891,6 @@ type RoutingInformationServiceServer interface {
DumpRIB(*DumpRIBRequest, RoutingInformationService_DumpRIBServer) error DumpRIB(*DumpRIBRequest, RoutingInformationService_DumpRIBServer) error
} }
// UnimplementedRoutingInformationServiceServer can be embedded to have forward compatible implementations.
type UnimplementedRoutingInformationServiceServer struct {
}
func (*UnimplementedRoutingInformationServiceServer) LPM(ctx context.Context, req *LPMRequest) (*LPMResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method LPM not implemented")
}
func (*UnimplementedRoutingInformationServiceServer) Get(ctx context.Context, req *GetRequest) (*GetResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Get not implemented")
}
func (*UnimplementedRoutingInformationServiceServer) GetRouters(ctx context.Context, req *GetRoutersRequest) (*GetRoutersResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetRouters not implemented")
}
func (*UnimplementedRoutingInformationServiceServer) GetLonger(ctx context.Context, req *GetLongerRequest) (*GetLongerResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetLonger not implemented")
}
func (*UnimplementedRoutingInformationServiceServer) ObserveRIB(req *ObserveRIBRequest, srv RoutingInformationService_ObserveRIBServer) error {
return status.Errorf(codes.Unimplemented, "method ObserveRIB not implemented")
}
func (*UnimplementedRoutingInformationServiceServer) DumpRIB(req *DumpRIBRequest, srv RoutingInformationService_DumpRIBServer) error {
return status.Errorf(codes.Unimplemented, "method DumpRIB not implemented")
}
func RegisterRoutingInformationServiceServer(s *grpc.Server, srv RoutingInformationServiceServer) { func RegisterRoutingInformationServiceServer(s *grpc.Server, srv RoutingInformationServiceServer) {
s.RegisterService(&_RoutingInformationService_serviceDesc, srv) s.RegisterService(&_RoutingInformationService_serviceDesc, srv)
} }
......
...@@ -57,6 +57,7 @@ message ObserveRIBRequest { ...@@ -57,6 +57,7 @@ message ObserveRIBRequest {
message RIBUpdate { message RIBUpdate {
bool advertisement = 1; bool advertisement = 1;
bool is_initial_dump = 3;
bio.route.Route route = 2; bio.route.Route route = 2;
} }
......
...@@ -267,8 +267,17 @@ func newRIBClient(fifo *updateFIFO) *ribClient { ...@@ -267,8 +267,17 @@ func newRIBClient(fifo *updateFIFO) *ribClient {
} }
func (r *ribClient) AddPath(pfx *net.Prefix, path *route.Path) error { func (r *ribClient) AddPath(pfx *net.Prefix, path *route.Path) error {
return r.addPath(pfx, path, false)
}
func (r *ribClient) AddPathInitialDump(pfx *net.Prefix, path *route.Path) error {
return r.addPath(pfx, path, true)
}
func (r *ribClient) addPath(pfx *net.Prefix, path *route.Path, isInitalDump bool) error {
r.fifo.queue(&pb.RIBUpdate{ r.fifo.queue(&pb.RIBUpdate{
Advertisement: true, Advertisement: true,
IsInitialDump: isInitalDump,
Route: &routeapi.Route{ Route: &routeapi.Route{
Pfx: pfx.ToProto(), Pfx: pfx.ToProto(),
Paths: []*routeapi.Path{ Paths: []*routeapi.Path{
...@@ -297,6 +306,4 @@ func (r *ribClient) RemovePath(pfx *net.Prefix, path *route.Path) bool { ...@@ -297,6 +306,4 @@ func (r *ribClient) RemovePath(pfx *net.Prefix, path *route.Path) bool {
func (r *ribClient) RefreshRoute(*net.Prefix, []*route.Path) {} func (r *ribClient) RefreshRoute(*net.Prefix, []*route.Path) {}
// ReplacePath is here to fulfill an interface // ReplacePath is here to fulfill an interface
func (r *ribClient) ReplacePath(*net.Prefix, *route.Path, *route.Path) { func (r *ribClient) ReplacePath(*net.Prefix, *route.Path, *route.Path) {}
}
...@@ -10,8 +10,6 @@ import ( ...@@ -10,8 +10,6 @@ import (
api1 "github.com/bio-routing/bio-rd/route/api" api1 "github.com/bio-routing/bio-rd/route/api"
proto "github.com/golang/protobuf/proto" proto "github.com/golang/protobuf/proto"
grpc "google.golang.org/grpc" grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
math "math" math "math"
) )
...@@ -247,11 +245,11 @@ var fileDescriptor_2d4ce551e16bb738 = []byte{ ...@@ -247,11 +245,11 @@ var fileDescriptor_2d4ce551e16bb738 = []byte{
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
var _ context.Context var _ context.Context
var _ grpc.ClientConnInterface var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file // This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against. // is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6 const _ = grpc.SupportPackageIsVersion4
// BgpServiceClient is the client API for BgpService service. // BgpServiceClient is the client API for BgpService service.
// //
...@@ -263,10 +261,10 @@ type BgpServiceClient interface { ...@@ -263,10 +261,10 @@ type BgpServiceClient interface {
} }
type bgpServiceClient struct { type bgpServiceClient struct {
cc grpc.ClientConnInterface cc *grpc.ClientConn
} }
func NewBgpServiceClient(cc grpc.ClientConnInterface) BgpServiceClient { func NewBgpServiceClient(cc *grpc.ClientConn) BgpServiceClient {
return &bgpServiceClient{cc} return &bgpServiceClient{cc}
} }
...@@ -350,20 +348,6 @@ type BgpServiceServer interface { ...@@ -350,20 +348,6 @@ type BgpServiceServer interface {
DumpRIBOut(*DumpRIBRequest, BgpService_DumpRIBOutServer) error DumpRIBOut(*DumpRIBRequest, BgpService_DumpRIBOutServer) error
} }
// UnimplementedBgpServiceServer can be embedded to have forward compatible implementations.
type UnimplementedBgpServiceServer struct {
}
func (*UnimplementedBgpServiceServer) ListSessions(ctx context.Context, req *ListSessionsRequest) (*ListSessionsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListSessions not implemented")
}
func (*UnimplementedBgpServiceServer) DumpRIBIn(req *DumpRIBRequest, srv BgpService_DumpRIBInServer) error {
return status.Errorf(codes.Unimplemented, "method DumpRIBIn not implemented")
}
func (*UnimplementedBgpServiceServer) DumpRIBOut(req *DumpRIBRequest, srv BgpService_DumpRIBOutServer) error {
return status.Errorf(codes.Unimplemented, "method DumpRIBOut not implemented")
}
func RegisterBgpServiceServer(s *grpc.Server, srv BgpServiceServer) { func RegisterBgpServiceServer(s *grpc.Server, srv BgpServiceServer) {
s.RegisterService(&_BgpService_serviceDesc, srv) s.RegisterService(&_BgpService_serviceDesc, srv)
} }
......
...@@ -70,6 +70,10 @@ func (u *UpdateSender) Destroy() { ...@@ -70,6 +70,10 @@ func (u *UpdateSender) Destroy() {
u.destroyCh <- struct{}{} u.destroyCh <- struct{}{}
} }
func (u *UpdateSender) AddPathInitialDump(pfx *bnet.Prefix, p *route.Path) error {
return u.AddPath(pfx, p)
}
// AddPath adds path p for pfx to toSend queue // AddPath adds path p for pfx to toSend queue
func (u *UpdateSender) AddPath(pfx *bnet.Prefix, p *route.Path) error { func (u *UpdateSender) AddPath(pfx *bnet.Prefix, p *route.Path) error {
u.toSendMu.Lock() u.toSendMu.Lock()
......
...@@ -27,6 +27,10 @@ func New() (*Kernel, error) { ...@@ -27,6 +27,10 @@ func New() (*Kernel, error) {
return k, nil return k, nil
} }
func (k *Kernel) AddPathInitialDump(pfx *net.Prefix, path *route.Path) error {
return k.AddPath(pfx, path)
}
func (k *Kernel) AddPath(pfx *net.Prefix, path *route.Path) error { func (k *Kernel) AddPath(pfx *net.Prefix, path *route.Path) error {
return k.osKernel.AddPath(pfx, path) return k.osKernel.AddPath(pfx, path)
} }
......
...@@ -124,7 +124,7 @@ func (a *AdjRIBIn) UpdateNewClient(client routingtable.RouteTableClient) error { ...@@ -124,7 +124,7 @@ func (a *AdjRIBIn) UpdateNewClient(client routingtable.RouteTableClient) error {
continue continue
} }
err := client.AddPath(route.Prefix(), path) err := client.AddPathInitialDump(route.Prefix(), path)
if err != nil { if err != nil {
log.WithField("Sender", "AdjRIBOutAddPath").WithError(err).Error("Could not send update to client") log.WithField("Sender", "AdjRIBOutAddPath").WithError(err).Error("Could not send update to client")
} }
......
...@@ -116,6 +116,10 @@ func (a *AdjRIBOut) bgpChecks(pfx *bnet.Prefix, p *route.Path) (retPath *route.P ...@@ -116,6 +116,10 @@ func (a *AdjRIBOut) bgpChecks(pfx *bnet.Prefix, p *route.Path) (retPath *route.P
return p, true return p, true
} }
func (a *AdjRIBOut) AddPathInitialDump(pfx *bnet.Prefix, p *route.Path) error {
return a.AddPath(pfx, p)
}
// AddPath adds path p to prefix `pfx` // AddPath adds path p to prefix `pfx`
func (a *AdjRIBOut) AddPath(pfx *bnet.Prefix, p *route.Path) error { func (a *AdjRIBOut) AddPath(pfx *bnet.Prefix, p *route.Path) error {
p, propagate := a.bgpChecks(pfx, p) p, propagate := a.bgpChecks(pfx, p)
......
...@@ -9,6 +9,7 @@ import ( ...@@ -9,6 +9,7 @@ import (
// RouteTableClient is the interface that every route table client must implement // RouteTableClient is the interface that every route table client must implement
type RouteTableClient interface { type RouteTableClient interface {
AddPath(pfx *net.Prefix, path *route.Path) error AddPath(pfx *net.Prefix, path *route.Path) error
AddPathInitialDump(pfx *net.Prefix, path *route.Path) error
RemovePath(*net.Prefix, *route.Path) bool RemovePath(*net.Prefix, *route.Path) bool
ReplacePath(*net.Prefix, *route.Path, *route.Path) ReplacePath(*net.Prefix, *route.Path, *route.Path)
RefreshRoute(*net.Prefix, []*route.Path) RefreshRoute(*net.Prefix, []*route.Path)
...@@ -33,6 +34,7 @@ type AdjRIBIn interface { ...@@ -33,6 +34,7 @@ type AdjRIBIn interface {
// AdjRIBOut is the interface any AdjRIBOut must implement // AdjRIBOut is the interface any AdjRIBOut must implement
type AdjRIBOut interface { type AdjRIBOut interface {
AdjRIB AdjRIB
AddPathInitialDump(pfx *net.Prefix, path *route.Path) error
ReplacePath(*net.Prefix, *route.Path, *route.Path) ReplacePath(*net.Prefix, *route.Path, *route.Path)
RefreshRoute(*net.Prefix, []*route.Path) RefreshRoute(*net.Prefix, []*route.Path)
} }
...@@ -24,12 +24,19 @@ func (m MockClient) Dump() []*route.Route { ...@@ -24,12 +24,19 @@ func (m MockClient) Dump() []*route.Route {
func (m MockClient) AddPath(*net.Prefix, *route.Path) error { func (m MockClient) AddPath(*net.Prefix, *route.Path) error {
return nil return nil
} }
func (m MockClient) AddPathInitialDump(*net.Prefix, *route.Path) error {
return nil
}
func (m MockClient) RemovePath(*net.Prefix, *route.Path) bool { func (m MockClient) RemovePath(*net.Prefix, *route.Path) bool {
return false return false
} }
func (m MockClient) UpdateNewClient(RouteTableClient) error { func (m MockClient) UpdateNewClient(RouteTableClient) error {
return nil return nil
} }
func (m MockClient) Register(RouteTableClient) { func (m MockClient) Register(RouteTableClient) {
return return
} }
......
...@@ -110,7 +110,7 @@ func (a *LocRIB) UpdateNewClient(client routingtable.RouteTableClient) error { ...@@ -110,7 +110,7 @@ func (a *LocRIB) UpdateNewClient(client routingtable.RouteTableClient) error {
} }
for _, p := range r.Paths()[:n] { for _, p := range r.Paths()[:n] {
client.AddPath(r.Prefix(), p) client.AddPathInitialDump(r.Prefix(), p)
} }
} }
...@@ -145,6 +145,10 @@ func (a *LocRIB) RouteCount() int64 { ...@@ -145,6 +145,10 @@ func (a *LocRIB) RouteCount() int64 {
return a.rt.GetRouteCount() return a.rt.GetRouteCount()
} }
func (a *LocRIB) AddPathInitialDump(pfx *net.Prefix, p *route.Path) error {
return a.AddPath(pfx, p)
}
// AddPath replaces the path for prefix `pfx`. If the prefix doesn't exist it is added. // AddPath replaces the path for prefix `pfx`. If the prefix doesn't exist it is added.
func (a *LocRIB) AddPath(pfx *net.Prefix, p *route.Path) error { func (a *LocRIB) AddPath(pfx *net.Prefix, p *route.Path) error {
a.mu.Lock() a.mu.Lock()
......
...@@ -41,6 +41,10 @@ func (m *RTMockClient) AddPath(pfx *net.Prefix, p *route.Path) error { ...@@ -41,6 +41,10 @@ func (m *RTMockClient) AddPath(pfx *net.Prefix, p *route.Path) error {
return nil return nil
} }
func (m *RTMockClient) AddPathInitialDump(pfx *net.Prefix, p *route.Path) error {
return nil
}
func (m *RTMockClient) UpdateNewClient(client RouteTableClient) error { func (m *RTMockClient) UpdateNewClient(client RouteTableClient) error {
return fmt.Errorf("Not implemented") return fmt.Errorf("Not implemented")
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment