4 #ifndef vnsw_agent_interface_hpp 
    5 #define vnsw_agent_interface_hpp 
   13 #include <boost/optional.hpp> 
   86     virtual void Add() { }
 
  123     const uint32_t 
id()
 const {
return id_;}
 
  207                  const std::string &name, 
bool is_mcast) :
 
  212               const std::string &name) {
 
  231         if ((
IsLess(rhs) == 
false) && (rhs.
IsLess(*
this) == 
false)) {
 
  295 typedef std::map<boost::uuids::uuid, VmiToPhysicalDeviceVnData>
 
  339                                             const std::string &context);
 
  416                                           std::string *vm_uuid,
 
  417                                           std::string *vm_project_uuid);
 
  466     virtual void Clear();
 
boost::asio::ip::address_v6 Ip6Address
 
boost::asio::ip::address IpAddress
 
boost::asio::ip::address_v4 Ip4Address
 
boost::intrusive_ptr< const Interface > InterfaceConstRef
 
boost::intrusive_ptr< const AgentQosConfig > AgentQosConfigConstRef
 
boost::intrusive_ptr< const NextHop > NextHopConstRef
 
class boost::shared_ptr< AgentSandesh > AgentSandeshPtr
 
uint32_t GetRefCount() const
 
std::unique_ptr< DBRequestKey > KeyPtr
 
const std::string & name() const
 
boost::intrusive_ptr< DBTableWalk > DBTableWalkRef
 
VnEntry * FindVnRef(const boost::uuids::uuid &uuid) const
 
void DelVmiToVmiType(const boost::uuids::uuid &u)
 
const Ip4Address GetDhcpSnoopEntry(const std::string &ifname)
 
const UpdateFloatingIpFn & update_floatingip_cb() const
 
uint32_t li_ifnode_to_req() const
 
virtual ~InterfaceTable()
 
void DhcpSnoopSetConfigSeen(const std::string &ifname)
 
