OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GmpProto Class Reference

#include <gmp_proto.h>

Collaboration diagram for GmpProto:

Classes

struct  GmpStats
 

Public Types

typedef boost::function< bool(const
VrfEntry *, IpAddress,
GmpPacket *)> 
Callback
 

Public Member Functions

 GmpProto (GmpType::Type type, Agent *agent, const std::string &task_name, int instance, boost::asio::io_context &io)
 
 ~GmpProto ()
 
GmpIntfCreateIntf ()
 
bool DeleteIntf (GmpIntf *gif)
 
void Register (Callback cb)
 
bool Start ()
 
bool Stop ()
 
void GmpIntfSGClear (VnGmpDBState *state, VnGmpDBState::VnGmpIntfState *gmp_intf_state)
 
DBTableBase::ListenerId vn_listener_id ()
 
DBTableBase::ListenerId itf_listener_id ()
 
bool GmpProcessPkt (const VmInterface *vm_itf, void *rcv_pkt, uint32_t packet_len, IpAddress ip_saddr, IpAddress ip_daddr)
 
uint8_t * GmpBufferGet ()
 
void GmpBufferFree (uint8_t *pkt)
 
bool GmpNotificationHandler ()
 
bool GmpNotificationTimer ()
 
void GmpNotificationReady ()
 
void GroupNotify (GmpIntf *gif, IpAddress source, IpAddress group, int group_action)
 
void ResyncNotify (GmpIntf *gif, IpAddress source, IpAddress group)
 
void UpdateHostInSourceGroup (GmpIntf *gif, bool join, IpAddress host, IpAddress source, IpAddress group)
 
void TriggerMvpnNotification (const VmInterface *vm_intf, bool join, IpAddress source, IpAddress group)
 
void TriggerEvpnNotification (const VmInterface *vm_intf, bool join, IpAddress source, IpAddress group)
 
bool MulticastPolicyCheck (GmpIntf *gif, IpAddress source, IpAddress group)
 
bool SendPacket (GmpIntf *gif, uint8_t *pkt, uint32_t pkt_len, IpAddress dest)
 
const GmpStatsGetStats () const
 
void ClearStats ()
 

Static Public Attributes

static const int kGmpTriggerRestartTimer = 100
 

Private Types

typedef std::map< IpAddress,
boost::uuids::uuid
VmIpInterfaceMap
 

Private Member Functions

void GmpVnNotify (DBTablePartBase *part, DBEntryBase *entry)
 
void GmpVrfNotify (DBTablePartBase *part, DBEntryBase *entry)
 
void GmpItfNotify (DBTablePartBase *part, DBEntryBase *entry)
 

Private Attributes

GmpType::Type type_
 
Agentagent_
 
const std::string & name_
 
int instance_
 
boost::asio::io_context & io_
 
DBTableBase::ListenerId vn_listener_id_
 
DBTableBase::ListenerId itf_listener_id_
 
TaskMaptask_map_
 
Timergmp_trigger_timer_
 
TaskTriggergmp_notif_trigger_
 
mgm_global_datagd_
 
Callback cb_
 
GmpStats stats_
 
int itf_attach_count_
 
VmIpInterfaceMap vm_ip_to_vmi_
 

Friends

class GmpIntf
 

Detailed Description

Definition at line 120 of file gmp_proto.h.

Member Typedef Documentation

typedef boost::function<bool(const VrfEntry *, IpAddress, GmpPacket *)> GmpProto::Callback

Definition at line 123 of file gmp_proto.h.

Definition at line 204 of file gmp_proto.h.

Constructor & Destructor Documentation

GmpProto::GmpProto ( GmpType::Type  type,
Agent agent,
const std::string &  task_name,
int  instance,
boost::asio::io_context &  io 
)

Definition at line 76 of file gmp_proto.cc.

GmpProto::~GmpProto ( )

Definition at line 94 of file gmp_proto.cc.

Member Function Documentation

void GmpProto::ClearStats ( )
inline

Definition at line 179 of file gmp_proto.h.

Here is the call graph for this function:

GmpIntf * GmpProto::CreateIntf ( )

Definition at line 420 of file gmp_proto.cc.

Here is the call graph for this function:

bool GmpProto::DeleteIntf ( GmpIntf gif)

Definition at line 434 of file gmp_proto.cc.

Here is the call graph for this function:

const GmpStats& GmpProto::GetStats ( ) const
inline

Definition at line 178 of file gmp_proto.h.

void GmpProto::GmpBufferFree ( uint8_t *  pkt)

Definition at line 487 of file gmp_proto.cc.

uint8_t * GmpProto::GmpBufferGet ( )

Definition at line 483 of file gmp_proto.cc.

void GmpProto::GmpIntfSGClear ( VnGmpDBState state,
VnGmpDBState::VnGmpIntfState gmp_intf_state 
)

Definition at line 168 of file gmp_proto.cc.

Here is the call graph for this function:

void GmpProto::GmpItfNotify ( DBTablePartBase part,
DBEntryBase entry 
)
private

