Broadcast ARPs only with in host subnets
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/ArpHandler.java b/src/main/java/net/onrc/onos/apps/segmentrouting/ArpHandler.java
index 9d82fd6..5befa5b 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/ArpHandler.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/ArpHandler.java
@@ -281,8 +281,17 @@
.setSourceMACAddress(senderMacAddress)
.setEtherType(Ethernet.TYPE_ARP).setPayload(arpRequest);
- sendPacketOut(sw, eth, (short)-1);
-
+ /* Broadcast the ARP request to all switch ports
+ * that subnets are connected to except the port from which
+ * ARP request is received
+ */
+ for (Integer portNo : getSwitchSubnetPorts(sw)) {
+ if (portNo.shortValue() == inPort.getPortNumber().shortValue())
+ continue;
+ log.debug("ArpHandler: Sending ARP request on switch {} port {}",
+ sw.getDpid(), portNo.shortValue());
+ sendPacketOut(sw, eth, portNo.shortValue());
+ }
}
/**