diff --git a/app/src/main/java/org/onosproject/segmentrouting/HostHandler.java b/app/src/main/java/org/onosproject/segmentrouting/HostHandler.java
index e4d85de..ffc0e4d 100644
--- a/app/src/main/java/org/onosproject/segmentrouting/HostHandler.java
+++ b/app/src/main/java/org/onosproject/segmentrouting/HostHandler.java
@@ -529,8 +529,8 @@
                                                 MacAddress mac, VlanId innerVlan,
                                                 VlanId outerVlan, EthType outerTpid,
                                                 IpAddress ip, boolean revoke) {
-        if (!srManager.handleDoubleTaggedHosts) {
-            log.debug("Ignore double tagged host {}/{}/{}", mac, outerVlan, innerVlan);
+        if (!srManager.routeDoubleTaggedHosts) {
+            log.debug("Routing for double tagged host is disabled. Ignore {}/{}/{}", mac, outerVlan, innerVlan);
             return;
         }
 
@@ -551,7 +551,7 @@
     }
 
     void populateAllDoubleTaggedHost() {
-        log.info("Populating all double tagged hosts");
+        log.info("Enabling routing for all double tagged hosts");
         Sets.newHashSet(srManager.hostService.getHosts()).stream().filter(this::isDoubleTaggedHost)
                 .forEach(h -> h.locations().forEach(l ->
                     h.ipAddresses().forEach(i ->
@@ -563,7 +563,7 @@
     }
 
     void revokeAllDoubleTaggedHost() {
-        log.info("Revoking all double tagged hosts");
+        log.info("Disabling routing for all double tagged hosts");
         Sets.newHashSet(srManager.hostService.getHosts()).stream().filter(this::isDoubleTaggedHost)
                 .forEach(h -> h.locations().forEach(l ->
                     h.ipAddresses().forEach(i ->
