OpenSDN source code
GlobalVrouter Class Reference

#include <global_vrouter.h>

Inheritance diagram for GlobalVrouter:
Collaboration diagram for GlobalVrouter:

Classes

struct  CryptTunnel
 
class  FabricDnsResolver
 
struct  FlowAgingTimeoutKey
 
class  LinkLocalRouteManager
 
struct  LinkLocalService
 
struct  LinkLocalServiceKey
 

Public Types

enum  CryptMode { CRYPT_ALL_TRAFFIC , CRYPT_FLOW , CRYPT_NONE }
 
typedef std::string CryptTunnelKey
 
typedef std::map< LinkLocalServiceKey, LinkLocalServiceLinkLocalServicesMap
 
typedef std::pair< LinkLocalServiceKey, LinkLocalServiceLinkLocalServicesPair
 
typedef std::map< CryptTunnelKey, CryptTunnelCryptTunnelsMap
 
typedef std::pair< CryptTunnelKey, CryptTunnelCryptTunnelsPair
 
typedef std::map< FlowAgingTimeoutKey, uint32_t > FlowAgingTimeoutMap
 
typedef std::pair< FlowAgingTimeoutKey, uint32_t > FlowAgingTimeoutPair
 
typedef std::map< uint8_t, PortConfigProtocolPortSet
 
- Public Types inherited from OperIFMapTable
typedef std::map< IFMapNode *, IFMapDependencyManager::IFMapNodePtrTree
 

Public Member Functions

 GlobalVrouter (Agent *agent)
 
virtual ~GlobalVrouter ()
 
void CreateDBClients ()
 
const LinkLocalServicesMaplinklocal_services_map () const
 
int32_t flow_export_rate () const
 
void ConfigDelete (IFMapNode *node)
 
void ConfigAddChange (IFMapNode *node)
 
void ConfigManagerEnqueue (IFMapNode *node)
 
void GlobalVrouterConfig (IFMapNode *node)
 
void UpdateSLOConfig (IFMapNode *node)
 
bool FindLinkLocalService (const std::string &service_name, IpAddress *service_ip, uint16_t *service_port, std::string *fabric_hostname, Ip4Address *fabric_ip, uint16_t *fabric_port) const
 Get link local service configuration info, for a given service name. More...
 
bool FindLinkLocalService (const IpAddress &service_ip, uint16_t service_port, std::string *service_name, Ip4Address *fabric_ip, uint16_t *fabric_port) const
 Get link local service info for a given linklocal service <ip, port> More...
 
bool FindLinkLocalService (const std::string &service_name, std::set< IpAddress > *service_ip) const
 Get link local services, for a given service name. More...
 
bool FindLinkLocalService (const IpAddress &service_ip, std::set< std::string > *service_names) const
 Get link local services info for a given linklocal service <ip> More...
 
void LinkLocalRouteUpdate (const std::vector< Ip4Address > &addr_list)
 
bool IsAddressInUse (const Ip4Address &ip) const
 
bool IsLinkLocalAddressInUse (const IpAddress &ip) const
 
Agent::ForwardingMode forwarding_mode () const
 
boost::uuids::uuid slo_uuid () const
 
uint64_t PendingFabricDnsRequests () const
 
void ResyncRoutes ()
 
const EcmpLoadBalanceecmp_load_balance () const
 
bool configured () const
 
- Public Member Functions inherited from OperIFMapTable
 OperIFMapTable (Agent *agent)
 
virtual ~OperIFMapTable ()
 
Agentagent () const
 
OperDBoper () const
 
uint32_t Size () const
 
void ConfigEventHandler (IFMapNode *node, DBEntry *entry)
 
void ProcessConfig (IFMapNode *node)
 

Static Public Attributes

static const std::string kMetadataService = "metadata"
 
static const std::string kMetadataService6 = "metadata6"
 
static const Ip4Address kLoopBackIp = Ip4Address(0x7f000001)
 
static const int32_t kDefaultFlowExportRate = 0
 
static const int32_t kDisableSampling = -1
 

Private Types

typedef std::vector< autogen::LinklocalServiceEntryType > LinkLocalServiceList
 
typedef std::vector< autogen::EncryptionTunnelEndpoint > EncryptionTunnelEndpointList
 
