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