5 #ifndef vnsw_agent_vrf_hpp
6 #define vnsw_agent_vrf_hpp
11 #include <oper/agent_types.h>
18 class ComponentNHData;
26 void Init(
const string &vrf_name) {
name_ = vrf_name;};
32 if ((
IsLess(rhs) ==
false) && (rhs.
IsLess(*
this) ==
false)) {
59 const std::string bmac_vrf_name,
60 uint32_t mac_aging_time,
bool learning_enabled,
168 const ComponentNHData &nh_data);
178 bool flod_unknown_unicast,
277 typedef std::set<std::string, boost::uuids::uuid>
CfgVmiTree;
301 const std::string &context);
302 virtual void Clear();
309 uint32_t isid,
const std::string& bmac_vrf_name,
310 uint32_t mac_aging_time,
bool learning_enabled);
336 (
const std::string &vrf_name);
338 (
const std::string &vrf_name);
344 (
const std::string &vrf_name);
boost::asio::ip::address IpAddress
boost::asio::ip::address_v4 Ip4Address
boost::intrusive_ptr< NextHop > NextHopRef
boost::intrusive_ptr< VnEntry > VnEntryRef
class boost::shared_ptr< AgentSandesh > AgentSandeshPtr
boost::intrusive_ptr< AgentRouteWalker > AgentRouteWalkerPtr
uint32_t GetRefCount() const
Agent supports multiple route tables - Inet-unicast (IPv4/IPv6), Inet-multicast, bridge,...
std::unique_ptr< DBRequestKey > KeyPtr
const std::string & name() const
boost::intrusive_ptr< IFMapNodeState > IFMapNodePtr
static const uint32_t kInvalidIndex
const std::string & GetExportName()
void set_allow_route_add_on_deleted_vrf(bool val)
const string & GetName() const
IFMapDependencyManager::IFMapNodePtr vrf_node_ptr_
uint32_t table_label() const
void DeleteNH(Ip4Address ip, uint8_t plen, ComponentNHData *nh_data)
void set_hbf_lintf(uint32_t idx)
DBTableWalker::WalkId walkid_
AgentRouteTable * GetBridgeRouteTable() const
void set_table_label(uint32_t label)
bool layer2_control_word_
bool learning_enabled() const
void CreateTableLabel(bool learning_enabled, bool l2, bool flod_unknown_unicast, bool layer2_control_word)
bool DBEntrySandesh(Sandesh *sresp, std::string &name) const
void set_mac_aging_time(uint32_t aging_time)
virtual void SetKey(const DBRequestKey *key)
bool allow_route_add_on_deleted_vrf() const
VrfEntryRef forwarding_vrf_
DISALLOW_COPY_AND_ASSIGN(VrfEntry)
bool RouteTableDeleted(uint8_t table_type) const
const std::string GetTableTypeString(uint8_t table_type) const
bool ShouldExportRoute() const
const std::string bmac_vrf_name() const
tbb::mutex delete_reuse_mutex_
InetUnicastAgentRouteTable * GetInet4MplsUnicastRouteTable() const
const uint32_t hbf_lintf() const
std::vector< ComponentNHData > * GetNHList(Ip4Address ip, uint8_t plen)
tbb::atomic< uint32_t > mac_aging_time_
const uint32_t hbf_rintf() const
virtual string ToString() const
bool UpdateVxlanId(Agent *agent, uint32_t new_vxlan_id)
void set_flags(uint32_t flags)
AgentRouteTable * rt_table_db_[Agent::ROUTE_TABLE_MAX]
uint32_t GetLabel(Ip4Address ip, uint8_t plen)
InetUnicastRouteEntry * GetUcRoute(const IpAddress &addr) const
void set_routing_vrf(bool val)
InetUnicastAgentRouteTable * GetInet4UnicastRouteTable() const
static const uint32_t kDeleteTimeout
uint32_t mac_aging_time() const
VrfEntry(const string &name, uint32_t flags, Agent *agent)
boost::scoped_ptr< DeleteActor > deleter_
void set_hbf_rintf(uint32_t idx)
static const uint32_t kInvalidIndex
InetUnicastAgentRouteTable * GetInet6UnicastRouteTable() const
virtual bool IsLess(const DBEntry &rhs) const
const uint32_t vrf_id() const
uint32_t rt_table_delete_bmap_
void AddNH(Ip4Address ip, uint8_t plen, ComponentNHData *nh_data)
LifetimeActor * deleter()
InetUnicastAgentRouteTable * GetInetUnicastRouteTable(const IpAddress &addr) const
AgentRouteTable * GetEvpnRouteTable() const
bool FindNH(const Ip4Address &ip, uint8_t plen, const ComponentNHData &nh_data)
AgentRouteTable * GetInet4MulticastRouteTable() const
bool are_flags_set(const VrfData::VrfEntryFlags &flags) const
virtual void RetryDelete()
bool allow_route_add_on_deleted_vrf_
bool AllRouteTableDeleted() const
uint32_t vxlan_id() const
VrfEntry * forwarding_vrf() const
VnEntry * si_vn_ref() const
void SetRouteTableDeleted(uint8_t table_type)
void SendObjectLog(AgentLogEvent::type event) const
virtual KeyPtr GetDBRequestKey() const
uint32_t GetRefCount() const
uint32_t GetNHCount(Ip4Address ip, uint8_t plen)
bool AllRouteTablesEmpty() const
bool layer2_control_word() const
AgentRouteWalkerPtr route_resync_walker_
AgentRouteTable * GetRouteTable(uint8_t table_type) const
int RDInstanceId(bool tor_agent_enabled) const
Timer * delete_timeout_timer_
void UpdateLabel(Ip4Address ip, uint8_t plen, uint32_t label)
IndexVector< VrfEntry * > index_table_
void DeleteFromDbTree(int table_type, const std::string &vrf_name)
virtual DBEntry * OperDBAdd(const DBRequest *req)
virtual bool IFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
static DBTableBase * CreateTable(DB *db, const std::string &name)
bool ProcessConfig(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
void DeleteVrf(const string &name, uint32_t flags=VrfData::ConfigVrf)
void CreateFabricPolicyVrf(const string &name)
void reset_route_delete_walker()
AgentRouteWalkerPtr vrf_delete_walker_
pair< string, RouteTable * > VrfDbPair
VrfEntry * FindVrfFromName(const string &name)
VrfEntry * FindVrfFromIdIncludingDeletedVrf(size_t index)
InetUnicastAgentRouteTable * GetInet6UnicastRouteTable(const std::string &vrf_name)
void reset_vrf_delete_walker()
map< string, VrfEntry * > VrfNameTree
AgentRouteTable * GetEvpnRouteTable(const std::string &vrf_name)
map< string, RouteTable * > VrfDbTree
void DeleteStaticVrf(const string &name)
static VrfTable * vrf_table_
void VrfReuse(std::string name)
VrfTable(DB *db, const std::string &name)
virtual void Input(DBTablePartition *root, DBClient *client, DBRequest *req)
void DeleteVrfReq(const string &name, uint32_t flags=VrfData::ConfigVrf)
DBTableWalker::WalkId walkid_
virtual std::unique_ptr< DBEntry > AllocEntry(const DBRequestKey *k) const
virtual size_t Hash(const DBRequestKey *key) const
pair< string, VrfEntry * > VrfNamePair
AgentRouteWalkerPtr route_delete_walker_
AgentRouteTable * GetRouteTable(const string &vrf_name, uint8_t table_type)
AgentRouteTable * GetBridgeRouteTable(const std::string &vrf_name)
std::set< std::string, boost::uuids::uuid > CfgVmiTree
static const uint32_t kDefaultMacAgingTime
VrfEntry * FindVrfFromId(size_t index)
void CreateStaticVrf(const string &name)
void CreateVrf(const string &name, const boost::uuids::uuid &vn_uuid, uint32_t flags)
VrfDbTree dbtree_[Agent::ROUTE_TABLE_MAX]
DISALLOW_COPY_AND_ASSIGN(VrfTable)
InetUnicastAgentRouteTable * GetInet4UnicastRouteTable(const std::string &vrf_name)
virtual AgentSandeshPtr GetAgentSandesh(const AgentSandeshArguments *args, const std::string &context)
bool IsStaticVrf(const std::string &vrf_name) const
void FreeVrfId(size_t index)
virtual void OnZeroRefcount(AgentDBEntry *e)
void CreateVrfReq(const string &name, uint32_t flags=VrfData::ConfigVrf)
AgentRouteTable * GetInet4MulticastRouteTable(const std::string &vrf_name)
InetUnicastAgentRouteTable * GetInet4MplsUnicastRouteTable(const std::string &vrf_name)
virtual bool OperDBOnChange(DBEntry *entry, const DBRequest *req)
virtual size_t Hash(const DBEntry *entry) const
static VrfTable * GetInstance()
std::set< std::string > static_vrf_set_
virtual bool OperDBDelete(DBEntry *entry, const DBRequest *req)
const Agent * agent() const
boost::uuids::uuid vn_uuid_
boost::uuids::uuid si_vn_ref_uuid_
VrfData(Agent *agent, IFMapNode *node, uint32_t flags, const boost::uuids::uuid &vn_uuid, uint32_t isid, const std::string bmac_vrf_name, uint32_t mac_aging_time, bool learning_enabled, uint32_t hbf_rintf=Interface::kInvalidIndex, uint32_t hbf_lintf=Interface::kInvalidIndex)
std::string forwarding_vrf_name_
std::string bmac_vrf_name_
VrfKey(const string &name)
void Init(const string &vrf_name)
bool IsLess(const VrfKey &rhs) const
bool IsEqual(const VrfKey &rhs) const