7 #include <boost/foreach.hpp>
12 #include "bgp/bgp_peer_internal_types.h"
30 srit->set_name(table->
name());
37 srit->set_markers(markers);
40 srit->set_prefixes(table->
Size());
46 srit->set_paths(srit->get_primary_paths() + srit->get_secondary_paths());
55 sri->set_name(rtinstance->
name());
58 sri->set_vxlan_id(rtinstance->
vxlan_id());
59 sri->set_deleted(rtinstance->
deleted());
62 vector<string> import_rt;
64 import_rt.push_back(rt.ToString());
66 sri->set_import_target(import_rt);
67 vector<string> export_rt;
69 export_rt.push_back(rt.ToString());
71 sri->set_export_target(export_rt);
80 vector<ShowRoutingInstanceTable> srit_list;
82 for (RoutingInstance::RouteTableList::const_iterator it =
83 tables.begin(); it != tables.end(); ++it) {
84 ShowRoutingInstanceTable srit;
87 srit_list.push_back(srit);
89 sri->set_tables(srit_list);
91 vector<ShowInstanceRoutingPolicyInfo> policy_list;
93 ShowInstanceRoutingPolicyInfo show_policy_info;
95 show_policy_info.set_policy_name(policy->name());
96 show_policy_info.set_generation(info.second);
97 policy_list.push_back(show_policy_info);
99 sri->set_routing_policies(policy_list);
103 vector<string> neighbors;
105 peer != NULL; peer = peer_manager->
NextPeer(peer->peer_key())) {
106 neighbors.push_back(peer->peer_name());
108 sri->set_neighbors(neighbors);
118 bool summary, uint32_t page_limit, uint32_t iter_limit,
119 const string &start_instance,
const string &search_string,
120 vector<ShowRoutingInstance> *sri_list,
string *next_instance) {
121 regex search_expr(search_string);
125 for (uint32_t iter_count = 0; it != rim->
name_cend(); ++it, ++iter_count) {
127 if (!search_string.empty() &&
129 (search_string !=
"deleted" || !rtinstance->
deleted())) {
132 ShowRoutingInstance sri;
134 sri_list->push_back(sri);
135 if (sri_list->size() >= page_limit)
137 if (iter_count >= iter_limit)
147 bool done = sri_list->size() >= page_limit;
148 *next_instance = it->second->name();
156 bool BgpShowHandler<ShowRoutingInstanceReq, ShowRoutingInstanceReqIterate,
157 ShowRoutingInstanceResp, ShowRoutingInstance>::CallbackCommon(
161 string next_instance;
165 if (!next_instance.empty())
166 SaveContextToData(next_instance, done, data);
174 void BgpShowHandler<ShowRoutingInstanceReq, ShowRoutingInstanceReqIterate,
175 ShowRoutingInstanceResp, ShowRoutingInstance>::FillShowList(
176 ShowRoutingInstanceResp *resp,
177 const vector<ShowRoutingInstance> &show_list) {
178 resp->set_instances(show_list);
186 ShowRoutingInstanceSummaryReqIterate,
187 ShowRoutingInstanceSummaryResp, ShowRoutingInstance>::CallbackCommon(
191 string next_instance;
195 if (!next_instance.empty())
196 SaveContextToData(next_instance, done, data);
205 ShowRoutingInstanceSummaryReqIterate,
206 ShowRoutingInstanceSummaryResp, ShowRoutingInstance>::FillShowList(
207 ShowRoutingInstanceSummaryResp *resp,
208 const vector<ShowRoutingInstance> &show_list) {
209 resp->set_instances(show_list);
215 void ShowRoutingInstanceReq::HandleRequest()
const {
222 ShowRoutingInstanceReq,
223 ShowRoutingInstanceReqIterate,
224 ShowRoutingInstanceResp,
225 ShowRoutingInstance>::Callback, _1, _2, _3, _4, _5);
227 ShowRoutingInstanceReq,
228 ShowRoutingInstanceReqIterate,
229 ShowRoutingInstanceResp,
230 ShowRoutingInstance>::CreateData;
232 ps.stages_.push_back(s1);
239 void ShowRoutingInstanceReqIterate::HandleRequest()
const {
246 ShowRoutingInstanceReq,
247 ShowRoutingInstanceReqIterate,
248 ShowRoutingInstanceResp,
249 ShowRoutingInstance>::CallbackIterate, _1, _2, _3, _4, _5);
251 ShowRoutingInstanceReq,
252 ShowRoutingInstanceReqIterate,
253 ShowRoutingInstanceResp,
254 ShowRoutingInstance>::CreateData;
256 ps.stages_.push_back(s1);
263 void ShowRoutingInstanceSummaryReq::HandleRequest()
const {
270 ShowRoutingInstanceSummaryReq,
271 ShowRoutingInstanceSummaryReqIterate,
272 ShowRoutingInstanceSummaryResp,
273 ShowRoutingInstance>::Callback, _1, _2, _3, _4, _5);
275 ShowRoutingInstanceSummaryReq,
276 ShowRoutingInstanceSummaryReqIterate,
277 ShowRoutingInstanceSummaryResp,
278 ShowRoutingInstance>::CreateData;
280 ps.stages_.push_back(s1);
287 void ShowRoutingInstanceSummaryReqIterate::HandleRequest()
const {
294 ShowRoutingInstanceSummaryReq,
295 ShowRoutingInstanceSummaryReqIterate,
296 ShowRoutingInstanceSummaryResp,
297 ShowRoutingInstance>::CallbackIterate, _1, _2, _3, _4, _5);
299 ShowRoutingInstanceSummaryReq,
300 ShowRoutingInstanceSummaryReqIterate,
301 ShowRoutingInstanceSummaryResp,
302 ShowRoutingInstance>::CreateData;
304 ps.stages_.push_back(s1);
std::vector< int > instances_
static bool FillRoutingInstanceInfoList(const BgpSandeshContext *bsc, bool summary, uint32_t page_limit, uint32_t iter_limit, const string &start_instance, const string &search_string, vector< ShowRoutingInstance > *sri_list, string *next_instance)
const RouteTargetList & GetImportList() const
uint64_t walk_request_count() const
The TaskScheduler keeps track of what tasks are currently schedulable. When a task is enqueued it is ...
const RouteTargetList & GetExportList() const
PeerManager * peer_manager()
int virtual_network_index() const
const uint64_t GetLlgrStalePathCount() const
const_name_iterator name_cend()
RoutingInstanceMgr * routing_instance_mgr()
const std::string & name() const
RoutingPolicyAttachList * routing_policies()
int GetTaskId(const std::string &name)
RouteTableList & GetTables()
static bool regex_match(const std::string &input, const regex ®ex)
bool virtual_network_allow_transit() const
const BgpPeer * NextPeer(const BgpPeerKey &key) const
uint64_t walk_complete_count() const
virtual size_t Size() const
const uint64_t GetInfeasiblePathCount() const
static TaskScheduler * GetInstance()
uint32_t iter_limit() const
static void FillRoutingInstanceTableInfo(ShowRoutingInstanceTable *srit, const BgpSandeshContext *bsc, const BgpTable *table)
uint64_t walk_cancel_count() const
RoutingInstanceList::const_iterator const_name_iterator
const_name_iterator name_clower_bound(const std::string &name)
std::vector< ShowT > show_list
const std::string & name() const
std::string search_string
static bool regex_search(const std::string &input, const regex ®ex)
void FillRoutingInstanceTableInfo(ShowRoutingInstanceTable *srit, const BgpTable *table) const
LifetimeActor * deleter()
std::map< std::string, BgpTable * > RouteTableList
size_t GetPendingRiboutsCount(size_t *markers) const
bool virtual_network_pbb_evpn_enable() const
const uint64_t GetPrimaryPathCount() const
uint32_t page_limit() const
size_t GetListenerCount() const
const std::string GetVirtualNetworkName() const
uint64_t walker_count() const
BgpMembershipManager * membership_mgr()
boost::intrusive_ptr< RoutingPolicy > RoutingPolicyPtr
const uint64_t delete_time_stamp_usecs() const
const uint64_t GetStalePathCount() const
bool always_subscribe() const
const uint64_t GetSecondaryPathCount() const
static std::string UTCUsecToString(uint64_t tstamp)
static void FillRoutingInstanceInfo(ShowRoutingInstance *sri, const BgpSandeshContext *bsc, const RoutingInstance *rtinstance, bool summary)