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()); \
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_;
boost::asio::ip::address IpAddress
void VnNotify(DBTablePartBase *part, DBEntryBase *entry)
void ReadHandler(const boost::system::error_code &error, std::size_t len)
void ClearItfStats(const VnEntry *vn, IpAddress gateway)
void IncrStatsBadInterface()
const std::string task_name_
DBTableBase::ListenerId vn_listener_id()
void IncrSendStats(const VmInterface *vm_itf, bool tx_done)
ProtoHandler * AllocProtoHandler(boost::shared_ptr< PktInfo > info, boost::asio::io_context &io)
const bool GetItfStats(const VnEntry *vn, IpAddress gateway, IgmpInfo::IgmpItfStats &stats)
bool SendIgmpPacket(const VrfEntry *vrf, IpAddress gmp_addr, GmpPacket *packet)
boost::asio::io_context & io_
void IncrStatsBadLength()
void IncrStatsRxUnknown()
DISALLOW_COPY_AND_ASSIGN(IgmpProto)
void Inet4McRouteTableNotify(DBTablePartBase *part, DBEntryBase *entry)
DBTableBase::ListenerId vn_listener_id_
void IncrStatsRejectedPkt()
const IgmpStats & GetStats() const
IgmpProto(Agent *agent, boost::asio::io_context &io)
uint32_t rx_okpacket[IGMP_MAX_TYPE]
uint32_t rx_badpacket[IGMP_MAX_TYPE]
void IncrRxOkPkt(unsigned long index)
const IgmpInfo::IgmpItfStats & GetItfStats() const
virtual ~IgmpSubnetState()
IgmpInfo::IgmpItfStats stats_
uint32_t GetRxBadPkt(unsigned long index)
uint32_t GetRxOkPkt(unsigned long index)
void IncrRxBadPkt(unsigned long index)
std::map< IpAddress, IgmpSubnetState * > IgmpSubnetStateMap
IgmpSubnetStateMap igmp_state_map_