typedef std::vector< autogen::FlowAgingTimeout > FlowAgingTimeoutList
 

Private Member Functions

void UpdateLinkLocalServiceConfig (const LinkLocalServiceList &linklocal_list)
 
void DeleteLinkLocalServiceConfig ()
 
bool ChangeNotify (LinkLocalServicesMap *old_value, LinkLocalServicesMap *new_value)
 
void AddLinkLocalService (const LinkLocalServicesMap::iterator &it)
 
void DeleteLinkLocalService (const LinkLocalServicesMap::iterator &it)
 
void ChangeLinkLocalService (const LinkLocalServicesMap::iterator &old_it, const LinkLocalServicesMap::iterator &new_it)
 
bool IsVrouterPresentCryptTunnelConfig (const EncryptionTunnelEndpointList &endpoint_list)
 
void UpdateCryptTunnelEndpointConfig (const EncryptionTunnelEndpointList &endpoint_list, const std::string encrypt_mode_str)
 
void DeleteCryptTunnelEndpointConfig ()
 
bool ChangeNotifyCryptTunnels (CryptTunnelsMap *old_value, CryptTunnelsMap *new_value)
 
void AddCryptTunnelEndpoint (const CryptTunnelsMap::iterator &it)
 
void DeleteCryptTunnelEndpoint (const CryptTunnelsMap::iterator &it)
 
void ChangeCryptTunnelEndpoint (const CryptTunnelsMap::iterator &old_it, const CryptTunnelsMap::iterator &new_it)
 
void UpdateFlowAging (autogen::GlobalVrouterConfig *cfg)
 
void DeleteFlowAging ()
 
void UpdatePortConfig (autogen::GlobalVrouterConfig *cfg)
 
void DeletePortConfig ()
 
void ReadFlowsLimits (const autogen::GlobalVrouterConfig &cfg)
 Reads configuration flow global flow limits. More...
 

Private Attributes

LinkLocalServicesMap linklocal_services_map_
 
CryptTunnelsMap crypt_tunnels_map_
 
CryptMode crypt_mode_
 
boost::scoped_ptr< LinkLocalRouteManagerlinklocal_route_mgr_
 
boost::scoped_ptr< FabricDnsResolverfabric_dns_resolver_
 
AgentRouteWalkerPtr agent_route_resync_walker_
 
Agent::ForwardingMode forwarding_mode_
 
int32_t flow_export_rate_
 
FlowAgingTimeoutMap flow_aging_timeout_map_
 
ProtocolPortSet protocol_port_set_
 
EcmpLoadBalance ecmp_load_balance_
 
bool configured_
 
boost::uuids::uuid slo_uuid_
 

Friends

class AgentUtXmlFlowThreshold
 

Detailed Description

Definition at line 56 of file global_vrouter.h.

Member Typedef Documentation

◆ CryptTunnelKey

typedef std::string GlobalVrouter::CryptTunnelKey

Definition at line 111 of file global_vrouter.h.

◆ CryptTunnelsMap

Definition at line 127 of file global_vrouter.h.

◆ CryptTunnelsPair

Definition at line 128 of file global_vrouter.h.

◆ EncryptionTunnelEndpointList

typedef std::vector<autogen::EncryptionTunnelEndpoint> GlobalVrouter::EncryptionTunnelEndpointList
private

Definition at line 194 of file global_vrouter.h.

◆ FlowAgingTimeoutList

typedef std::vector<autogen::FlowAgingTimeout> GlobalVrouter::FlowAgingTimeoutList
private

Definition at line 195 of file global_vrouter.h.

◆ FlowAgingTimeoutMap

Definition at line 130 of file global_vrouter.h.

◆ FlowAgingTimeoutPair

Definition at line 131 of file global_vrouter.h.

◆ LinkLocalServiceList

typedef std::vector<autogen::LinklocalServiceEntryType> GlobalVrouter::LinkLocalServiceList
private

Definition at line 193 of file global_vrouter.h.

◆ LinkLocalServicesMap

◆ LinkLocalServicesPair

◆ ProtocolPortSet

typedef std::map<uint8_t, PortConfig> GlobalVrouter::ProtocolPortSet

Definition at line 134 of file global_vrouter.h.

Member Enumeration Documentation

◆ CryptMode

