OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
vrf_kstate.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #include "kstate.h"
6 #include "vrf_kstate.h"
7 
8 VrfKState::VrfKState(KVrfResp *obj,
9  const std::string &resp_ctx,
10  vr_vrf_req &req, int id) :
11  KState(resp_ctx, obj) {
12 
13  req.set_h_op(sandesh_op::DUMP);
14  req.set_vrf_idx(id);
15  req.set_vrf_marker(-1);
16 }
17 
19  VrfContext *ctx = boost::any_cast<VrfContext *>(more_context_);
20  vr_vrf_req req;
21 
22  req.set_h_op(sandesh_op::DUMP);
23  req.set_vrf_idx(ctx->vrf_idx_);
24  req.set_vrf_hbfl_vif_idx(ctx->hbf_lintf_);
25  req.set_vrf_hbfr_vif_idx(ctx->hbf_rintf_);
26  req.set_vrf_marker(ctx->marker_);
27  EncodeAndSend(req);
28 }
29 
31  KVrfResp *resp = static_cast<KVrfResp *>(response_object_);
32  if (resp) {
33  if (MoreData()) {
34  /* There are more labels in Kernel. We need to query them from
35  * Kernel and send it to Sandesh.
36  */
37  SendResponse();
39  } else {
40  resp->set_context(response_context_);
41  resp->Response();
42  if (!more_context_.empty()) {
43  VrfContext *ctx =
44  boost::any_cast<VrfContext *>(more_context_);
45  if (ctx) {
46  delete ctx;
47  more_context_ = boost::any();
48  }
49  }
50  }
51  }
52 }
53 
55  KVrfResp *resp = static_cast<KVrfResp *>(response_object_);
56  resp->set_context(response_context_);
57  resp->set_more(true);
58  resp->Response();
59 
60  response_object_ = new KVrfResp();
61 }
uint32_t hbf_lintf_
Definition: vrf_kstate.h:19
int marker_
Definition: vrf_kstate.h:21
std::string response_context_
Definition: kstate.h:63
uint32_t vrf_idx_
Definition: vrf_kstate.h:18
virtual void Handler()
Definition: vrf_kstate.cc:30
Definition: kstate.h:24
boost::any more_context_
Definition: kstate.h:66
virtual void SendNextRequest()
Definition: vrf_kstate.cc:18
Sandesh * response_object_
Definition: kstate.h:64
virtual void SendResponse()
Definition: vrf_kstate.cc:54
uint32_t hbf_rintf_
Definition: vrf_kstate.h:20
bool MoreData() const
Definition: kstate.cc:29
void EncodeAndSend(Sandesh &encoder)
Definition: kstate.cc:63
VrfKState(KVrfResp *obj, const std::string &resp_ctx, vr_vrf_req &req, int id)
Definition: vrf_kstate.cc:8