12 #include "bgp/routing-instance/service_chaining_types.h"
22 const string &search_string,
23 const regex &search_expr,
24 ShowServicechainInfo &info,
34 if (!service_chain_mgr)
38 (search_string !=
"pending" ||
40 (search_string !=
"down" ||
42 (search_string !=
"deleted" || !table->
IsDeleted())) {
59 info.set_src_rt_instance(rtinstance->
name());
62 info.set_connected_rt_instance(rtinstance->
name());
74 bool BgpShowHandler<ShowServiceChainReq, ShowServiceChainReqIterate,
75 ShowServiceChainResp, ShowServicechainInfo>::CallbackCommon(
84 for (uint32_t iter_count = 0; it != rim->
name_cend(); ++it, ++iter_count) {
86 ShowServicechainInfo inet_info;
88 search_expr, inet_info, rinstance)) {
91 ShowServicechainInfo inet6_info;
93 search_expr, inet6_info, rinstance)) {
96 ShowServicechainInfo evpn_info;
98 search_expr, evpn_info, rinstance)) {
101 ShowServicechainInfo evpn6_info;
103 search_expr, evpn6_info, rinstance)) {
107 if (data->
show_list.size() >= page_limit)
109 if (iter_count >= iter_limit)
119 bool done = data->
show_list.size() >= page_limit;
120 SaveContextToData(it->second->name(), done, data);
126 void BgpShowHandler<ShowServiceChainReq, ShowServiceChainReqIterate,
127 ShowServiceChainResp, ShowServicechainInfo>::FillShowList(
128 ShowServiceChainResp *resp,
129 const vector<ShowServicechainInfo> &show_list) {
130 resp->set_service_chain_list(show_list);
134 void ShowServiceChainReq::HandleRequest()
const {
142 ShowServiceChainReqIterate,
143 ShowServiceChainResp,
144 ShowServicechainInfo>::Callback, _1, _2, _3, _4, _5);
147 ShowServiceChainReqIterate,
148 ShowServiceChainResp,
149 ShowServicechainInfo>::CreateData;
151 ps.stages_.push_back(s1);
158 void ShowServiceChainReqIterate::HandleRequest()
const {
166 ShowServiceChainReqIterate,
167 ShowServiceChainResp,
168 ShowServicechainInfo>::CallbackIterate, _1, _2, _3, _4, _5);
171 ShowServiceChainReqIterate,
172 ShowServiceChainResp,
173 ShowServicechainInfo>::CreateData;
175 ps.stages_.push_back(s1);
std::vector< int > instances_
static Address::Family SCFamilyToAddressFamily(Family family)
BgpTable * GetTable(Address::Family fmly)
The TaskScheduler keeps track of what tasks are currently schedulable. When a task is enqueued it is ...
static bool FillServiceChainInfo(SCAddress::Family sc_family, const string &search_string, const regex &search_expr, ShowServicechainInfo &info, RoutingInstance *rtinstance)
const_name_iterator name_cend()
std::string GetVNFromRoutingInstance(const std::string &vn)
RoutingInstanceMgr * routing_instance_mgr()
const std::string & name() const
int GetTaskId(const std::string &name)
static bool regex_match(const std::string &input, const regex ®ex)
const ServiceChainConfig * service_chain_info(SCAddress::Family family) const
static TaskScheduler * GetInstance()
virtual bool FillServiceChainInfo(RoutingInstance *rtinstance, ShowServicechainInfo *info) const =0
uint32_t iter_limit() const
IServiceChainMgr * service_chain_mgr(SCAddress::Family family)
std::string routing_instance
RoutingInstanceList::const_iterator const_name_iterator
const_name_iterator name_clower_bound(const std::string &name)
std::vector< ShowT > show_list
const BgpInstanceConfig * config() const
const std::string & name() const
std::string source_routing_instance
virtual bool ServiceChainIsPending(RoutingInstance *rtinstance, std::string *reason=NULL) const =0
std::string search_string
static bool regex_search(const std::string &input, const regex ®ex)
std::string service_instance
static std::string FamilyToString(Family fmly)
uint32_t page_limit() const
const std::string GetVirtualNetworkName() const
virtual bool ServiceChainIsUp(RoutingInstance *rtinstance) const =0
std::string service_chain_address
std::string service_chain_id