5 #ifndef vnsw_agent_gmp_proto_h
6 #define vnsw_agent_gmp_proto_h
14 #define GMP_TX_BUFF_LEN 512
123 typedef boost::function<bool(const VrfEntry *, IpAddress, GmpPacket *)>
Callback;
142 int instance, boost::asio::io_context &io);
190 boost::asio::io_context &
io_;
213 const std::string &name,
int instance,
214 boost::asio::io_context &io);
uint32_t gmp_g_del_count_
bool GmpNotificationHandler()
boost::function< bool(const VrfEntry *, IpAddress, GmpPacket *)> Callback
void TriggerMvpnNotification(const VmInterface *vm_intf, bool join, IpAddress source, IpAddress group)
std::map< IpAddress, boost::uuids::uuid > VmIpInterfaceMap
static GmpProto * CreateGmpProto(GmpType::Type type, Agent *agent, const std::string &name, int instance, boost::asio::io_context &io)
bool GmpProcessPkt(const VmInterface *vm_itf, void *rcv_pkt, uint32_t packet_len, IpAddress ip_saddr, IpAddress ip_daddr)
void GmpItfNotify(DBTablePartBase *part, DBEntryBase *entry)
TaskTrigger * gmp_notif_trigger_
DBTableBase::ListenerId itf_listener_id_
static bool DeleteGmpProto(GmpProto *gmp_proto)
VnGmpIntfMap gmp_intf_map_
GmpProto(GmpType::Type type, Agent *agent, const std::string &task_name, int instance, boost::asio::io_context &io)
uint32_t gmp_sg_add_count_
VnGmpIntfSGList gmp_intf_sg_list_
const IpAddress get_ip_address()
DBTableBase::ListenerId vn_listener_id_
const string & get_vrf_name()
boost::asio::ip::address IpAddress
VnGmpSGList::iterator VnGmpSGListIter
void UpdateHostInSourceGroup(GmpIntf *gif, bool join, IpAddress host, IpAddress source, IpAddress group)
bool MulticastPolicyCheck(GmpIntf *gif, IpAddress source, IpAddress group)
void ResyncNotify(GmpIntf *gif, IpAddress source, IpAddress group)
GmpPacket(uint8_t *pkt, uint32_t pkt_len, IpAddress dst_addr)
bool DeleteIntf(GmpIntf *gif)
uint32_t gmp_sg_del_count_
uint32_t gmp_g_add_count_
void SetGif(gmp_intf *gif)
static const int kGmpTriggerRestartTimer
void GmpBufferFree(uint8_t *pkt)
boost::asio::io_context & io_
void Register(Callback cb)
Timer * gmp_trigger_timer_
bool set_ip_address(const IpAddress &ip_addr)
bool SendPacket(GmpIntf *gif, uint8_t *pkt, uint32_t pkt_len, IpAddress dest)
VnGmpIntfSGList::iterator VnGmpSGIntfListIter
void GmpVrfNotify(DBTablePartBase *part, DBEntryBase *entry)
bool GmpNotificationTimer()
DBTableBase::ListenerId vn_listener_id()
bool set_vrf_name(const std::string &vrf_name)
VmIpInterfaceMap vm_ip_to_vmi_
std::map< IpAddress, VnGmpIntfState * > VnGmpIntfMap
std::set< GmpSourceGroup * > VnGmpIntfSGList
void GmpIntfSGClear(VnGmpDBState *state, VnGmpDBState::VnGmpIntfState *gmp_intf_state)
DBTableBase::ListenerId itf_listener_id()
bool set_gmp_querying(bool querying)
GmpIntf(const GmpProto *)
const GmpProto * gmp_proto_
void TriggerEvpnNotification(const VmInterface *vm_intf, bool join, IpAddress source, IpAddress group)
void GmpVnNotify(DBTablePartBase *part, DBEntryBase *entry)
std::set< GmpSourceGroup * > VnGmpSGList
void GmpNotificationReady()
void GroupNotify(GmpIntf *gif, IpAddress source, IpAddress group, int group_action)
const std::string & name_
const GmpStats & GetStats() const