Enumerator
CRYPT_ALL_TRAFFIC 
CRYPT_FLOW 
CRYPT_NONE 

Definition at line 58 of file global_vrouter.h.

Constructor & Destructor Documentation

◆ GlobalVrouter()

GlobalVrouter::GlobalVrouter ( Agent agent)

Definition at line 587 of file global_vrouter.cc.

Here is the call graph for this function:

◆ ~GlobalVrouter()

GlobalVrouter::~GlobalVrouter ( )
virtual

Definition at line 603 of file global_vrouter.cc.

Here is the call graph for this function:

Member Function Documentation

◆ AddCryptTunnelEndpoint()

void GlobalVrouter::AddCryptTunnelEndpoint ( const CryptTunnelsMap::iterator &  it)
private

Definition at line 1128 of file global_vrouter.cc.

Here is the call graph for this function:

◆ AddLinkLocalService()

void GlobalVrouter::AddLinkLocalService ( const LinkLocalServicesMap::iterator &  it)
private

Definition at line 950 of file global_vrouter.cc.

◆ ChangeCryptTunnelEndpoint()

void GlobalVrouter::ChangeCryptTunnelEndpoint ( const CryptTunnelsMap::iterator &  old_it,
const CryptTunnelsMap::iterator &  new_it 
)
private

Definition at line 1139 of file global_vrouter.cc.

Here is the call graph for this function:

◆ ChangeLinkLocalService()

void GlobalVrouter::ChangeLinkLocalService ( const LinkLocalServicesMap::iterator &  old_it,
const LinkLocalServicesMap::iterator &  new_it 
)
private

Definition at line 966 of file global_vrouter.cc.

Here is the call graph for this function:

◆ ChangeNotify()

bool GlobalVrouter::ChangeNotify ( LinkLocalServicesMap old_value,
LinkLocalServicesMap new_value 
)
private

Definition at line 905 of file global_vrouter.cc.

Here is the call graph for this function:

◆ ChangeNotifyCryptTunnels()

bool GlobalVrouter::ChangeNotifyCryptTunnels ( CryptTunnelsMap old_value,
CryptTunnelsMap new_value 
)
private

Definition at line 1084 of file global_vrouter.cc.

Here is the call graph for this function:

◆ ConfigAddChange()

void GlobalVrouter::ConfigAddChange ( IFMapNode node)
virtual

Implements OperIFMapTable.

Definition at line 624 of file global_vrouter.cc.

Here is the call graph for this function:

◆ ConfigDelete()

void GlobalVrouter::ConfigDelete ( IFMapNode node)
virtual

Implements OperIFMapTable.

Definition at line 617 of file global_vrouter.cc.

Here is the call graph for this function:

◆ ConfigManagerEnqueue()

void GlobalVrouter::ConfigManagerEnqueue ( IFMapNode node)
virtual

Implements OperIFMapTable.

Definition at line 631 of file global_vrouter.cc.

Here is the call graph for this function:

◆ configured()

bool GlobalVrouter::configured ( ) const
inline

Definition at line 187 of file global_vrouter.h.

◆ CreateDBClients()

void GlobalVrouter::CreateDBClients ( )

Definition at line 613 of file global_vrouter.cc.

◆ DeleteCryptTunnelEndpoint()

void GlobalVrouter::DeleteCryptTunnelEndpoint ( const CryptTunnelsMap::iterator &  it)
private

Definition at line 1135 of file global_vrouter.cc.

Here is the call graph for this function:

◆ DeleteCryptTunnelEndpointConfig()

void GlobalVrouter::DeleteCryptTunnelEndpointConfig ( )
private

Definition at line 1081 of file global_vrouter.cc.

◆ DeleteFlowAging()

void GlobalVrouter::DeleteFlowAging ( )
private

Definition at line 99 of file global_vrouter.cc.

Here is the call graph for this function:

◆ DeleteLinkLocalService()

void GlobalVrouter::DeleteLinkLocalService ( const LinkLocalServicesMap::iterator &  it)
private

Definition at line 959 of file global_vrouter.cc.

Here is the call graph for this function:

◆ DeleteLinkLocalServiceConfig()

void GlobalVrouter::DeleteLinkLocalServiceConfig ( )
private

Definition at line 895 of file global_vrouter.cc.

