6 #include <boost/uuid/uuid_io.hpp>
16 using namespace boost::uuids;
24 return std::unique_ptr<DBEntry>(
static_cast<DBEntry *
>(AllocWithKey(k)));
34 (agent()->interface_table()->Find(&intf_key,
true));
40 assign =
static_cast<VrfAssign *
>(vlan_assign);
67 return (static_cast<VrfAssign *>(entry))->Change(req);
72 vrf_assign_table_->Init();
73 return vrf_assign_table_;
87 const std::string &vrf_name, uint16_t vlan_tag) {
98 vrf_assign_table_->Enqueue(&req);
111 req.
data.reset(NULL);
112 vrf_assign_table_->Enqueue(&req);
117 const std::string &vrf_name, uint16_t vlan_tag) {
126 req.
data.reset(data);
128 vrf_assign_table_->Process(req);
141 req.
data.reset(NULL);
142 vrf_assign_table_->Process(req);
150 return static_cast<VrfAssign *
>(vrf_assign_table_->FindActiveEntry(&key));
158 if (type_ != vassign.
type_) {
159 return type_ < vassign.
type_;
162 if (interface_.get() != vassign.
interface_.get()) {
163 return interface_.get() < vassign.
interface_.get();
166 return VrfAssignIsLess(vassign);
175 if (vrf_.get() != vrf) {
180 if (VrfAssignChange(req)) {
208 return (vlan_tag_ < rhs_vassign.
vlan_tag_);
213 key->
VlanInit(interface_->GetUuid(), vlan_tag_);
225 VrfAssignResp *resp =
static_cast<VrfAssignResp *
> (sresp);
227 if (!name.empty() && interface_->name().find(name) != string::npos) {
231 VrfAssignSandeshData data;
234 data.set_vlan_tag(vlan_tag_);
235 data.set_itf(interface_->name());
237 data.set_vrf(vrf_->GetName());
239 data.set_vrf(
"--ERROR--");
241 std::vector<VrfAssignSandeshData> &list =
242 const_cast<std::vector<VrfAssignSandeshData>&
>
243 (resp->get_vrf_assign_list());
244 list.push_back(data);
248 void VrfAssignReq::HandleRequest()
const {
250 sand->DoSandesh(sand);
254 const std::string &context) {
static Agent * GetInstance()
static void DeleteVlan(const boost::uuids::uuid &intf_uuid, uint16_t vlan_tag)
static VrfEntry * FindVrf(const std::string &name)
std::string GetString(const std::string &key) const
VrfEntry * FindVrfFromName(const string &name)
NextHopTable * nexthop_table() const
const std::string vrf_name_
static VrfAssignTable * GetInstance()
std::unique_ptr< DBRequestData > data
AgentDBEntry * FindActiveEntry(const DBEntry *key)
InterfaceTable * interface_table() const
boost::uuids::uuid intf_uuid_
virtual bool OnChange(DBEntry *entry, const DBRequest *req)
std::unique_ptr< DBRequestKey > KeyPtr
bool Change(const DBRequest *req)
void SetKey(const DBRequestKey *key)
void VlanInit(const boost::uuids::uuid intf_uuid, uint16_t vlan_tag)
static DBTableBase * CreateTable(DB *db, const std::string &name)
virtual bool VrfAssignChange(const DBRequest *req)
static VrfAssign * FindVlanReq(const boost::uuids::uuid &intf_uuid, uint16_t vlan_tag)
bool IsLess(const DBEntry &rhs) const
std::unique_ptr< DBRequestKey > key
KeyPtr GetDBRequestKey() const
class boost::shared_ptr< AgentSandesh > AgentSandeshPtr
static void DeleteVlanReq(const boost::uuids::uuid &intf_uuid, uint16_t vlan_tag)
bool DBEntrySandesh(Sandesh *sresp, std::string &name) const
VrfTable * vrf_table() const
virtual AgentSandeshPtr GetAgentSandesh(const AgentSandeshArguments *args, const std::string &context)
static void CreateVlanReq(const boost::uuids::uuid &intf_uuid, const std::string &vrf_name, uint16_t vlan_tag)
static VrfAssignTable * vrf_assign_table_
static void CreateVlan(const boost::uuids::uuid &intf_uuid, const std::string &vrf_name, uint16_t vlan_tag)
virtual std::unique_ptr< DBEntry > AllocEntry(const DBRequestKey *k) const
static Interface * FindInterface(const boost::uuids::uuid &intf_uuid)
bool VrfAssignIsLess(const VrfAssign &rhs) const
VrfAssign * AllocWithKey(const DBRequestKey *k) const
virtual DBEntry * Add(const DBRequest *req)