Definition at line 337 of file gmp_proto.cc.

Here is the call graph for this function:

bool GmpProto::GmpNotificationHandler ( )

Definition at line 492 of file gmp_proto.cc.

Here is the call graph for this function:

void GmpProto::GmpNotificationReady ( )

Definition at line 525 of file gmp_proto.cc.

Here is the call graph for this function:

bool GmpProto::GmpNotificationTimer ( )

Definition at line 511 of file gmp_proto.cc.

Here is the call graph for this function:

bool GmpProto::GmpProcessPkt ( const VmInterface vm_itf,
void *  rcv_pkt,
uint32_t  packet_len,
IpAddress  ip_saddr,
IpAddress  ip_daddr 
)

Definition at line 443 of file gmp_proto.cc.

Here is the call graph for this function:

void GmpProto::GmpVnNotify ( DBTablePartBase part,
DBEntryBase entry 
)
private

Definition at line 210 of file gmp_proto.cc.

Here is the call graph for this function:

void GmpProto::GmpVrfNotify ( DBTablePartBase part,
DBEntryBase entry 
)
private
void GmpProto::GroupNotify ( GmpIntf gif,
IpAddress  source,
IpAddress  group,
int  group_action 
)

Definition at line 537 of file gmp_proto.cc.

Here is the call graph for this function:

DBTableBase::ListenerId GmpProto::itf_listener_id ( )
bool GmpProto::MulticastPolicyCheck ( GmpIntf gif,
IpAddress  source,
IpAddress  group 
)

Definition at line 751 of file gmp_proto.cc.

Here is the call graph for this function:

void GmpProto::Register ( Callback  cb)
inline

Definition at line 147 of file gmp_proto.h.

void GmpProto::ResyncNotify ( GmpIntf gif,
IpAddress  source,
IpAddress  group 
)

Definition at line 649 of file gmp_proto.cc.

bool GmpProto::SendPacket ( GmpIntf gif,
uint8_t *  pkt,
uint32_t  pkt_len,
IpAddress  dest 
)

Definition at line 786 of file gmp_proto.cc.

Here is the call graph for this function:

bool GmpProto::Start ( )

Definition at line 98 of file gmp_proto.cc.

Here is the call graph for this function:

bool GmpProto::Stop ( )

Definition at line 139 of file gmp_proto.cc.

Here is the call graph for this function:

void GmpProto::TriggerEvpnNotification ( const VmInterface vm_intf,
bool  join,
IpAddress  source,
IpAddress  group 
)

Definition at line 726 of file gmp_proto.cc.

Here is the call graph for this function:

void GmpProto::TriggerMvpnNotification ( const VmInterface vm_intf,
bool  join,
IpAddress  source,
IpAddress  group 
)

Definition at line 697 of file gmp_proto.cc.

Here is the call graph for this function:

void GmpProto::UpdateHostInSourceGroup ( GmpIntf gif,
bool  join,
IpAddress  host,
IpAddress  source,
IpAddress  group 
)

Definition at line 655 of file gmp_proto.cc.

Here is the call graph for this function:

DBTableBase::ListenerId GmpProto::vn_listener_id ( )

Friends And Related Function Documentation

friend class GmpIntf
friend

Definition at line 207 of file gmp_proto.h.

Member Data Documentation

Agent* GmpProto::agent_
private

Definition at line 187 of file gmp_proto.h.

Callback GmpProto::cb_
private

Definition at line 199 of file gmp_proto.h.

mgm_global_data* GmpProto::gd_
private

Definition at line 198 of file gmp_proto.h.

TaskTrigger* GmpProto::gmp_notif_trigger_
private

Definition at line 197 of file gmp_proto.h.

Timer* GmpProto::gmp_trigger_timer_
private

Definition at line 196 of file gmp_proto.h.

int GmpProto::instance_
private

Definition at line 189 of file gmp_proto.h.

boost::asio::io_context& GmpProto::io_
private

Definition at line 190 of file gmp_proto.h.

int GmpProto::itf_attach_count_
private

Definition at line 202 of file gmp_proto.h.

DBTableBase::ListenerId GmpProto::itf_listener_id_
private

Definition at line 193 of file gmp_proto.h.

const int GmpProto::kGmpTriggerRestartTimer = 100
static

Definition at line 122 of file gmp_proto.h.

const std::string& GmpProto::name_
private

Definition at line 188 of file gmp_proto.h.

GmpStats GmpProto::stats_
private

Definition at line 201 of file gmp_proto.h.

TaskMap* GmpProto::task_map_
private

Definition at line 195 of file gmp_proto.h.

GmpType::Type GmpProto::type_
private

Definition at line 186 of file gmp_proto.h.

VmIpInterfaceMap GmpProto::vm_ip_to_vmi_
private

Definition at line 205 of file gmp_proto.h.

DBTableBase::ListenerId GmpProto::vn_listener_id_
private

Definition at line 192 of file gmp_proto.h.


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