Here is the call graph for this function:

◆ DeletePortConfig()

void GlobalVrouter::DeletePortConfig ( )
private

Definition at line 188 of file global_vrouter.cc.

Here is the call graph for this function:

◆ ecmp_load_balance()

const EcmpLoadBalance & GlobalVrouter::ecmp_load_balance ( ) const

Definition at line 1010 of file global_vrouter.cc.

◆ FindLinkLocalService() [1/4]

bool GlobalVrouter::FindLinkLocalService ( const IpAddress service_ip,
std::set< std::string > *  service_names 
) const

Get link local services info for a given linklocal service <ip>

Definition at line 850 of file global_vrouter.cc.

◆ FindLinkLocalService() [2/4]

bool GlobalVrouter::FindLinkLocalService ( const IpAddress service_ip,
uint16_t  service_port,
std::string *  service_name,
Ip4Address fabric_ip,
uint16_t *  fabric_port 
) const

Get link local service info for a given linklocal service <ip, port>

Definition at line 775 of file global_vrouter.cc.

Here is the call graph for this function:

◆ FindLinkLocalService() [3/4]

bool GlobalVrouter::FindLinkLocalService ( const std::string &  service_name,
IpAddress service_ip,
uint16_t *  service_port,
std::string *  fabric_hostname,
Ip4Address fabric_ip,
uint16_t *  fabric_port 
) const

Get link local service configuration info, for a given service name.

Definition at line 739 of file global_vrouter.cc.

Here is the call graph for this function:

◆ FindLinkLocalService() [4/4]

bool GlobalVrouter::FindLinkLocalService ( const std::string &  service_name,
std::set< IpAddress > *  service_ip 
) const

Get link local services, for a given service name.

Definition at line 831 of file global_vrouter.cc.

◆ flow_export_rate()

int32_t GlobalVrouter::flow_export_rate ( ) const
inline

Definition at line 143 of file global_vrouter.h.

◆ forwarding_mode()

Agent::ForwardingMode GlobalVrouter::forwarding_mode ( ) const
inline

Definition at line 181 of file global_vrouter.h.

◆ GlobalVrouterConfig()

void GlobalVrouter::GlobalVrouterConfig ( IFMapNode node)

Definition at line 658 of file global_vrouter.cc.

Here is the call graph for this function:

◆ IsAddressInUse()

bool GlobalVrouter::IsAddressInUse ( const Ip4Address ip) const

Definition at line 985 of file global_vrouter.cc.

◆ IsLinkLocalAddressInUse()

bool GlobalVrouter::IsLinkLocalAddressInUse ( const IpAddress ip) const

Definition at line 995 of file global_vrouter.cc.

◆ IsVrouterPresentCryptTunnelConfig()

bool GlobalVrouter::IsVrouterPresentCryptTunnelConfig ( const EncryptionTunnelEndpointList endpoint_list)
private

Definition at line 1045 of file global_vrouter.cc.

Here is the call graph for this function:

◆ linklocal_services_map()

const LinkLocalServicesMap& GlobalVrouter::linklocal_services_map ( ) const
inline

Definition at line 140 of file global_vrouter.h.

◆ LinkLocalRouteUpdate()

void GlobalVrouter::LinkLocalRouteUpdate ( const std::vector< Ip4Address > &  addr_list)

Definition at line 978 of file global_vrouter.cc.

◆ PendingFabricDnsRequests()

uint64_t GlobalVrouter::PendingFabricDnsRequests ( ) const

Definition at line 609 of file global_vrouter.cc.

◆ ReadFlowsLimits()

void GlobalVrouter::ReadFlowsLimits ( const autogen::GlobalVrouterConfig &  cfg)
private

Reads configuration flow global flow limits.

Definition at line 198 of file global_vrouter.cc.

Here is the call graph for this function:

◆ ResyncRoutes()

void GlobalVrouter::ResyncRoutes ( )

Definition at line 1005 of file global_vrouter.cc.

◆ slo_uuid()

boost::uuids::uuid GlobalVrouter::slo_uuid ( ) const
inline

Definition at line 182 of file global_vrouter.h.

◆ UpdateCryptTunnelEndpointConfig()

void GlobalVrouter::UpdateCryptTunnelEndpointConfig ( const EncryptionTunnelEndpointList endpoint_list,
const std::string  encrypt_mode_str 
)
private

