5 #ifndef vnsw_agent_igmp_proto_hpp
6 #define vnsw_agent_igmp_proto_hpp
13 #define IGMP_UNDEFINED 0x10
14 #define IGMP_MEMBERSHIP_QUERY 0x11
15 #define IGMP_V1_MEMBERSHIP_REPORT 0x12
16 #define IGMP_PROTO_DVMRP 0x13
17 #define IGMP_PROTO_PIM 0x14
18 #define IGMP_CISCO_TRACE 0x15
19 #define IGMP_V2_MEMBERSHIP_REPORT 0x16
20 #define IGMP_GROUP_LEAVE 0x17
21 #define IGMP_MTRACE_RESPONSE 0x1e
22 #define IGMP_MTRACE_REQUEST 0x1f
24 #define IGMP_V3_MEMBERSHIP_REPORT 0x22
25 #define IGMP_MAX_TYPE IGMP_V3_MEMBERSHIP_REPORT
26 #define IGMP_MIN_PACKET_LENGTH 8
28 #define IGMP_PKT_TRACE(obj, arg) \
30 std::ostringstream _str; \
32 Igmp##obj::TraceMsg(IgmpTraceBuf, __FILE__, __LINE__, _str.str()); \
44 memset(
rx_okpacket, 0x00,
sizeof(uint32_t)*IGMP_MAX_TYPE);
140 boost::asio::io_context &io);
167 void ReadHandler(
const boost::system::error_code &error, std::size_t len);
170 boost::asio::io_context &
io_;
180 #endif // vnsw_agent_igmp_proto_hpp
DBTableBase::ListenerId vn_listener_id_
bool SendIgmpPacket(const VrfEntry *vrf, IpAddress gmp_addr, GmpPacket *packet)
boost::asio::ip::address IpAddress
boost::asio::io_context & io_
uint32_t rx_okpacket[IGMP_MAX_TYPE]
uint32_t GetRxOkPkt(unsigned long index)
void VnNotify(DBTablePartBase *part, DBEntryBase *entry)
virtual ~IgmpSubnetState()
const std::string task_name_
const IgmpStats & GetStats() const
IgmpSubnetStateMap igmp_state_map_
void IncrStatsRxUnknown()
void IncrStatsBadLength()
void IncrSendStats(const VmInterface *vm_itf, bool tx_done)
void IncrRxOkPkt(unsigned long index)
void IncrStatsBadInterface()
void ReadHandler(const boost::system::error_code &error, std::size_t len)
const bool GetItfStats(const VnEntry *vn, IpAddress gateway, IgmpInfo::IgmpItfStats &stats)
IgmpProto(Agent *agent, boost::asio::io_context &io)
uint32_t rx_badpacket[IGMP_MAX_TYPE]
void IncrStatsRejectedPkt()
void Inet4McRouteTableNotify(DBTablePartBase *part, DBEntryBase *entry)
IgmpInfo::IgmpItfStats stats_
uint32_t GetRxBadPkt(unsigned long index)
void ClearItfStats(const VnEntry *vn, IpAddress gateway)
ProtoHandler * AllocProtoHandler(boost::shared_ptr< PktInfo > info, boost::asio::io_context &io)
DISALLOW_COPY_AND_ASSIGN(IgmpProto)
const IgmpInfo::IgmpItfStats & GetItfStats() const
DBTableBase::ListenerId vn_listener_id()
std::map< IpAddress, IgmpSubnetState * > IgmpSubnetStateMap
void IncrRxBadPkt(unsigned long index)