ONOS-6768 Punt ARP/NDP even when a device is not configured
Change-Id: I39f3e7e5e0252ecc548f44ce35806641838d01dd
diff --git a/src/main/java/org/onosproject/segmentrouting/DefaultRoutingHandler.java b/src/main/java/org/onosproject/segmentrouting/DefaultRoutingHandler.java
index 5b6b07e..99021d7 100644
--- a/src/main/java/org/onosproject/segmentrouting/DefaultRoutingHandler.java
+++ b/src/main/java/org/onosproject/segmentrouting/DefaultRoutingHandler.java
@@ -878,9 +878,6 @@
* @param deviceId Switch ID to set the rules
*/
public void populatePortAddressingRules(DeviceId deviceId) {
- rulePopulator.populateIpPunts(deviceId);
- rulePopulator.populateArpNdpPunts(deviceId);
-
// Although device is added, sometimes device store does not have the
// ports for this device yet. It results in missing filtering rules in the
// switch. We will attempt it a few times. If it still does not work,
diff --git a/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java b/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
index 951bf1b..67a13f9 100644
--- a/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
+++ b/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
@@ -1053,6 +1053,12 @@
private void processDeviceAdded(Device device) {
log.info("** DEVICE ADDED with ID {}", device.id());
+
+ // NOTE: Punt ARP/NDP even when the device is not configured.
+ // Host learning without network config is required for CORD config generator.
+ routingRulePopulator.populateIpPunts(device.id());
+ routingRulePopulator.populateArpNdpPunts(device.id());
+
if (deviceConfiguration == null || !deviceConfiguration.isConfigured(device.id())) {
log.warn("Device configuration uploading. Device {} will be "
+ "processed after config completes.", device.id());