From 6b9dbe48fec7a4d60f62e437f4fefe7e7e7240ca Mon Sep 17 00:00:00 2001 From: Oliver Herms <oliver.herms@exaring.de> Date: Fri, 17 Jul 2020 10:42:27 +0200 Subject: [PATCH] RIS: Add VRF string to DumpRIB and make it usable from riscli --- cmd/ris/api/ris.pb.go | 86 ++++++++++++++++++++----------------- cmd/ris/api/ris.proto | 1 + cmd/ris/risserver/server.go | 9 +++- cmd/riscli/dump_loc_rib.go | 5 ++- cmd/riscli/lpm.go | 5 ++- cmd/riscli/main.go | 5 +++ 6 files changed, 66 insertions(+), 45 deletions(-) diff --git a/cmd/ris/api/ris.pb.go b/cmd/ris/api/ris.pb.go index 8ce66b56..f6af0692 100644 --- a/cmd/ris/api/ris.pb.go +++ b/cmd/ris/api/ris.pb.go @@ -501,6 +501,7 @@ func (m *RIBUpdate) GetRoute() *api1.Route { type DumpRIBRequest struct { Router string `protobuf:"bytes,1,opt,name=router,proto3" json:"router,omitempty"` VrfId uint64 `protobuf:"varint,2,opt,name=vrf_id,json=vrfId,proto3" json:"vrf_id,omitempty"` + Vrf string `protobuf:"bytes,4,opt,name=vrf,proto3" json:"vrf,omitempty"` Afisafi DumpRIBRequest_AFISAFI `protobuf:"varint,3,opt,name=afisafi,proto3,enum=bio.ris.DumpRIBRequest_AFISAFI" json:"afisafi,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -546,6 +547,13 @@ func (m *DumpRIBRequest) GetVrfId() uint64 { return 0 } +func (m *DumpRIBRequest) GetVrf() string { + if m != nil { + return m.Vrf + } + return "" +} + func (m *DumpRIBRequest) GetAfisafi() DumpRIBRequest_AFISAFI { if m != nil { return m.Afisafi @@ -740,49 +748,49 @@ func init() { } var fileDescriptor_ffe1202aa518913f = []byte{ - // 670 bytes of a gzipped FileDescriptorProto + // 669 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0x5d, 0x4f, 0xdb, 0x3c, 0x14, 0x26, 0x04, 0x1a, 0x7a, 0xfa, 0x42, 0x8b, 0x79, 0x79, 0x09, 0x79, 0x2f, 0xd6, 0x45, 0x13, 0x2a, 0x42, 0x4b, 0x51, 0x99, 0x98, 0xa6, 0x7d, 0x09, 0x84, 0xa8, 0x22, 0xc1, 0x56, 0x19, 0xb1, 0x8b, 0xdd, 0x54, 0x69, 0xe3, 0x30, 0x4b, 0xe4, 0x63, 0xb6, 0x1b, 0xd1, 0xcb, 0xfd, 0x82, 0xfd, - 0x8c, 0xfd, 0x8c, 0xfd, 0xb5, 0x29, 0x76, 0x9a, 0xa6, 0x83, 0xb1, 0xb1, 0x4d, 0xdc, 0xb4, 0xf6, - 0x39, 0x7e, 0x7c, 0x9e, 0xe7, 0xd1, 0xf1, 0x09, 0xec, 0x5d, 0x50, 0xf1, 0x61, 0x34, 0x70, 0x86, - 0x71, 0xd8, 0x1e, 0xd0, 0xf8, 0x31, 0x8b, 0x47, 0x82, 0x46, 0x17, 0x6a, 0xed, 0xb7, 0x87, 0xa1, - 0xdf, 0x66, 0x94, 0xb7, 0xbd, 0x84, 0x66, 0xff, 0x4e, 0xc2, 0x62, 0x11, 0x23, 0x63, 0x40, 0x63, - 0x87, 0x51, 0x6e, 0xb5, 0x6f, 0x47, 0x47, 0x44, 0x48, 0x64, 0x44, 0x84, 0x42, 0x5a, 0x3f, 0x29, - 0x97, 0x6d, 0x89, 0x2a, 0x96, 0xad, 0x14, 0xc8, 0x4e, 0x00, 0x4e, 0x7a, 0xa7, 0x98, 0x7c, 0x1c, - 0x11, 0x2e, 0xd0, 0x7f, 0x50, 0x91, 0x49, 0x66, 0x6a, 0x4d, 0xad, 0x55, 0xc5, 0xf9, 0x0e, 0xad, - 0x43, 0x25, 0x65, 0x41, 0x9f, 0xfa, 0xe6, 0x7c, 0x53, 0x6b, 0x2d, 0xe0, 0xc5, 0x94, 0x05, 0xae, - 0x8f, 0x1a, 0xa0, 0xa7, 0x2c, 0x30, 0x17, 0xe4, 0xd9, 0x6c, 0x89, 0x1e, 0x82, 0x9e, 0x04, 0x57, - 0xa6, 0xde, 0xd4, 0x5a, 0xb5, 0x4e, 0xdd, 0xc9, 0xb4, 0x64, 0x04, 0x7b, 0x8c, 0x04, 0xf4, 0x0a, - 0x67, 0x39, 0xfb, 0x29, 0xd4, 0x64, 0x45, 0x9e, 0xc4, 0x11, 0x27, 0xa8, 0x95, 0x97, 0xe4, 0xa6, - 0xd6, 0xd4, 0x5b, 0xb5, 0x4e, 0x43, 0x82, 0x14, 0x45, 0x9c, 0xfd, 0xe6, 0x24, 0x78, 0x46, 0xb5, - 0x4b, 0xc4, 0x3d, 0x53, 0x95, 0x15, 0xef, 0x4c, 0x35, 0x85, 0x46, 0x97, 0x88, 0x93, 0x38, 0xba, - 0x20, 0xec, 0x3e, 0x09, 0xbf, 0x84, 0xd5, 0x52, 0xdd, 0x3b, 0xd3, 0xfe, 0xaa, 0xc1, 0xea, 0xdb, - 0x01, 0x27, 0x2c, 0x25, 0xd8, 0x3d, 0xfc, 0x6b, 0xc4, 0x5f, 0x80, 0xe1, 0x05, 0x94, 0x7b, 0x01, - 0x95, 0xe4, 0x57, 0x3a, 0xb6, 0x93, 0x37, 0xb9, 0x73, 0xad, 0x9a, 0x73, 0x70, 0xec, 0x9e, 0x1d, - 0x1c, 0xbb, 0x78, 0x02, 0xb1, 0x77, 0xc0, 0xc8, 0x63, 0xa8, 0x0e, 0x35, 0xb7, 0x97, 0x3e, 0x39, - 0x8f, 0xe8, 0xd0, 0xe3, 0xa2, 0x31, 0x97, 0x07, 0xf6, 0x27, 0x01, 0xcd, 0xfe, 0xa4, 0x41, 0x15, - 0xbb, 0x87, 0xe7, 0x89, 0xef, 0x09, 0x82, 0x1e, 0xc1, 0xb2, 0xe7, 0xa7, 0x84, 0x09, 0xca, 0x49, - 0x48, 0x22, 0x21, 0x05, 0x2c, 0xe1, 0xd9, 0x20, 0xda, 0x82, 0x3a, 0xe5, 0x7d, 0x1a, 0x51, 0x41, - 0xbd, 0xcb, 0xbe, 0x3f, 0x0a, 0x13, 0x49, 0x73, 0x09, 0x2f, 0x53, 0xee, 0xaa, 0xe8, 0xd1, 0x28, - 0x4c, 0xd0, 0x16, 0x2c, 0x4a, 0xe5, 0x52, 0xee, 0x4d, 0x36, 0xaa, 0xb4, 0xfd, 0x45, 0x83, 0x95, - 0x0c, 0xf0, 0xfb, 0x16, 0x3e, 0xfb, 0xde, 0xb0, 0x07, 0x85, 0x61, 0xb3, 0x17, 0xff, 0xa1, 0x5b, - 0xfb, 0xf0, 0x4f, 0x71, 0x5f, 0x72, 0x39, 0x9e, 0x2a, 0xd4, 0x6e, 0x57, 0xb8, 0x26, 0xdb, 0x4c, - 0x86, 0x18, 0xcf, 0xa9, 0xd8, 0xef, 0xa0, 0xa2, 0x22, 0x68, 0x13, 0x96, 0xf8, 0x98, 0xf7, 0x23, - 0x2f, 0x24, 0xb9, 0x5e, 0x83, 0x8f, 0xf9, 0x1b, 0x2f, 0x24, 0x68, 0x03, 0x0c, 0x25, 0x98, 0x9b, - 0xf3, 0x4d, 0xbd, 0xb5, 0x80, 0x2b, 0x52, 0x31, 0x47, 0x26, 0x18, 0x9e, 0xef, 0x33, 0xc2, 0xb9, - 0x94, 0x5c, 0xc5, 0x93, 0xad, 0xfd, 0x1a, 0x50, 0xb9, 0x58, 0xde, 0xd4, 0xdb, 0x60, 0x28, 0x0f, - 0x27, 0x5d, 0x5d, 0x2f, 0x2c, 0x52, 0x47, 0xf1, 0x24, 0xdf, 0xf9, 0xac, 0xc3, 0x26, 0x56, 0xb3, - 0xd0, 0x8d, 0x82, 0x98, 0x85, 0x9e, 0xa0, 0x71, 0x74, 0x46, 0x58, 0x4a, 0x87, 0x04, 0x75, 0x40, - 0x3f, 0xe9, 0x9d, 0xa2, 0xb5, 0x02, 0x3e, 0x1d, 0x87, 0xd6, 0xbf, 0xb3, 0x41, 0x55, 0xda, 0x9e, - 0xcb, 0x30, 0x5d, 0x22, 0x4a, 0x98, 0xe9, 0x5c, 0x2a, 0x61, 0x4a, 0xa3, 0xc3, 0x9e, 0x43, 0x5d, - 0x35, 0xbd, 0x14, 0x27, 0x64, 0xcd, 0x9c, 0x9a, 0x31, 0xd2, 0xfa, 0xff, 0xc6, 0x5c, 0x71, 0xd1, - 0x11, 0x54, 0x8b, 0x37, 0x8e, 0x36, 0xcb, 0x67, 0x67, 0xe6, 0x8d, 0x65, 0xdd, 0x94, 0x2a, 0x6e, - 0x79, 0x05, 0x30, 0x7d, 0x7b, 0x25, 0x3a, 0xd7, 0x1e, 0xa4, 0x85, 0xa6, 0xc6, 0x4e, 0x1e, 0xd6, - 0xae, 0x86, 0x9e, 0x83, 0x91, 0xb7, 0x0e, 0xda, 0xf8, 0x41, 0x73, 0x5a, 0xeb, 0xd7, 0x13, 0xc9, - 0xe5, 0x78, 0x57, 0x3b, 0xdc, 0x79, 0xbf, 0xfd, 0xcb, 0x9f, 0xc6, 0x41, 0x45, 0x7e, 0xa8, 0xf6, - 0xbe, 0x05, 0x00, 0x00, 0xff, 0xff, 0xc5, 0xf1, 0x19, 0x78, 0x4e, 0x07, 0x00, 0x00, + 0x9e, 0x5d, 0xed, 0xaf, 0x4d, 0xb1, 0xd3, 0x34, 0x1d, 0x8c, 0x0d, 0x0d, 0x71, 0xd3, 0xda, 0xe7, + 0xf8, 0xf1, 0xf3, 0x9c, 0x47, 0xc7, 0x27, 0xb0, 0x77, 0x41, 0xc5, 0xa7, 0xd1, 0xc0, 0x19, 0xc6, + 0x61, 0x7b, 0x40, 0xe3, 0xa7, 0x2c, 0x1e, 0x09, 0x1a, 0x5d, 0xa8, 0xb5, 0xdf, 0x1e, 0x86, 0x7e, + 0x9b, 0x51, 0xde, 0xf6, 0x12, 0x9a, 0xfd, 0x3b, 0x09, 0x8b, 0x45, 0x8c, 0x8c, 0x01, 0x8d, 0x1d, + 0x46, 0xb9, 0xd5, 0xbe, 0x1d, 0x1d, 0x11, 0x21, 0x91, 0x11, 0x11, 0x0a, 0x69, 0xfd, 0x86, 0x2e, + 0xdb, 0x12, 0x45, 0x96, 0xad, 0x14, 0xc8, 0x4e, 0x00, 0x4e, 0x7a, 0xa7, 0x98, 0x7c, 0x1e, 0x11, + 0x2e, 0xd0, 0x7f, 0x50, 0x91, 0x49, 0x66, 0x6a, 0x4d, 0xad, 0x55, 0xc5, 0xf9, 0x0e, 0xad, 0x43, + 0x25, 0x65, 0x41, 0x9f, 0xfa, 0xe6, 0x7c, 0x53, 0x6b, 0x2d, 0xe0, 0xc5, 0x94, 0x05, 0xae, 0x8f, + 0x1a, 0xa0, 0xa7, 0x2c, 0x30, 0x17, 0xe4, 0xd9, 0x6c, 0x89, 0x1e, 0x83, 0x9e, 0x04, 0x57, 0xa6, + 0xde, 0xd4, 0x5a, 0xb5, 0x4e, 0xdd, 0xc9, 0x6a, 0xc9, 0x04, 0xf6, 0x18, 0x09, 0xe8, 0x15, 0xce, + 0x72, 0xf6, 0x73, 0xa8, 0x49, 0x46, 0x9e, 0xc4, 0x11, 0x27, 0xa8, 0x95, 0x53, 0x72, 0x53, 0x6b, + 0xea, 0xad, 0x5a, 0xa7, 0x21, 0x41, 0x4a, 0x22, 0xce, 0x7e, 0x73, 0x11, 0x3c, 0x93, 0xda, 0x25, + 0xe2, 0x81, 0xa5, 0x4a, 0xc6, 0x3b, 0x4b, 0x4d, 0xa1, 0xd1, 0x25, 0xe2, 0x24, 0x8e, 0x2e, 0x08, + 0x7b, 0x48, 0xc1, 0xaf, 0x61, 0xb5, 0xc4, 0x7b, 0x67, 0xd9, 0xdf, 0x35, 0x58, 0x7d, 0x3f, 0xe0, + 0x84, 0xa5, 0x04, 0xbb, 0x87, 0xf7, 0x26, 0xfc, 0x15, 0x18, 0x5e, 0x40, 0xb9, 0x17, 0x50, 0x29, + 0x7e, 0xa5, 0x63, 0x3b, 0x79, 0x93, 0x3b, 0xd7, 0xd8, 0x9c, 0x83, 0x63, 0xf7, 0xec, 0xe0, 0xd8, + 0xc5, 0x13, 0x88, 0xbd, 0x03, 0x46, 0x1e, 0x43, 0x75, 0xa8, 0xb9, 0xbd, 0xf4, 0xd9, 0x79, 0x44, + 0x87, 0x1e, 0x17, 0x8d, 0xb9, 0x3c, 0xb0, 0x3f, 0x09, 0x68, 0xf6, 0x17, 0x0d, 0xaa, 0xd8, 0x3d, + 0x3c, 0x4f, 0x7c, 0x4f, 0x10, 0xf4, 0x04, 0x96, 0x3d, 0x3f, 0x25, 0x4c, 0x50, 0x4e, 0x42, 0x12, + 0x09, 0x59, 0xc0, 0x12, 0x9e, 0x0d, 0xa2, 0x2d, 0xa8, 0x53, 0xde, 0xa7, 0x11, 0x15, 0xd4, 0xbb, + 0xec, 0xfb, 0xa3, 0x30, 0x91, 0x32, 0x97, 0xf0, 0x32, 0xe5, 0xae, 0x8a, 0x1e, 0x8d, 0xc2, 0x04, + 0x6d, 0xc1, 0xa2, 0xac, 0x5c, 0x96, 0x7b, 0x93, 0x8d, 0x2a, 0x6d, 0x7f, 0xd3, 0x60, 0x25, 0x03, + 0xdc, 0xa7, 0x85, 0x2f, 0x7e, 0xb6, 0xf0, 0x51, 0x61, 0xe1, 0x2c, 0xd5, 0x5f, 0xfa, 0xb7, 0x0f, + 0xff, 0x14, 0xf7, 0x25, 0x97, 0xe3, 0x69, 0xcd, 0xda, 0xed, 0x35, 0xaf, 0xc9, 0xc6, 0x93, 0x21, + 0xc6, 0x73, 0x29, 0xf6, 0x07, 0xa8, 0xa8, 0x08, 0xda, 0x84, 0x25, 0x3e, 0xe6, 0xfd, 0xc8, 0x0b, + 0x49, 0xee, 0x80, 0xc1, 0xc7, 0xfc, 0x9d, 0x17, 0x12, 0xb4, 0x01, 0x86, 0xb2, 0x80, 0x9b, 0xf3, + 0x4d, 0xbd, 0xb5, 0x80, 0x2b, 0xd2, 0x03, 0x8e, 0x4c, 0x30, 0x3c, 0xdf, 0x67, 0x84, 0x73, 0x59, + 0x72, 0x15, 0x4f, 0xb6, 0xf6, 0x5b, 0x40, 0x65, 0xb2, 0xbc, 0xcd, 0xb7, 0xc1, 0x50, 0xae, 0x4e, + 0xfa, 0xbc, 0x5e, 0x58, 0xa4, 0x8e, 0xe2, 0x49, 0xbe, 0xf3, 0x55, 0x87, 0x4d, 0xac, 0xa6, 0xa3, + 0x1b, 0x05, 0x31, 0x0b, 0x3d, 0x41, 0xe3, 0xe8, 0x8c, 0xb0, 0x94, 0x0e, 0x09, 0xea, 0x80, 0x7e, + 0xd2, 0x3b, 0x45, 0x6b, 0x05, 0x7c, 0x3a, 0x20, 0xad, 0x7f, 0x67, 0x83, 0x8a, 0xda, 0x9e, 0xcb, + 0x30, 0x5d, 0x22, 0x4a, 0x98, 0xe9, 0xa4, 0x2a, 0x61, 0x4a, 0xc3, 0xc4, 0x9e, 0x43, 0x5d, 0x35, + 0xcf, 0x94, 0x26, 0x64, 0xcd, 0x9c, 0x9a, 0x31, 0xd2, 0xfa, 0xff, 0xc6, 0x5c, 0x71, 0xd1, 0x11, + 0x54, 0x8b, 0x57, 0x8f, 0x36, 0xcb, 0x67, 0x67, 0x26, 0x90, 0x65, 0xdd, 0x94, 0x2a, 0x6e, 0x79, + 0x03, 0x30, 0x7d, 0x8d, 0x25, 0x39, 0xd7, 0x9e, 0xa8, 0x85, 0xa6, 0xc6, 0x4e, 0x9e, 0xda, 0xae, + 0x86, 0x5e, 0x82, 0x91, 0xb7, 0x0e, 0xda, 0xf8, 0x45, 0x73, 0x5a, 0xeb, 0xd7, 0x13, 0xc9, 0xe5, + 0x78, 0x57, 0x3b, 0xdc, 0xf9, 0xb8, 0xfd, 0xc7, 0x1f, 0xcb, 0x41, 0x45, 0x7e, 0xba, 0xf6, 0x7e, + 0x04, 0x00, 0x00, 0xff, 0xff, 0x22, 0xcc, 0x06, 0xa4, 0x60, 0x07, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/cmd/ris/api/ris.proto b/cmd/ris/api/ris.proto index 678a9fb4..07736c6c 100644 --- a/cmd/ris/api/ris.proto +++ b/cmd/ris/api/ris.proto @@ -69,6 +69,7 @@ message RIBUpdate { message DumpRIBRequest { string router = 1; uint64 vrf_id = 2; + string vrf = 4; enum AFISAFI { IPv4Unicast = 0; IPv6Unicast = 1; diff --git a/cmd/ris/risserver/server.go b/cmd/ris/risserver/server.go index f9cf5e3e..ba923016 100644 --- a/cmd/ris/risserver/server.go +++ b/cmd/ris/risserver/server.go @@ -217,6 +217,11 @@ func (s *Server) ObserveRIB(req *pb.ObserveRIBRequest, stream pb.RoutingInformat // DumpRIB implements the DumpRIB RPC func (s *Server) DumpRIB(req *pb.DumpRIBRequest, stream pb.RoutingInformationService_DumpRIBServer) error { + vrfID, err := getVRFID(req) + if err != nil { + return err + } + ipVersion := netapi.IP_IPv4 switch req.Afisafi { case pb.DumpRIBRequest_IPv4Unicast: @@ -227,9 +232,9 @@ func (s *Server) DumpRIB(req *pb.DumpRIBRequest, stream pb.RoutingInformationSer return fmt.Errorf("Unknown AFI/SAFI") } - rib, err := s.getRIB(req.Router, req.VrfId, ipVersion) + rib, err := s.getRIB(req.Router, vrfID, ipVersion) if err != nil { - return wrapGetRIBErr(err, req.Router, req.VrfId, ipVersion) + return wrapGetRIBErr(err, req.Router, vrfID, ipVersion) } toSend := &pb.DumpRIBReply{ diff --git a/cmd/riscli/dump_loc_rib.go b/cmd/riscli/dump_loc_rib.go index 50e34670..2baa8245 100644 --- a/cmd/riscli/dump_loc_rib.go +++ b/cmd/riscli/dump_loc_rib.go @@ -47,7 +47,7 @@ func NewDumpLocRIBCommand() cli.Command { client := pb.NewRoutingInformationServiceClient(conn) for _, afisafi := range afisafis { fmt.Printf(" --- Dump %s ---\n", pb.DumpRIBRequest_AFISAFI_name[int32(afisafi)]) - err = dumpRIB(client, c.GlobalString("router"), c.GlobalUint64("vrf_id"), afisafi) + err = dumpRIB(client, c.GlobalString("router"), c.GlobalUint64("vrf_id"), c.GlobalString("vrf"), afisafi) if err != nil { log.Errorf("DumpRIB failed: %v", err) os.Exit(1) @@ -60,10 +60,11 @@ func NewDumpLocRIBCommand() cli.Command { return cmd } -func dumpRIB(c pb.RoutingInformationServiceClient, routerName string, vrfID uint64, afisafi pb.DumpRIBRequest_AFISAFI) error { +func dumpRIB(c pb.RoutingInformationServiceClient, routerName string, vrfID uint64, vrf string, afisafi pb.DumpRIBRequest_AFISAFI) error { client, err := c.DumpRIB(context.Background(), &pb.DumpRIBRequest{ Router: routerName, VrfId: vrfID, + Vrf: vrf, Afisafi: afisafi, }) if err != nil { diff --git a/cmd/riscli/lpm.go b/cmd/riscli/lpm.go index 1c564bcf..e87e6edc 100644 --- a/cmd/riscli/lpm.go +++ b/cmd/riscli/lpm.go @@ -42,7 +42,7 @@ func NewLPMCommand() cli.Command { pfx := bnet.NewPfx(ipAddr, pfxLen) client := pb.NewRoutingInformationServiceClient(conn) - err = lpm(client, c.GlobalString("router"), c.GlobalUint64("vrf_id"), pfx) + err = lpm(client, c.GlobalString("router"), c.GlobalUint64("vrf_id"), c.GlobalString("vrf"), pfx) if err != nil { log.Fatalf("LPM failed: %v", err) } @@ -53,10 +53,11 @@ func NewLPMCommand() cli.Command { return cmd } -func lpm(c pb.RoutingInformationServiceClient, routerName string, vrfID uint64, pfx bnet.Prefix) error { +func lpm(c pb.RoutingInformationServiceClient, routerName string, vrfID uint64, vrf string, pfx bnet.Prefix) error { resp, err := c.LPM(context.Background(), &pb.LPMRequest{ Router: routerName, VrfId: vrfID, + Vrf: vrf, Pfx: pfx.ToProto(), }) if err != nil { diff --git a/cmd/riscli/main.go b/cmd/riscli/main.go index 3350b307..43ce139f 100644 --- a/cmd/riscli/main.go +++ b/cmd/riscli/main.go @@ -27,6 +27,11 @@ func main() { Usage: "VRF ID", Value: 0, }, + cli.StringFlag{ + Name: "vrf", + Usage: "VRF", + Value: "", + }, } app.Commands = []cli.Command{ -- GitLab