Fix: enforce to remove security group rules
1. resolve a NPE caused by null subnet gateway
Change-Id: I48abe52d7fb508a53377dcbcc613eca446ccda4e
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingArpHandler.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingArpHandler.java
index a308685..c60dfec 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingArpHandler.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingArpHandler.java
@@ -220,7 +220,7 @@
IpAddress targetIp = Ip4Address.valueOf(arpPacket.getTargetProtocolAddress());
- MacAddress replyMac = gatewayIp(targetIp) ? MacAddress.valueOf(gatewayMac) :
+ MacAddress replyMac = isGatewayIp(targetIp) ? MacAddress.valueOf(gatewayMac) :
getMacFromHostOpenstack(targetIp, srcInstPort.networkId());
if (replyMac == MacAddress.NONE) {
log.trace("Failed to find MAC address for {}", targetIp);
@@ -242,8 +242,16 @@
ByteBuffer.wrap(ethReply.serialize())));
}
- private boolean gatewayIp(IpAddress targetIp) {
+ /**
+ * Denotes whether the given target IP is gateway IP.
+ *
+ * @param targetIp target IP address
+ * @return true if the given targetIP is gateway IP, false otherwise.
+ */
+ private boolean isGatewayIp(IpAddress targetIp) {
return osNetworkService.subnets().stream()
+ .filter(Objects::nonNull)
+ .filter(subnet -> subnet.getGateway() != null)
.anyMatch(subnet -> subnet.getGateway().equals(targetIp.toString()));
}