Definition at line 1059 of file global_vrouter.cc.

Here is the call graph for this function:

◆ UpdateFlowAging()

void GlobalVrouter::UpdateFlowAging ( autogen::GlobalVrouterConfig *  cfg)
private

Definition at line 64 of file global_vrouter.cc.

Here is the call graph for this function:

◆ UpdateLinkLocalServiceConfig()

void GlobalVrouter::UpdateLinkLocalServiceConfig ( const LinkLocalServiceList linklocal_list)
private

Definition at line 866 of file global_vrouter.cc.

Here is the call graph for this function:

◆ UpdatePortConfig()

void GlobalVrouter::UpdatePortConfig ( autogen::GlobalVrouterConfig *  cfg)
private

Definition at line 115 of file global_vrouter.cc.

Here is the call graph for this function:

◆ UpdateSLOConfig()

void GlobalVrouter::UpdateSLOConfig ( IFMapNode node)

Definition at line 635 of file global_vrouter.cc.

Here is the call graph for this function:

Friends And Related Function Documentation

◆ AgentUtXmlFlowThreshold

friend class AgentUtXmlFlowThreshold
friend

Definition at line 189 of file global_vrouter.h.

Member Data Documentation

◆ agent_route_resync_walker_

AgentRouteWalkerPtr GlobalVrouter::agent_route_resync_walker_
private

Definition at line 231 of file global_vrouter.h.

◆ configured_

bool GlobalVrouter::configured_
private

Definition at line 237 of file global_vrouter.h.

◆ crypt_mode_

CryptMode GlobalVrouter::crypt_mode_
private

Definition at line 228 of file global_vrouter.h.

◆ crypt_tunnels_map_

CryptTunnelsMap GlobalVrouter::crypt_tunnels_map_
private

Definition at line 227 of file global_vrouter.h.

◆ ecmp_load_balance_

EcmpLoadBalance GlobalVrouter::ecmp_load_balance_
private

Definition at line 236 of file global_vrouter.h.

◆ fabric_dns_resolver_

boost::scoped_ptr<FabricDnsResolver> GlobalVrouter::fabric_dns_resolver_
private

Definition at line 230 of file global_vrouter.h.

◆ flow_aging_timeout_map_

FlowAgingTimeoutMap GlobalVrouter::flow_aging_timeout_map_
private

Definition at line 234 of file global_vrouter.h.

◆ flow_export_rate_

int32_t GlobalVrouter::flow_export_rate_
private

Definition at line 233 of file global_vrouter.h.

◆ forwarding_mode_

Agent::ForwardingMode GlobalVrouter::forwarding_mode_
private

Definition at line 232 of file global_vrouter.h.

◆ kDefaultFlowExportRate

const int32_t GlobalVrouter::kDefaultFlowExportRate = 0
static

Definition at line 66 of file global_vrouter.h.

◆ kDisableSampling

const int32_t GlobalVrouter::kDisableSampling = -1
static

Definition at line 67 of file global_vrouter.h.

◆ kLoopBackIp

const Ip4Address GlobalVrouter::kLoopBackIp = Ip4Address(0x7f000001)
static

Definition at line 65 of file global_vrouter.h.

◆ kMetadataService

const std::string GlobalVrouter::kMetadataService = "metadata"
static

Definition at line 63 of file global_vrouter.h.

◆ kMetadataService6

const std::string GlobalVrouter::kMetadataService6 = "metadata6"
static

Definition at line 64 of file global_vrouter.h.

◆ linklocal_route_mgr_

boost::scoped_ptr<LinkLocalRouteManager> GlobalVrouter::linklocal_route_mgr_
private

Definition at line 229 of file global_vrouter.h.

◆ linklocal_services_map_

LinkLocalServicesMap GlobalVrouter::linklocal_services_map_
private

Definition at line 226 of file global_vrouter.h.

◆ protocol_port_set_

ProtocolPortSet GlobalVrouter::protocol_port_set_
private

Definition at line 235 of file global_vrouter.h.

◆ slo_uuid_

boost::uuids::uuid GlobalVrouter::slo_uuid_
private

Definition at line 238 of file global_vrouter.h.


The documentation for this class was generated from the following files: