53 boost::asio::io_context &io) {
75 IgmpInfo::VnIgmpDBState::IgmpSubnetStateMap::iterator it =
78 igmp_intf = it->second;
105 IgmpInfo::VnIgmpDBState::IgmpSubnetStateMap::iterator it =
109 if ((ipam != NULL) && ((ipam->
default_gw == it->first) ||
114 igmp_intf = it->second;
119 const std::vector<VnIpam> &ipam = vn->
GetVnIpam();
120 for (
unsigned int i = 0; i < ipam.size(); ++i) {
121 if (!ipam[i].IsV4()) {
130 IgmpInfo::VnIgmpDBState::IgmpSubnetStateMap::const_iterator it;
134 igmp_address = ipam[i].dns_server;
138 igmp_intf = it->second;
143 igmp_address = ipam[i].default_gw;
150 std::pair<IpAddress, IgmpInfo::IgmpSubnetState*>
151 (igmp_address, igmp_intf));
164 if (!vrf || !packet) {
168 if (!gmp_addr.is_v4()) {
226 igmp_handler.
SendPacket(vm_itf, vrf, gmp_addr, packet);
228 }
while ((rt = inet_table->
GetNext(rt)) != NULL);
247 IgmpInfo::VnIgmpDBState::IgmpSubnetStateMap::const_iterator it =
254 igmp_intf = it->second;
280 IgmpInfo::VnIgmpDBState::IgmpSubnetStateMap::const_iterator it =
311 IgmpInfo::VnIgmpDBState::IgmpSubnetStateMap::const_iterator it =
void SetBounded(bool bounded)
const Interface * GetInterface() const
ProtoWorkQueue work_queue_
static GmpProto * CreateGmpProto(GmpType::Type type, Agent *agent, const std::string &name, int instance, boost::asio::io_context &io)
DBTableBase::ListenerId vn_listener_id_
DBState * GetState(DBTableBase *tbl_base, ListenerId listener) const
static bool DeleteGmpProto(GmpProto *gmp_proto)
const VnIpam * GetIpam(const IpAddress &ip) const
bool SendIgmpPacket(const VrfEntry *vrf, IpAddress gmp_addr, GmpPacket *packet)
void SetState(DBTableBase *tbl_base, ListenerId listener, DBState *state)
boost::asio::ip::address IpAddress
boost::asio::io_context & io_
boost::asio::io_context * io_service()
InetUnicastAgentRouteTable * GetInet4UnicastRouteTable() const
VnTable * vn_table() const
void VnNotify(DBTablePartBase *part, DBEntryBase *entry)
IpAddress GetSubnetAddress() const
InetUnicastRouteEntry * FindRoute(const IpAddress &ip)
const string & GetName() const
void SendPacket(const VmInterface *vm_itf, const VrfEntry *vrf, const IpAddress &gmp_addr, GmpPacket *packet)
const std::string task_name_
void Unregister(ListenerId listener)
IgmpSubnetStateMap igmp_state_map_
bool IsSubnetMember(const IpAddress &ip) const
ListenerId Register(ChangeCallback callback, const std::string &name="unspecified")
const std::string & fabric_vrf_name() const
void SetSize(size_t size)
const NextHop * GetActiveNextHop() const
EventManager * event_manager() const
const InetUnicastRouteEntry * GetNext(const InetUnicastRouteEntry *rt)
void IncrSendStats(const VmInterface *vm_itf, bool tx_done)
const std::vector< VnIpam > & GetVnIpam() const
const VnEntry * vn() const
AgentParam * params() const
void ClearState(DBTableBase *tbl_base, ListenerId listener)
boost::asio::ip::address_v4 Ip4Address
void Register(Callback cb)
const Ip4Address & primary_ip_addr() const
const bool GetItfStats(const VnEntry *vn, IpAddress gateway, IgmpInfo::IgmpItfStats &stats)
IgmpProto(Agent *agent, boost::asio::io_context &io)
VrfEntry * GetVrf() const
uint32_t services_queue_limit()
VmInterface::VmiType vmi_type() const
bool igmp_enabled() const
void ClearItfStats(const VnEntry *vn, IpAddress gateway)
ProtoHandler * AllocProtoHandler(boost::shared_ptr< PktInfo > info, boost::asio::io_context &io)
DBTablePartBase * get_table_partition() const
const IgmpInfo::IgmpItfStats & GetItfStats() const
DBTableBase::ListenerId vn_listener_id()
const std::string & fabric_policy_vrf_name() const