Implement component config to enable double tagged host programming

Change-Id: I4b2c113e5ddcfe23f825fb15d053cc2ee48ee9e1
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
index 292c941..5dc76bc 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
@@ -247,6 +247,10 @@
             label = "Enable this to respond to ARP/NDP requests from unknown hosts.")
     boolean respondToUnknownHosts = true;
 
+    @Property(name = "handleDoubleTaggedHosts", boolValue = false,
+            label = "Program flows and groups for double tagged hosts")
+    boolean handleDoubleTaggedHosts = false;
+
     ArpHandler arpHandler = null;
     IcmpHandler icmpHandler = null;
     IpHandler ipHandler = null;
@@ -629,6 +633,19 @@
             respondToUnknownHosts = expectRespondToUnknownHosts;
             log.info("{} responding to ARPs/NDPs from unknown hosts", respondToUnknownHosts ? "Enabling" : "Disabling");
         }
+
+        String strHandleDoubleTaggedHosts = Tools.get(properties, "handleDoubleTaggedHosts");
+        boolean expectHandleDoubleTaggedHosts = Boolean.parseBoolean(strHandleDoubleTaggedHosts);
+        if (expectHandleDoubleTaggedHosts != handleDoubleTaggedHosts) {
+            handleDoubleTaggedHosts = expectHandleDoubleTaggedHosts;
+            log.info("{} programming for double tagged hosts ", handleDoubleTaggedHosts ? "Enabling" : "Disabling");
+
+            if (handleDoubleTaggedHosts) {
+                hostHandler.populateAllDoubleTaggedHost();
+            } else {
+                hostHandler.revokeAllDoubleTaggedHost();
+            }
+        }
     }
 
     @Override