Add INT watchlist config

- add "watchSubnets" to the netcfg of INT app

Change-Id: I271d9c27692c8969999ece32f8aa08b4392216e0
diff --git a/apps/inbandtelemetry/impl/src/main/java/org/onosproject/inbandtelemetry/impl/SimpleIntManager.java b/apps/inbandtelemetry/impl/src/main/java/org/onosproject/inbandtelemetry/impl/SimpleIntManager.java
index 25d6a50..ffb6b4f 100644
--- a/apps/inbandtelemetry/impl/src/main/java/org/onosproject/inbandtelemetry/impl/SimpleIntManager.java
+++ b/apps/inbandtelemetry/impl/src/main/java/org/onosproject/inbandtelemetry/impl/SimpleIntManager.java
@@ -44,6 +44,8 @@
 import org.onosproject.net.device.DeviceEvent;
 import org.onosproject.net.device.DeviceListener;
 import org.onosproject.net.device.DeviceService;
+import org.onosproject.net.flow.DefaultTrafficSelector;
+import org.onosproject.net.flow.TrafficSelector;
 import org.onosproject.net.host.HostEvent;
 import org.onosproject.net.host.HostListener;
 import org.onosproject.net.host.HostService;
@@ -591,6 +593,32 @@
                                         .enabled(true)
                                         .build();
                                 setConfig(intDeviceConfig);
+
+                                // For each watched subnet, we install two INT rules.
+                                // One match on the source, another match on the destination.
+                                intentMap.clear();
+                                config.watchSubnets().forEach(subnet -> {
+                                    IntIntent.Builder intIntentBuilder = IntIntent.builder()
+                                            .withReportType(IntIntent.IntReportType.TRACKED_FLOW)
+                                            .withReportType(IntIntent.IntReportType.DROPPED_PACKET)
+                                            .withReportType(IntIntent.IntReportType.CONGESTED_QUEUE)
+                                            .withTelemetryMode(IntIntent.TelemetryMode.POSTCARD);
+                                    if (subnet.prefixLength() == 0) {
+                                        // Special case, match any packet
+                                        installIntIntent(intIntentBuilder
+                                                .withSelector(DefaultTrafficSelector.emptySelector())
+                                                .build());
+                                    } else {
+                                        TrafficSelector selector = DefaultTrafficSelector.builder()
+                                                .matchIPSrc(subnet)
+                                                .build();
+                                        installIntIntent(intIntentBuilder.withSelector(selector).build());
+                                        selector = DefaultTrafficSelector.builder()
+                                                .matchIPDst(subnet)
+                                                .build();
+                                        installIntIntent(intIntentBuilder.withSelector(selector).build());
+                                    }
+                                });
                             });
                     break;
                 // TODO: Support removing INT config.