20 void KInterfaceReq::HandleRequest()
const {
22 KInterfaceResp *resp =
new KInterfaceResp();
23 resp->set_context(context());
30 void KRouteReq::HandleRequest()
const {
32 int prefix_size, family_id;
33 std::string family = get_family();
35 if(family ==
"inet6") {
38 }
else if(family ==
"bridge") {
40 family_id = AF_BRIDGE;
41 }
else if(family ==
"inet") {
45 std::string msg(
"Allowed options for family are inet, inet6, bridge");
46 ErrResp *resp =
new ErrResp();
48 resp->set_context(context());
53 std::vector<int8_t> marker(prefix_size, 0);
54 if(family_id == AF_BRIDGE) {
55 req.set_rtr_mac(marker);
58 req.set_rtr_prefix(marker);
59 req.set_rtr_marker_plen(0);
61 req.set_rtr_marker(marker);
62 KRouteResp *resp =
new KRouteResp();
63 resp->set_context(context());
65 RouteKState *kstate =
new RouteKState(resp, context(), req, get_vrf_id(), family_id, sandesh_op::DUMP, prefix_size);
69 void KRouteGetReq::HandleRequest()
const {
71 int family_id, prefix_size;
72 boost::system::error_code ec;
73 IpAddress addr(IpAddress::from_string(get_prefix(), ec));
78 Ip4Address::bytes_type bytes = addr.to_v4().to_bytes();
79 std::vector<int8_t> rtr_prefix(bytes.begin(), bytes.end());
80 req.set_rtr_prefix(rtr_prefix);
81 }
else if(addr.is_v6()) {
84 Ip6Address::bytes_type bytes = addr.to_v6().to_bytes();
85 std::vector<int8_t> rtr_prefix(bytes.begin(), bytes.end());
86 req.set_rtr_prefix(rtr_prefix);
88 std::string msg(
"Allowed options for family are inet, inet6");
89 ErrResp *resp =
new ErrResp();
91 resp->set_context(context());
95 std::vector<int8_t> marker(prefix_size, 0);
97 req.set_rtr_marker(marker);
98 req.set_rtr_marker_plen(0);
99 req.set_rtr_prefix_len(get_prefix_len());
100 KRouteResp *resp =
new KRouteResp();
101 resp->set_context(context());
107 void KNHReq::HandleRequest()
const {
109 KNHResp *resp =
new KNHResp();
110 resp->set_context(context());
116 void KMplsReq::HandleRequest()
const {
118 KMplsResp *resp =
new KMplsResp();
119 resp->set_context(context());
125 void NextKFlowReq::HandleRequest()
const {
128 vector<string> tokens;
129 boost::split(tokens, get_flow_handle(), boost::is_any_of(
" "));
130 if (tokens.size() == 2) {
137 void KFlowReq::HandleRequest()
const {
145 void KMirrorReq::HandleRequest()
const {
147 KMirrorResp *resp =
new KMirrorResp();
148 resp->set_context(context());
155 void KVrfAssignReq::HandleRequest()
const {
156 vr_vrf_assign_req req;
157 KVrfAssignResp *resp =
new KVrfAssignResp();
158 resp->set_context(context());
165 void KVrfReq::HandleRequest()
const {
167 KVrfResp *resp =
new KVrfResp();
168 resp->set_context(context());
175 void KVrfStatsReq::HandleRequest()
const {
176 vr_vrf_stats_req req;
177 KVrfStatsResp *resp =
new KVrfStatsResp();
178 resp->set_context(context());
185 void KDropStatsReq::HandleRequest()
const {
186 vr_drop_stats_req req;
187 KDropStatsResp *resp =
new KDropStatsResp();
188 resp->set_context(context());
194 void KVxLanReq::HandleRequest()
const {
196 KVxLanResp *resp =
new KVxLanResp();
197 resp->set_context(context());
204 void KQosConfigReq::HandleRequest()
const {
207 KQosConfigResp *resp =
new KQosConfigResp();
208 resp->set_context(context());
215 void KForwardingClassReq::HandleRequest()
const {
217 KForwardingClassResp *resp =
new KForwardingClassResp();
218 resp->set_context(context());
static Agent * GetInstance()
The TaskScheduler keeps track of what tasks are currently schedulable. When a task is enqueued it is ...
void set_evicted_flag(bool show_evicted)
boost::asio::ip::address IpAddress
static TaskScheduler * GetInstance()
void Enqueue(Task *task)
Enqueues a task for running. Starts task if all policy rules are met else puts task in waitq...
void EncodeAndSend(Sandesh &encoder)