// Configure distributed ARP responder
if (flgDistributedARPEnabled) {
- programStaticArpStage1(dpid, providerSegmentationId, tenantMac, tenantIpStr, action);
+ // Arp rule is only needed when segmentation exists in the given node (bug 4752).
+ boolean arpNeeded = tenantNetworkManager.isTenantNetworkPresentInNode(node, providerSegmentationId);
+ final Action actionForNode = arpNeeded ? action : Action.DELETE;
+ programStaticArpStage1(dpid, providerSegmentationId, tenantMac, tenantIpStr, actionForNode);
}
}
}
when(neutronNetwork.getProviderSegmentationID()).thenReturn(ID);
List<Node> nodes = new ArrayList<>();
nodes.add(mock(Node.class));
+ TenantNetworkManager tenantNetworkManager = mock(TenantNetworkManager.class);
+ MemberModifier.field(NeutronL3Adapter.class, "tenantNetworkManager").set(neutronL3Adapter , tenantNetworkManager);
+ when(tenantNetworkManager.isTenantNetworkPresentInNode(any(Node.class), eq(ID))).thenReturn(true);
PowerMockito.doReturn(15L).when(neutronL3Adapter, "getDpidForIntegrationBridge", any(Node.class));
// init instance variables