Index: /branches/rel_apv_10_7/usr/click/lib/libsdns_cli/SdnsCli.c
===================================================================
--- /branches/rel_apv_10_7/usr/click/lib/libsdns_cli/SdnsCli.c	(revision 38166)
+++ /branches/rel_apv_10_7/usr/click/lib/libsdns_cli/SdnsCli.c	(working copy)
@@ -210,18 +210,22 @@
 	int ret = 0;  /*ret is the final return code*/
 	unsigned int remoteAddr;
 	int remotePort;
+        static int sdns_message = 0;
 
 	/*check if gslb or dr is turned on
 	 *if not, don't execute the command
 	 */
 	if ( needCheck && !is_gslb_on_kern() )
 	{
+	    if (!sdns_message)
+	    {
 		/*bug 11815, tangmeng, 11815 */
 		sdns_cli_printf("Please turn on sdns first.\n");
 		/*bug 11815, end */
-		return ERROR_SDNS_NOT_ON;
+		sdns_message = 1;
+	    }
+	    return ERROR_SDNS_NOT_ON;
 	}
-
  	sock = SdnsGetSock();		
 	if (sock < 0)
 	{
Index: /branches/rel_apv_10_7/usr/src/sys/click/app/segment/segment_cli_kern.c
===================================================================
--- /branches/rel_apv_10_7/usr/src/sys/click/app/segment/segment_cli_kern.c	(revision 38166)
+++ /branches/rel_apv_10_7/usr/src/sys/click/app/segment/segment_cli_kern.c	(working copy)
@@ -103,6 +103,9 @@
 static __inline int 
 segment_ipv4_addr_overlap(uint32_t ip1, uint32_t mask1, uint32_t ip2, uint32_t mask2)
 {
+	if (ip1 == ip2 && mask1 == mask2) {
+	    return 0; // No overlap
+	}
 	uint32_t mask = mask1 & mask2;
 	return ((ip1 & mask) == (ip2 & mask));
 }
@@ -123,6 +126,10 @@
 	if(masklen2ip6(prefixlen2, &mask2) != 0) {
 		return -1;
 	}
+        
+	if (IN6_ARE_ADDR_EQUAL(ip1, ip2) && prefixlen1 == prefixlen2) {
+	    return 0; // No overlap
+	}
 	
 	if(prefixlen1 <= prefixlen2) {
 		pmask = &mask1;		
