Fix: do not add fake gateway ARP rule for FLAT typed network

Change-Id: I2463ba0e523846acabdc2ed924432c65ded9964b
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 03af72e..b78328c 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
@@ -462,7 +462,16 @@
                     break;
                 case ARP_BROADCAST_MODE:
                     setDefaultArpRuleForBroadcastMode(osNode, install);
-                    osNetworkService.subnets().forEach(subnet -> setFakeGatewayArpRule(subnet, install, osNode));
+
+                    // we do not add fake gateway ARP rules for FLAT network
+                    // ARP packets generated by FLAT typed VM should not be
+                    // delegated to switch to handle
+                    osNetworkService.subnets().stream().filter(subnet ->
+                            osNetworkService.network(subnet.getNetworkId()) != null &&
+                                    osNetworkService.network(subnet.getNetworkId())
+                                            .getNetworkType() == NetworkType.FLAT)
+                                            .forEach(subnet ->
+                        setFakeGatewayArpRule(subnet, install, osNode));
                     break;
                 default:
                     log.warn("Invalid ARP mode {}. Please use either " +