diff --git a/cli_classcfg.c b/cli_classcfg.c
index 5c5d59d96f84de45f41ccfbc0fedf187bfe57e57..df8be8e1e72aed1f88297a5a2e1f1a98e1927770 100755
--- a/cli_classcfg.c
+++ b/cli_classcfg.c
@@ -437,8 +437,13 @@ void classcfg_parse_ipaddr_ipmask( const char *optstring, const char* optarg, cl
 			ipaddr_conv(subStr[0], &ipaddr);	
 			inet_ntop(AF_INET, &(ipaddr), pxipmatch->ipaddr, INET_ADDRSTRLEN);	
 			if(nSubCnt == 2) {
-				ipmask_conv(subStr[1], &mask);
-				inet_ntop(AF_INET, &(mask), pxipmatch->mask, INET_ADDRSTRLEN);
+				if (strchr(subStr[1], '.') != NULL) {
+					ipmask_conv(subStr[1], &mask);
+					inet_ntop(AF_INET, &(mask), pxipmatch->mask, INET_ADDRSTRLEN);
+				} else {
+					strncpy_s(pxipmatch->mask, sizeof(pxipmatch->mask),
+							subStr[1], strnlen_s(subStr[1], QCLI_MAX_STR));
+				}
 			}
 			break;
 
@@ -446,8 +451,13 @@ void classcfg_parse_ipaddr_ipmask( const char *optstring, const char* optarg, cl
 			ip6addr_conv(subStr[0], &ipaddr6);	
 			inet_ntop(AF_INET6, &(ipaddr6), pxipmatch->ipaddr, INET_ADDRSTRLEN);	
 			if(nSubCnt == 2) {
-				ip6mask_conv(subStr[1], &mask6);
-				inet_ntop(AF_INET6, &(mask6), pxipmatch->mask, INET_ADDRSTRLEN);
+				if (strchr(subStr[1], ':') != NULL) {
+					ip6mask_conv(subStr[1], &mask6);
+					inet_ntop(AF_INET6, &(mask6), pxipmatch->mask, INET_ADDRSTRLEN);
+				} else {
+					strncpy_s(pxipmatch->mask, sizeof(pxipmatch->mask),
+							subStr[1], strnlen_s(subStr[1], QCLI_MAX_STR));
+				}
 			}
 			break;