bool PhysicalInterfaceProcessConfig(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
 
void RegisterDBClients(IFMapDependencyManager *dep)
 
bool RemotePhysicalInterfaceIFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
 
std::unique_ptr< DBEntry > AllocEntry(const DBRequestKey *k) const
 
uint32_t active_vmi_count() const
 
uint32_t vmi_count() const
 
void incr_active_vmi_count()
 
UpdateFloatingIpFn update_floatingip_cb_
 
bool LogicalInterfaceProcessConfig(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
 
uint32_t pi_ifnode_to_req_
 
tbb::mutex dhcp_snoop_mutex_
 
int GetVmiToVmiType(const boost::uuids::uuid &u)
 
size_t Hash(const DBEntry *entry) const
 
bool L2VmInterfaceWalk(DBTablePartBase *partition, DBEntryBase *entry)
 
VmiToPhysicalDeviceVnTree vmi_to_physical_device_vn_tree_
 
bool IFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
 
InterfaceTable(DB *db, const std::string &name)
 
bool OperDBOnChange(DBEntry *entry, const DBRequest *req)
 
std::map< const std::string, DhcpSnoopEntry >::iterator DhcpSnoopIterator
 
std::map< const std::string, DhcpSnoopEntry > DhcpSnoopMap
 
void AddVmiToVmiType(const boost::uuids::uuid &u, int type)
 
bool VmiProcessConfig(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
 
void DelPhysicalDeviceVnEntry(const boost::uuids::uuid &vmi)
 
static InterfaceTable * GetInstance()
 
bool IFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u)
 
MirrorEntry * FindMirrorRef(const std::string &name) const
 
bool LogicalInterfaceIFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u)
 
const Interface * FindInterface(size_t index) const
 
static DBTableBase * CreateTable(DB *db, const std::string &name)
 
uint32_t active_vmi_count_
 
bool LogicalInterfaceIFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
 
boost::function< void(VmInterface *, const VnEntry *, const IpAddress &, bool)> UpdateFloatingIpFn
 
std::map< boost::uuids::uuid, int > VmiToVmiTypeMap
 
DhcpSnoopMap dhcp_snoop_map_
 
DBEntry * OperDBAdd(const DBRequest *req)
 
bool OperDBResync(DBEntry *entry, const DBRequest *req)
 
bool InterfaceCommonProcessConfig(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
 
void UpdatePhysicalDeviceVnEntry(const boost::uuids::uuid &vmi, boost::uuids::uuid &dev, boost::uuids::uuid &vn, IFMapNode *vn_node)
 
IndexVector< Interface * > index_table_
 
bool VmiIFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u)
 
virtual AgentSandeshPtr GetAgentSandesh(const AgentSandeshArguments *args, const std::string &context)
 
bool ProcessConfig(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
 
void set_update_floatingip_cb(UpdateFloatingIpFn fn)
 
bool PhysicalInterfaceIFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
 
DISALLOW_COPY_AND_ASSIGN(InterfaceTable)
 
bool VmiIFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
 
void AddDhcpSnoopEntry(const std::string &ifname, const Ip4Address &addr)
 
void LinkVmPortToMetaDataIp(const Interface *intf, const Ip6Address &addr)
Creates a link between a given interface (Interface) and a given IPv6 address.
 
size_t Hash(const DBRequestKey *key) const
 
uint32_t li_ifnode_to_req_
 
uint32_t vmi_ifnode_to_req() const
 
void FreeInterfaceId(size_t index)
 
uint32_t li_count() const
 
void AuditDhcpSnoopTable()
 
const Interface * FindInterfaceFromMetadataIp(const Ip4Address &ip) const
Finds an interface (Interface) to which a given IPv4 address belongs to.
 
static InterfaceTable * interface_table_
 
DBTable::DBTableWalkRef global_config_change_walk_ref_
 
uint32_t pi_ifnode_to_req() const
 
InterfaceConstRef FindVmi(const boost::uuids::uuid &u)
 
VmiToVmiTypeMap vmi_to_vmitype_map_
 
uint32_t vmi_ifnode_to_req_
 
bool OperDBDelete(DBEntry *entry, const DBRequest *req)
 
void DeleteDhcpSnoopEntry(const std::string &ifname)
 
void decr_active_vmi_count()
 
VmEntry * FindVmRef(const boost::uuids::uuid &uuid) const
 
void GlobalVrouterConfigChanged()
 
virtual bool FindVmUuidFromMetadataIp(const IpAddress &ip, std::string *vm_ip, std::string *vm_uuid, std::string *vm_project_uuid)
Finds information about a virtual machine connected to a given vm interface with a specified link loc...
 
void VmInterfaceWalkDone(DBTable::DBTableWalkRef walk_ref, DBTableBase *partition)
 
VrfEntry * FindVrfRef(const std::string &name) const
 
const boost::uuids::uuid & logical_router_uuid() const
 
NextHopConstRef flow_key_nh_
 
const NextHop * flow_key_nh() const
 
Interface(Type type, const boost::uuids::uuid &uuid, const std::string &name, VrfEntry *vrf, bool os_oper_state, const boost::uuids::uuid &logical_router_uuid)
 
InterfaceOsParams get_os_params()
 
const MacAddress & mac() const
 
virtual void SendTrace(const AgentDBTable *table, Trace event) const
 
DISALLOW_COPY_AND_ASSIGN(Interface)
 
bool ip_active(Address::Family family) const
 
bool DBEntrySandesh(Sandesh *sresp, std::string &name) const
 
void UpdateOperStateOfSubIntf(const InterfaceTable *table)
 
bool dhcp_enabled() const
 
bool os_oper_state() const
 
virtual KeyPtr GetDBRequestKey() const =0
 
bool is_hc_active() const
 
const std::string & name() const
 
bool IsLess(const DBEntry &rhs) const
 
void SetPciIndex(Agent *agent, size_t index)
 
boost::uuids::uuid logical_router_uuid_
 
void set_logical_router_uuid(const boost::uuids::uuid &logical_router_uuid)
 
bool metadata_ip_active() const
 
virtual bool Delete(const DBRequest *req)
 
bool metadata_l2_active() const
 
uint32_t os_index() const
 
bool IsTunnelEnabled() const
 
void set_test_oper_state(bool val)
 
void set_flow_key_nh(const NextHop *nh)
 
virtual void SetKey(const DBRequestKey *key)
 
const AgentQosConfig * qos_config() const
 
struct InterfaceOsParams os_params_
 
virtual void GetOsParams(Agent *agent)
 
uint32_t l2_label() const
 
bool IsL2LabelValid(uint32_t label) const
 
AgentQosConfigConstRef qos_config_
 
static const uint32_t kInvalidIndex
 
const boost::uuids::uuid & GetUuid() const
 
Interface::Transport transport() const
 
bool NeedDefaultOsOperStateDisabled(Agent *agent) const
 
void SetItfSandeshData(ItfSandeshData &data) const
 
bool dhcp_enabled_v6() const
 
boost::optional< InterfaceOsParams::IfGuid > os_guid() const
 
uint32_t GetRefCount() const
 
const uint32_t id() const
 
virtual bool CmpInterface(const DBEntry &rhs) const =0
 
virtual void ObtainOsSpecificParams(const std::string &name, Agent *agent)
 
std::map< boost::uuids::uuid, VmiToPhysicalDeviceVnData > VmiToPhysicalDeviceVnTree
 
const Agent * agent() const
 
boost::uuids::uuid logical_router_uuid_
 
void EthInit(const std::string &vrf_name)
 
Interface::Transport transport_
 
void RemotePhysicalPortInit(const std::string &vrf_name)
 
InterfaceData(Agent *agent, IFMapNode *node, Interface::Transport transport)
 
void InetInit(const std::string &vrf_name)
 
InterfaceKey(const InterfaceKey &rhs)
 
InterfaceKey(AgentKey::DBSubOperation sub_op, Interface::Type type, const boost::uuids::uuid &uuid, const std::string &name, bool is_mcast)
 
virtual Interface * AllocEntry(const InterfaceTable *table) const =0
 
bool IsEqual(const InterfaceKey &rhs) const
 
bool IsLess(const InterfaceKey &rhs) const
 
virtual InterfaceKey * Clone() const =0
 
void Init(Interface::Type type, const boost::uuids::uuid &intf_uuid, const std::string &name)
 
virtual Interface * AllocEntry(const InterfaceTable *table, const InterfaceData *data) const =0
 
boost::optional< IfGuid > os_guid_
 
boost::uuids::uuid qos_config_uuid_
 
InterfaceQosConfigData(const Agent *agent, IFMapNode *node, const boost::uuids::uuid &qos_config_uuid)
 
DhcpSnoopEntry(const Ip4Address &addr, bool config_entry)
 
VmiToPhysicalDeviceVnData(const boost::uuids::uuid &dev, const boost::uuids::uuid &vn)
 
VmiToPhysicalDeviceVnData & operator=(VmiToPhysicalDeviceVnData const &rhs)
 
~VmiToPhysicalDeviceVnData()