From dd2daebe1374f659e280f6f7915e8ca2548149fb Mon Sep 17 00:00:00 2001 From: Nagendra E S Date: Wed, 20 Jun 2018 09:31:16 +0530 Subject: [PATCH] Fix for agent crash in IGMP for VHOST0 interface. Putting check for ignoring vhost and when vm's vrf differs from native vrf. Change-Id: If8b22969e94f027676fd20d6f7006428e803d75c Partial-Bug: #1771170 --- src/vnsw/agent/services/igmp_proto.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/vnsw/agent/services/igmp_proto.cc b/src/vnsw/agent/services/igmp_proto.cc index 4a7a718f916..59cfaa6a875 100644 --- a/src/vnsw/agent/services/igmp_proto.cc +++ b/src/vnsw/agent/services/igmp_proto.cc @@ -288,6 +288,12 @@ bool IgmpProto::SendIgmpPacket(GmpIntf *gmp_intf, GmpPacket *packet) { if (!vm_itf) { continue; } + if (vm_itf->vmi_type() == VmInterface::VHOST) { + continue; + } + if (vrf->GetName() != vm_itf->vrf()->GetName()) { + continue; + } if (!ipam->IsSubnetMember(IpAddress(vm_itf->primary_ip_addr()))) { break; } @@ -305,13 +311,11 @@ bool IgmpProto::SendIgmpPacket(GmpIntf *gmp_intf, GmpPacket *packet) { void IgmpProto::IncrSendStats(const VmInterface *vm_itf, bool tx_done) { - IgmpProto *igmp_proto = agent()->GetIgmpProto(); - const VnEntry *vn = vm_itf->vn(); IgmpInfo::VnIgmpDBState *state = NULL; state = static_cast(vn->GetState( vn->get_table_partition()->parent(), - igmp_proto->vn_listener_id())); + vn_listener_id())); const VnIpam *ipam = vn->GetIpam(vm_itf->primary_ip_addr()); IgmpInfo::VnIgmpDBState::IgmpSubnetStateMap::const_iterator it = state->igmp_state_map_.find(ipam->default_gw);