syntax = "proto3"; package bio.ris; import "net/api/net.proto"; import "route/api/route.proto"; option go_package = "github.com/bio-routing/bio-rd/cmd/ris/api"; service RoutingInformationService { rpc LPM(LPMRequest) returns (LPMResponse) {}; rpc Get(GetRequest) returns (GetResponse) {}; rpc GetRouters(GetRoutersRequest) returns (GetRoutersResponse) {}; rpc GetLonger(GetLongerRequest) returns (GetLongerResponse) {}; rpc ObserveRIB(ObserveRIBRequest) returns (stream RIBUpdate); rpc DumpRIB(DumpRIBRequest) returns (stream DumpRIBReply); } message LPMRequest { string router = 1; uint64 vrf_id = 2; string vrf = 4; bio.net.Prefix pfx = 3; } message LPMResponse { repeated bio.route.Route routes = 1; } message GetRequest { string router = 1; uint64 vrf_id = 2; string vrf = 4; bio.net.Prefix pfx = 3; } message GetResponse { repeated bio.route.Route routes = 1; } message GetLongerRequest { string router = 1; uint64 vrf_id = 2; string vrf = 4; bio.net.Prefix pfx = 3; } message GetLongerResponse { repeated bio.route.Route routes = 1; } message ObserveRIBRequest { string router = 1; uint64 vrf_id = 2; string vrf = 4; enum AFISAFI { IPv4Unicast = 0; IPv6Unicast = 1; } AFISAFI afisafi = 3; bool allow_unready_rib = 5; } message RIBFilter { uint32 originating_asn = 1; uint32 min_length = 2; uint32 max_length = 3; } message RIBUpdate { bool advertisement = 1; bool is_initial_dump = 3; bool end_of_rib = 4; bio.route.Route route = 2; } message DumpRIBRequest { string router = 1; uint64 vrf_id = 2; string vrf = 4; enum AFISAFI { IPv4Unicast = 0; IPv6Unicast = 1; } AFISAFI afisafi = 3; RIBFilter filter = 5; } message DumpRIBReply { bio.route.Route route = 1; } message GetRoutersRequest { } message Router { string sys_name = 1; repeated uint64 vrf_ids = 2; string address = 3; } message GetRoutersResponse { repeated Router routers = 1; }