Index: /branches/rel_apv_10_7/tools/update/ustacksystem.ks
===================================================================
--- /branches/rel_apv_10_7/tools/update/ustacksystem.ks	(revision 38507)
+++ /branches/rel_apv_10_7/tools/update/ustacksystem.ks	(working copy)
@@ -90,6 +90,9 @@
 yasm-1.2.0-4.el7.x86_64
 tuned-2.5.1-4.el7.noarch
 pigz-2.3.4-1.el7.x86_64
+# for azure-cli
+python3-3.9-1.x86_64
+azure-cli-2.38.2-1.el7.x86_64
 
 #below packages are dependence generated by yum
 polkit-pkla-compat-0.1-4.el7.x86_64
@@ -430,6 +433,19 @@
 rpm -ivh http://192.168.100.11/arrayepel.72/libnghttp2-1.33.0-1.1.el7.x86_64.rpm --force --nodeps
 rpm -ivh http://192.168.100.11/arrayepel.72/curl-7.58.0-1.el7.x86_64.rpm --force --nodeps
 
+# install pip3 - pip-24.1.2-py3-none-any.whl
+# with python3-3.9-1.x86_64
+wget http://192.168.100.11/pypirepo/py3/simple/pip/pip-24.1.2-py3-none-any.whl
+python3 /ca/bin/get-pip.py
+
+# python3 -m ensurepip
+# reinstall urllib3-1.26.7-py2.py3-none-any.whl
+python3 -m pip uninstall urllib3
+python3 -m pip install -i http://192.168.100.11/pypirepo/py3/simple urllib3 --trusted-host 192.168.100.11
+
+# install azure-mgmt-compute azure-mgmt-network azure-identity azure-mgmt-resource psutil 
+python3 -m pip install -i http://192.168.100.11/pypirepo/py3/simple azure-mgmt-compute azure-mgmt-network azure-identity azure-mgmt-resource psutil --trusted-host 192.168.100.11
+
 rm -f /etc/fstab
 rm -fr /home/disk1
 
Index: /branches/rel_apv_10_7/tools/ustack.spec
===================================================================
--- /branches/rel_apv_10_7/tools/ustack.spec	(revision 38507)
+++ /branches/rel_apv_10_7/tools/ustack.spec	(working copy)
@@ -114,6 +114,8 @@
 /usr/bin/cp -af %{ustack_rootdir}/anroot/ca %{buildroot}/
 /usr/bin/cp -af %{ustack_rootdir}/usr/click/tools/nagelfar132 %{buildroot}/ca/bin/
 
+/usr/bin/cp -af %{ustack_rootdir}/usr/click/tools/azure %{buildroot}/ca/bin/
+
 install -Dm 0755 -t %{buildroot}/ca/bin \
 	%{ustack_rootdir}/usr/click/lib/libuinet-atcp/bin/atcp/atcp \
 	%{ustack_rootdir}/usr/click/lib/libuinet-atcp/bin/vmstat/vmstat \
Index: /branches/rel_apv_10_7/usr/click/bin/backend/sys_cmd.c
===================================================================
--- /branches/rel_apv_10_7/usr/click/bin/backend/sys_cmd.c	(revision 38507)
+++ /branches/rel_apv_10_7/usr/click/bin/backend/sys_cmd.c	(working copy)
@@ -3023,6 +3023,663 @@
 		return ptyrun_ex("ping", ping_path, "ping", "-c", "5", inet_ntoa(in), option) == 0 ? 0 : -1;
 }
 
+
+// AZURE CLOUD FUNCTION START
+void 
+cloud_az_ha_enable() 
+{
+	cloud_az_ha_disable();
+
+	FILE *fp;
+	char path[1035];
+	char cmd[1024];
+
+	fp = popen("python3 /ca/bin/azure/SystemRun.py 0 /tmp/az_account az account show", "r");
+	if (fp == NULL) {
+		printf("Fail\n");
+		exit(1);
+	} else {
+		pclose(fp);
+	}
+
+	fp = fopen("/tmp/az_account_0", "r");
+	if (fp == NULL) {
+		printf("Fail\n");
+		return;
+	} else {
+		fclose(fp);
+	}
+
+	// run in background
+	snprintf(cmd, 1024, "python3 /ca/bin/azure/AZFailoverPoller.py -mode 1 &");
+	system(cmd);
+
+	sleep(2);
+	// ret = system("ps aux | grep -v grep | grep -q \"python3 /ca/bin/azure/AZFailoverPoller.py -mode 1\"");
+	// if (ret == -1) {
+	// 	printf("Fail\n");
+	// 	return;
+	// }
+
+	// if (WIFEXITED(ret)) {
+	// 	if (WEXITSTATUS(ret) != 0) {
+	// 		printf("Fail\n");
+	// 	} else {
+	// 		printf("Success\n");
+	// 	}
+	// } else {
+	// 	printf("Fail\n");
+	// }
+
+	fp = popen("python3 /ca/bin/azure/SystemRun.py 1 /tmp/az_ha ps aux '|' grep -v grep '|' grep -q 'python3 /ca/bin/azure/AZFailoverPoller.py -mode 1'", "r");
+	if (fp == NULL) {
+		printf("Fail\n");
+		exit(1);
+	} else {
+		pclose(fp);
+	}
+
+	fp = fopen("/tmp/az_ha_0", "r");
+	if (fp == NULL) {
+		printf("Fail\n");
+		return;
+	} else {
+		fclose(fp);
+	}
+	printf("Success\n");
+
+
+//
+	// fp = popen("python3 /ca/bin/azure/AZFailoverPoller.py -mode 1", "r");
+	// if (fp == NULL) {
+    //     printf("Failed to run command\n" );
+    //     exit(1);
+    // }
+    // while (fgets(path, sizeof(path)-1, fp) != NULL) {
+    //     printf("%s", path);
+    // }
+    // pclose(fp);
+//
+}
+
+// void
+// cloud_az_show_ha_enable()
+// {
+// 	if (system("ps aux | grep -v grep | grep -q \"python3 /ca/bin/azure/AZFailoverPoller.py -mode 1\"")) {
+// 		printf("Disable\n");
+// 	} else {
+// 		printf("Enable\n");
+// 	}
+// 	printf("123\n");
+// 	sleep(1);
+// 	printf("456\n");
+// 	return;
+// }
+// Failed to execute "cloud az show ha"
+
+void 
+cloud_az_ha_disable() 
+{
+	FILE *fp;
+	char path[1035];
+	char cmd[1024];
+
+	// snprintf(cmd, 1024, "python3 /ca/bin/azure/AZFailoverPoller.py -mode 2");
+	// system(cmd);
+
+//
+	// fp = popen("python3 /ca/bin/azure/AZFailoverPoller.py -mode 2", "r");
+	// if (fp == NULL) {
+    //     printf("Failed to run command\n" );
+    //     exit(1);
+    // }
+    // while (fgets(path, sizeof(path)-1, fp) != NULL) {
+    //     printf("%s", path);
+    // }
+    // pclose(fp);
+//
+
+	system("ps aux | grep 'python3 /ca/bin/azure/AZFailoverPoller.py -mode 1' | grep -v grep | awk '{print $2}' | xargs kill -9");
+}
+
+void 
+cloud_az_udr_enable() 
+{
+	cloud_az_udr_disable();
+
+	FILE *fp;
+	char path[1035];
+	char cmd[1024];
+
+	fp = popen("python3 /ca/bin/azure/SystemRun.py 0 /tmp/az_account az account show", "r");
+	if (fp == NULL) {
+		printf("Fail\n");
+		exit(1);
+	} else {
+		pclose(fp);
+	}
+
+	fp = fopen("/tmp/az_account_0", "r");
+	if (fp == NULL) {
+		printf("Fail\n");
+		return;
+	} else {
+		fclose(fp);
+	}
+
+	// run in background
+	snprintf(cmd, 1024, "python3 /ca/bin/azure/UDRPoller.py -mode 1 &");
+	system(cmd);
+
+	sleep(2);
+	// ret = system("ps aux | grep -v grep | grep -q \"python3 /ca/bin/azure/UDRPoller.py -mode 1\"");
+	// if (ret == -1) {
+	// 	printf("Fail\n");
+	// 	return;
+	// }
+
+	// if (WIFEXITED(ret)) {
+	// 	if (WEXITSTATUS(ret) != 0) {
+	// 		printf("Fail\n");
+	// 	} else {
+	// 		printf("Success\n");
+	// 	}
+	// } else {
+	// 	printf("Fail\n");
+	// }
+
+	fp = popen("python3 /ca/bin/azure/SystemRun.py 1 /tmp/az_udr ps aux '|' grep -v grep '|' grep -q 'python3 /ca/bin/azure/UDRPoller.py -mode 1'", "r");
+	if (fp == NULL) {
+		printf("Fail\n");
+		exit(1);
+	} else {
+		pclose(fp);
+	}
+
+	fp = fopen("/tmp/az_udr_0", "r");
+	if (fp == NULL) {
+		printf("Fail\n");
+		return;
+	} else {
+		fclose(fp);
+	}
+	printf("Success\n");
+
+//
+	// fp = popen("python3 /ca/bin/azure/AZFailoverPoller.py -mode 1", "r");
+	// if (fp == NULL) {
+    //     printf("Failed to run command\n" );
+    //     exit(1);
+    // }
+    // while (fgets(path, sizeof(path)-1, fp) != NULL) {
+    //     printf("%s", path);
+    // }
+    // pclose(fp);
+//
+}
+
+// void
+// cloud_az_show_udr_enable()
+// {
+// 	if (system("ps aux | grep -v grep | grep -q \"python3 /ca/bin/azure/UDRPoller.py -mode 1\"")) {
+// 		printf("Disable\n");
+// 	} else {
+// 		printf("Enable\n");
+// 	}
+// }
+
+void 
+cloud_az_udr_disable() 
+{
+	FILE *fp;
+	char path[1035];
+	char cmd[1024];
+
+	// snprintf(cmd, 1024, "python3 /ca/bin/azure/AZFailoverPoller.py -mode 2");
+	// system(cmd);
+
+//
+	// fp = popen("python3 /ca/bin/azure/AZFailoverPoller.py -mode 2", "r");
+	// if (fp == NULL) {
+    //     printf("Failed to run command\n" );
+    //     exit(1);
+    // }
+    // while (fgets(path, sizeof(path)-1, fp) != NULL) {
+    //     printf("%s", path);
+    // }
+    // pclose(fp);
+//
+
+	system("ps aux | grep 'python3 /ca/bin/azure/UDRPoller.py -mode 1' | grep -v grep | awk '{print $2}' | xargs kill -9");
+}
+
+void 
+cloud_az_login() 
+{
+	FILE *fp = NULL;
+	char path[1035];
+	char cmd[1024];
+	char buffer[1024];
+	size_t bytesRead;
+
+// check and delete file first
+
+	// First File
+	fp = fopen("/tmp/login_msg.txt", "r");
+	if (fp != NULL) {
+		fclose(fp);
+		snprintf(cmd, 1024, "rm -rf /tmp/login_msg.txt");
+		system(cmd);
+		fp = NULL;
+	}
+
+	//Second File
+	fp = fopen("/tmp/login_response.txt", "r");
+	if (fp != NULL) {
+		fclose(fp);
+		snprintf(cmd, 1024, "rm -rf /tmp/login_response.txt");
+		system(cmd);
+		fp = NULL;
+	}
+
+	snprintf(cmd, 1024, "python3 /ca/bin/azure/AZAuthManager.py -mode login &");
+	system(cmd);
+
+	printf("Please login using the above information in 1 minute.\nAfter 1 minute the login credential will be clear.\n");
+	int count = 0;
+
+	// read the tmp file from Mary
+	while(fp == NULL && count < 60) {
+		fp = fopen("/tmp/login_msg.txt", "r");
+		sleep(1);
+		count++;
+	}
+
+	if (fp != NULL) {
+		fclose(fp);
+		sleep(3);
+		fp = fopen("/tmp/login_msg.txt", "r");
+	}
+	
+	if (fp != NULL) {
+		while (fgets(buffer, sizeof(buffer), fp) != NULL) {
+        	printf("%s", buffer);
+		}
+
+		fclose(fp);
+	}
+    
+	fp = NULL;
+
+	// read the second file from Mary
+	while(fp == NULL && count < 60) {
+		fp = fopen("/tmp/login_response.txt", "r");
+		sleep(1);
+		count++;
+	}
+
+	if (fp != NULL) {
+		fclose(fp);
+		sleep(3);
+		fp = fopen("/tmp/login_response.txt", "r");
+	}
+
+	if (fp == NULL) {
+		fp = fopen("/tmp/login_response.txt", "r");
+	}
+	
+	if (fp != NULL) {
+		while (fgets(buffer, sizeof(buffer), fp) != NULL) {
+			printf("%s", buffer);
+		}
+
+		fclose(fp);
+	}
+
+	system("ps aux | grep 'az login' | grep -v grep | awk '{print $2}' | xargs kill -9");
+	system("ps aux | grep 'python3 -sm azure.cli login' | grep -v grep | awk '{print $2}' | xargs kill -9");
+	system("ps aux | grep 'python3 /ca/bin/azure/AZAuthManager.py -mode login' | grep -v grep | awk '{print $2}' | xargs kill -9");
+}
+
+
+void
+cloud_az_logout()
+{
+    FILE *fp;
+    char path[1035];
+    char cmd[1024];
+ 
+// delete output file
+    fp = popen("/tmp/output.txt", "r");
+    if (fp != NULL) {
+        snprintf(cmd, 1024, "rm -rf /tmp/output.txt");
+        system(cmd);
+        fclose(fp);
+        fp = NULL;
+    }
+ 
+    fp = popen("python3 /ca/bin/azure/AZAuthManager.py -mode logout", "r");
+    if (fp == NULL) {
+        printf("Failed to run command\n" );
+        exit(1);
+    }
+    while (fgets(path, sizeof(path)-1, fp) != NULL) {
+        printf("%s", path);
+    }
+    pclose(fp);
+    fp = NULL;
+ 
+// read output file
+    while(fp == NULL) {
+        fp = fopen("/tmp/output.txt", "r");
+        sleep(1);
+    }
+   
+    while (fgets(path, sizeof(path), fp) != NULL) {
+        printf("%s", path);
+    }
+ 
+    fclose(fp);
+}
+
+void
+cloud_az_set_subscription(char *subscription_id)
+{
+	FILE *fp;
+	char path[1035];
+	char cmd[1024];
+
+	snprintf(cmd, 1024, "az account set --subscription %s", subscription_id);
+
+	fp = popen(cmd, "r");
+	if (fp == NULL) {
+		exit(1);
+	} else {
+		while (fgets(path, sizeof(path)-1, fp) != NULL) {
+			printf("%s", path);
+		}
+		pclose(fp);
+	}
+}
+
+void 
+cloud_az_show_subscription() 
+{
+	FILE *fp;
+	char path[1035];
+	char cmd[1024];
+
+	// snprintf(cmd, 1024, "python3 /ca/bin/azure/AZAuthManager.py -mode show");
+	// system(cmd);
+
+//
+	// fp = popen("python3 /ca/bin/azure/AZAuthManager.py -mode show", "r");
+	// if (fp == NULL) {
+    //     printf("Failed to run command\n" );
+    //     exit(1);
+    // }
+    // while (fgets(path, sizeof(path)-1, fp) != NULL) {
+    //     printf("%s", path);
+    // }
+    // pclose(fp);
+
+	fp = popen("python3 /ca/bin/azure/SystemRun.py 0 /tmp/az_account az account show", "r");
+	if (fp == NULL) {
+		printf("Please run 'cloud az login' to setup account.");
+		exit(1);
+	} else {
+		pclose(fp);
+	}
+
+	fp = fopen("/tmp/az_account_0", "r");
+	if (fp == NULL) {
+		printf("Please run 'cloud az login' to setup account.");
+		return;
+	} else {
+		fclose(fp);
+	}
+
+	fp = fopen("/tmp/az_account_output", "r");
+	if (fp == NULL) { 
+		printf("Please run 'cloud az login' to setup account.");
+		return;
+	} else {
+		while (fgets(path, sizeof(path)-1, fp) != NULL) {
+			printf("%s", path);
+		}
+		fclose(fp);
+	}
+
+	// fp = popen("az account show", "r");
+	// if (fp == NULL) {
+	// 	printf("Please run 'cloud az login' to setup account. 2");
+	// 	return;
+	// } else {
+	// 	while (fgets(path, sizeof(path)-1, fp) != NULL) {
+	// 		printf("%s", path);
+	// 	}
+	// 	pclose(fp);
+	// }
+
+
+
+
+	// int ret = system("az account show");
+	// printf("1: %d\n", ret);
+	// if (ret == -1) {
+	// 	printf("Please run 'cloud az login' to setup account. 1");
+	// 	return;
+	// }
+
+	// if (WIFEXITED(ret)) {
+	// 	printf("2: %d\n", WEXITSTATUS(ret));
+	// 	if (WEXITSTATUS(ret) != 0) {
+	// 		printf("Please run 'cloud az login' to setup account. 2");
+	// 		return;
+	// 	}
+	// } else {
+	// 	printf("Please run 'cloud az login' to setup account. 3");
+	// 	return;
+	// }
+	
+	// fp = popen("az account show", "r");
+	// if (fp == NULL) {
+	// 	printf("Please run 'cloud az login' to setup account.");
+	// 	exit(1);
+	// } else {
+	// 	while (fgets(path, sizeof(path)-1, fp) != NULL) {
+	// 		printf("%s", path);
+	// 	}
+	// 	pclose(fp);
+	// }
+//
+}
+
+void 
+cloud_az_failover_trigger() 
+{
+	FILE *fp;
+	char path[1035];
+	char cmd[1024];
+
+	// snprintf(cmd, 1024, "python3 /ca/bin/azure/AZFailoverManager.py -mode 1");
+	// system(cmd);
+
+//
+	fp = popen("python3 /ca/bin/azure/AZFailoverManager.py -mode 1", "r");
+	if (fp == NULL) {
+        printf("Failed to run command\n" );
+        exit(1);
+    }
+    while (fgets(path, sizeof(path)-1, fp) != NULL) {
+        printf("%s", path);
+    }
+    pclose(fp);
+//
+}
+
+void 
+cloud_az_failover_recover() 
+{
+	FILE *fp;
+	char path[1035];
+	char cmd[1024];
+
+	// snprintf(cmd, 1024, "python3 /ca/bin/azure/AZFailoverManager.py -mode 2");
+	// system(cmd);
+
+//
+	fp = popen("python3 /ca/bin/azure/AZFailoverManager.py -mode 2", "r");
+	if (fp == NULL) {
+        printf("Failed to run command\n" );
+        exit(1);
+    }
+    while (fgets(path, sizeof(path)-1, fp) != NULL) {
+        printf("%s", path);
+    }
+    pclose(fp);
+//
+}
+
+void 
+cloud_az_set_nicconfig(char *subscription_id, char *resource_group_name, char *from_nic_name, char *to_nic_name) 
+{
+	FILE *fp;
+	char path[1035];
+	char cmd[1024];
+
+	snprintf(cmd, 1024, "python3 /ca/bin/azure/ConfigManager.py -mode set -sub_id %s -res_grp_name %s -src_nic_name %s -dest_nic_name %s", 
+			subscription_id, resource_group_name, from_nic_name, to_nic_name);
+	// system(cmd);
+
+	fp = popen(cmd, "r");
+	if (fp == NULL) {
+        printf("Failed to run command\n" );
+        exit(1);
+    }
+    while (fgets(path, sizeof(path)-1, fp) != NULL) {
+        printf("%s", path);
+    }
+    pclose(fp);
+}
+
+void 
+cloud_az_set_udrconfig(char *subscription_id, char *resource_group_name, char *vm_name, char *ip_running, char *ip_deallocating) 
+{
+	FILE *fp;
+	char path[1035];
+	char cmd[1024];
+
+	snprintf(cmd, 1024, "python3 /ca/bin/azure/RouteConfigManager.py -mode set -sub_id %s -res_grp_name %s -vm_name %s -ip_running %s -ip_deallocating %s", 
+			subscription_id, resource_group_name, vm_name, ip_running, ip_deallocating);
+	// system(cmd);
+
+	fp = popen(cmd, "r");
+	if (fp == NULL) {
+        printf("Failed to run command\n" );
+        exit(1);
+    }
+    while (fgets(path, sizeof(path)-1, fp) != NULL) {
+        printf("%s", path);
+    }
+    pclose(fp);
+}
+
+void 
+cloud_az_clear_nicconfig() 
+{
+	FILE *fp;
+	char path[1035];
+	char cmd[1024];
+
+	// snprintf(cmd, 1024, "python3 /ca/bin/azure/ConfigManager.py -mode clear");
+	// system(cmd);
+
+//
+	fp = popen("python3 /ca/bin/azure/ConfigManager.py -mode clear", "r");
+	if (fp == NULL) {
+        printf("Failed to run command\n" );
+        exit(1);
+    }
+    while (fgets(path, sizeof(path)-1, fp) != NULL) {
+        printf("%s", path);
+    }
+    pclose(fp);
+//
+}
+
+void 
+cloud_az_show_nicconfig() 
+{
+	FILE *fp;
+	char path[1035];
+	char cmd[1024];
+
+	// snprintf(cmd, 1024, "python3 /ca/bin/azure/ConfigManager.py -mode show");
+	// system(cmd);
+
+//
+	fp = popen("python3 /ca/bin/azure/ConfigManager.py -mode show", "r");
+	if (fp == NULL) {
+        printf("Failed to run command\n" );
+        exit(1);
+    }
+    while (fgets(path, sizeof(path)-1, fp) != NULL) {
+        printf("%s", path);
+    }
+    pclose(fp);
+//
+}
+
+void 
+cloud_az_clear_udrconfig() 
+{
+	FILE *fp;
+	char path[1035];
+	char cmd[1024];
+
+	// snprintf(cmd, 1024, "python3 /ca/bin/azure/ConfigManager.py -mode clear");
+	// system(cmd);
+
+//
+	fp = popen("python3 /ca/bin/azure/RouteConfigManager.py -mode clear", "r");
+	if (fp == NULL) {
+        printf("Failed to run command\n" );
+        exit(1);
+    }
+    while (fgets(path, sizeof(path)-1, fp) != NULL) {
+        printf("%s", path);
+    }
+    pclose(fp);
+//
+}
+
+void 
+cloud_az_show_udrconfig() 
+{
+	FILE *fp;
+	char path[1035];
+	char cmd[1024];
+
+	// snprintf(cmd, 1024, "python3 /ca/bin/azure/ConfigManager.py -mode show");
+	// system(cmd);
+
+//
+	fp = popen("python3 /ca/bin/azure/RouteConfigManager.py -mode show", "r");
+	if (fp == NULL) {
+        printf("Failed to run command\n" );
+        exit(1);
+    }
+    while (fgets(path, sizeof(path)-1, fp) != NULL) {
+        printf("%s", path);
+    }
+    pclose(fp);
+//
+}
+
+// AZURE CLOUD FUNCTION END
+
+
 int
 ui_ping_gw(uint32_t ip, uint32_t gateway, char* option)
 {
Index: /branches/rel_apv_10_7/usr/click/lib/libparser/commands.pm
===================================================================
--- /branches/rel_apv_10_7/usr/click/lib/libparser/commands.pm	(revision 38507)
+++ /branches/rel_apv_10_7/usr/click/lib/libparser/commands.pm	(working copy)
@@ -2,9 +2,9 @@
 # The format is strict. New Command tables may be used if the
 # format is similar, the only other reqruirement is that
 # sub get_commands() returns a refernce to the command Array.
-# 
+#
 # Note: please:
-#       * capitalize all acronyms 
+#       * capitalize all acronyms
 #       * avoid output messages longer than 79 characters
 # $ArrayOS$
 
@@ -21,12 +21,411 @@
 #I really recommend using 3 space tab stops, or this looks horrible
 #At the top it is an array of hashesdeemed
 my @AoH = (
+
+# AZURE COMMAND START
+
+	# cloud
+
+	{
+		#Menu objects are not that special, just a hash
+		obj_type => "MENU",
+		parent_menu => ".",
+		name => "cloud" ,
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Cloud functionality commands",
+		# each menu must have a unique name; this is the internal name
+		# used to build a command tree.
+		uniq_name => "root_cloud",
+	},
+
+	# cloud az
+
+	{
+		obj_type => "MENU",
+		name => "az",
+		parent_menu => "root_cloud",
+		uniq_name => "root_cloud_azure",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Display Cloud Azure decision",
+	},
+
+    # cloud az ha
+
+	{
+		obj_type => "MENU",
+		name => "ha",
+		parent_menu => "root_cloud_azure",
+		uniq_name => "root_cloud_azure_ha",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Display Cloud Azure HA decision",
+	},
+
+	# cloud az ha enable
+
+	{
+		obj_type => "ITEM",
+		name => "enable",
+		menu => "root_cloud_azure_ha",
+		help_string => "Enable both Failover and Recover function in Azure",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "cloud_az_ha_enable",
+		function_args => [],
+	},
+
+	# cloud az ha disable
+
+	{
+		obj_type => "ITEM",
+		name => "disable",
+		menu => "root_cloud_azure_ha",
+		help_string => "Disable both Failover and Recover function in Azure",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "cloud_az_ha_disable",
+		function_args => [],
+	},
+
+    # cloud az udr
+
+	{
+		obj_type => "MENU",
+		name => "udr",
+		parent_menu => "root_cloud_azure",
+		uniq_name => "root_cloud_azure_udr",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Display Cloud Azure UDR decision",
+	},
+
+	# cloud az udr enable
+
+	{
+		obj_type => "ITEM",
+		name => "enable",
+		menu => "root_cloud_azure_udr",
+		help_string => "Enable UDR transition when the intended machine is down.",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "cloud_az_udr_enable",
+		function_args => [],
+	},
+
+	# cloud az udr disable
+
+	{
+		obj_type => "ITEM",
+		name => "disable",
+		menu => "root_cloud_azure_udr",
+		help_string => "Disable UDR transition when the intended machine is down.",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "cloud_az_udr_disable",
+		function_args => [],
+	},
+
+	# cloud az login
+
+	{
+		obj_type => "ITEM",
+		name => "login",
+		menu => "root_cloud_azure",
+		help_string => "Login to Cloud Azure CLI",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "cloud_az_login",
+		function_args => [],
+	},
+
+	# cloud az logout
+
+	{
+		obj_type => "ITEM",
+		name => "logout",
+		menu => "root_cloud_azure",
+		help_string => "Logout from Cloud Azure CLI",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "cloud_az_logout",
+		function_args => [],
+	},
+
+	# cloud az show
+
+	{
+		obj_type => "MENU",
+		name => "show",
+		parent_menu => "root_cloud_azure",
+		uniq_name => "root_cloud_azure_show",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Display Cloud Azure Show decision",
+	},
+
+	# cloud az show status
+
+	{
+		obj_type => "ITEM",
+		name => "subscription",
+		menu => "root_cloud_azure_show",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",	
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Check Azure CLI log in status",
+		function_name => "cloud_az_show_subscription",
+		function_args => [],
+	},
+
+	# cloud az failover
+
+	{
+		obj_type => "MENU",
+		name => "failover",
+		parent_menu => "root_cloud_azure",
+		uniq_name => "root_cloud_azure_failover",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Display Cloud Azure Failover decision",
+	},
+
+	# cloud az failover trigger
+
+	{
+		obj_type => "ITEM",
+		name => "trigger",
+		menu => "root_cloud_azure_failover",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",	
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Manually run the Azure Failover Trigger",
+		function_name => "cloud_az_failover_trigger",
+		function_args => [],
+	},
+
+	# cloud az failover recover
+
+	{
+		obj_type => "ITEM",
+		name => "recover",
+		menu => "root_cloud_azure_failover",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Manually run the Azure Failover Recover",
+		function_name => "cloud_az_failover_recover",
+		function_args => [],
+	},
+
+	# cloud az set
+
+	{
+		obj_type => "MENU",
+		name => "set",
+		parent_menu => "root_cloud_azure",
+		uniq_name => "root_cloud_azure_set",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Display Cloud Azure Set decision",
+	},
+
+	# cloud az set nicconfig
+
+	{
+		obj_type => "ITEM",
+		name => "nicconfig",
+		menu => "root_cloud_azure_set",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",	
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Set the configuration of NIC",
+		function_name => "cloud_az_set_nicconfig",
+		function_args => [
+								 {
+                                        type => "STRING",
+										help_string => "Enter subscription ID: ",
+                                        optional => "NO",
+
+                                 }, 
+   								 {
+                                        type => "STRING",
+										help_string => "Enter resource group name: ",
+                                        optional => "NO",
+                                 }, 
+								 {
+                                        type => "STRING",
+										help_string => "Enter NIC name of the primary machine: ",
+                                        optional => "NO",
+
+                                 }, 
+								 {
+                                        type => "STRING",
+										help_string => "Enter NIC name of the secondary machine: ",
+                                        optional => "NO",
+
+                                 }, 
+				 		 ],
+	},
+
+    # cloud az set udrconfig
+
+	{
+		obj_type => "ITEM",
+		name => "udrconfig",
+		menu => "root_cloud_azure_set",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",	
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Set the configuration of UDR",
+		function_name => "cloud_az_set_udrconfig",
+		function_args => [
+								 {
+                                        type => "STRING",
+										help_string => "Enter subscription ID: ",
+                                        optional => "NO",
+
+                                 }, 
+   								 {
+                                        type => "STRING",
+										help_string => "Enter resource group name: ",
+                                        optional => "NO",
+                                 }, 
+                                 {
+                                        type => "STRING",
+										help_string => "Enter vm name: ",
+                                        optional => "NO",
+                                 }, 
+								 {
+                                        type => "IPADDR",
+										help_string => "Enter ip of set on UDR while monitored vm is up: ",
+                                        optional => "NO",
+
+                                 }, 
+								 {
+                                        type => "IPADDR",
+										help_string => "Enterip of set on UDR while monitored vm is down: ",
+                                        optional => "NO",
+
+                                 }, 
+				 		 ],
+	},
+
+    # cloud az set subscription
+	{
+		obj_type => "ITEM",
+		name => "subscription",
+		menu => "root_cloud_azure_set",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",	
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Set the subscription of azure",
+		function_name => "cloud_az_set_subscription",
+		function_args => [
+								 {
+                                        type => "STRING",
+										help_string => "subscription ID: ",
+                                        optional => "NO",
+
+                                 }, 
+				 		 ],
+	},
+
+	# cloud az clear
+
+	{
+		obj_type => "MENU",
+		name => "clear",
+		parent_menu => "root_cloud_azure",
+		uniq_name => "root_cloud_azure_clear",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Display Cloud Azure Clear decision",
+	},
+
+	# cloud az clear nicconfig
+
+	{
+		obj_type => "ITEM",
+		name => "nicconfig",
+		menu => "root_cloud_azure_clear",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",	
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Clear the configuration of NIC",
+		function_name => "cloud_az_clear_nicconfig",
+		function_args => [],
+	},
+
+	# cloud az show nicconfig
+
+	{
+		obj_type => "ITEM",
+		name => "nicconfig",
+		menu => "root_cloud_azure_show",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",	
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Show the configuration of NIC",
+		function_name => "cloud_az_show_nicconfig",
+		function_args => [],
+	},
+
+	# # cloud az show ha_enable
+
+	# {
+	# 	obj_type => "ITEM",
+	# 	name => "ha",
+	# 	menu => "root_cloud_azure_show",
+	# 	cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",	
+	# 	user_level => "CLI_LEVEL_CONFIG",
+	# 	help_string => "Show the ha status of Azure",
+	# 	function_name => "cloud_az_show_ha_enable",
+	# 	function_args => [],
+	# },
+
+    # cloud az clear udrconfig
+
+	{
+		obj_type => "ITEM",
+		name => "udrconfig",
+		menu => "root_cloud_azure_clear",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",	
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Clear the configuration of UDR",
+		function_name => "cloud_az_clear_udrconfig",
+		function_args => [],
+	},
+
+	# cloud az show udrconfig
+
+	{
+		obj_type => "ITEM",
+		name => "udrconfig",
+		menu => "root_cloud_azure_show",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",	
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Show the configuration of UDR",
+		function_name => "cloud_az_show_udrconfig",
+		function_args => [],
+	},
+
+	# # cloud az show udr_enable
+
+	# {
+	# 	obj_type => "ITEM",
+	# 	name => "udr",
+	# 	menu => "root_cloud_azure_show",
+	# 	cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",	
+	# 	user_level => "CLI_LEVEL_CONFIG",
+	# 	help_string => "Show the UDR status of Azure",
+	# 	function_name => "cloud_az_show_udr_enable",
+	# 	function_args => [],
+	# },
+
+# AZURE COMMAND END
+
+
+
 	{
 		#Menu objects are not that special, just a hash
 		obj_type => "MENU",
 		parent_menu => ".",
 		name => "slb" ,
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "SLB commands",
 		# each menu must have a unique name; this is the internal name
@@ -37,12 +436,12 @@
 		obj_type =>"MENU",
 		parent_menu => ".",
 		name =>  "show" ,
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_USER",
 		help_string => "Display system information",
 		uniq_name => "root_show",
 	},
-	
+
 	{
 		obj_type =>"MENU",
 		parent_menu => ".",
@@ -95,7 +494,7 @@
         },
 
 
-          
+
         {
                 obj_type => "ITEM",
                 name => "sysmon",
@@ -131,7 +530,7 @@
 					help_string => "peer name, use [all] for all the peers",
                                         optional => "NO",
 
-                                 }, 
+                                 },
 				 ],
         },
         #bug 18598 zhenglf 200803
@@ -178,7 +577,7 @@
 				help_string => "synconfig peer name. (value \\\"all\\\" means all peers)",
 				optional => "NO",
 
-			}, 
+			},
 		],
 	},
 	{
@@ -233,7 +632,7 @@
 #
 #                                ],
 #        },
-	
+
         {
                 obj_type => "ITEM",
                 name => "to",
@@ -281,19 +680,19 @@
 #	},
 #        {
 #		obj_type => "ITEM",
-#		name => "peer",   
+#		name => "peer",
 #		menu => "root_no_sync_sdns_config",
 #		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 #		user_level => "CLI_LEVEL_CONFIG",
 #		help_string => "Remove a sync sdns config peer service",
-#		function_name => "no_sync_sdns_config_peer",  
+#		function_name => "no_sync_sdns_config_peer",
 #		function_args => [ {
 #					type => "STRING",
-#					help_string => "peer name",   
+#					help_string => "peer name",
 #					optional => "NO",
 #				}, ],
-#	},		
-	#end bug 18598        
+#	},
+	#end bug 18598
         {
                 obj_type => "MENU",
                 name => "rollback",
@@ -316,7 +715,7 @@
 					help_string => "peer name",
                                         optional => "NO",
 
-                                 }, 
+                                 },
 				 ],
         },
         {
@@ -332,7 +731,7 @@
 					help_string => "peer name, use [all] for all the peers",
                                         optional => "NO",
 
-                                 }, 
+                                 },
 				 ],
         },
         {
@@ -349,13 +748,13 @@
 										help_string => "peer name",
                                         optional => "NO",
 
-                                 }, 
+                                 },
    								 {
                                         type => "STRING",
 										help_string => "segment name",
                                         optional => "YES",
                                         default_value => "\"\"",
-                                 }, 
+                                 },
 				 ],
         },
         {
@@ -468,7 +867,7 @@
         },
 	{
 		obj_type => "MENU",
-		name => "status",  
+		name => "status",
 		parent_menu => "root_show_sync_config",
 		uniq_name => "root_show_sync_config_status",
 		help_string => "Display synchronization status",
@@ -527,25 +926,25 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "challenge",   
+		name => "challenge",
 		menu => "root_no_sync_config",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Reset sync config challenge code",
-		function_name => "ui_clear_synconfig_challenge",  
+		function_name => "ui_clear_synconfig_challenge",
 		function_args => [],
 	},
 	{
 		obj_type => "ITEM",
-		name => "peer",   
+		name => "peer",
 		menu => "root_no_sync_config",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove a sync config peer service",
-		function_name => "no_sync_config_peer",  
+		function_name => "no_sync_config_peer",
 		function_args => [ {
 					type => "STRING",
-					help_string => "peer name",   
+					help_string => "peer name",
 					optional => "NO",
 				}, ],
 	},
@@ -617,7 +1016,7 @@
 		obj_type => "MENU",
 		parent_menu => ".",
 		name => "log",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Change logging settings",
 		uniq_name => "root_log",
@@ -626,7 +1025,7 @@
 		obj_type => "MENU",
 		parent_menu => "root_log",
 		name => "appvisual",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Change application visualization logging settings",
 		uniq_name => "root_log_appvisualize",
@@ -645,8 +1044,8 @@
 								help_string => "Application visualization log module(slb-http, slb-tcp, sdns, ssl, llb), default is all",
 								optional => "YES",
 								default_value => "\"\"",
-								
-							}, 
+
+							},
 						],
 	},
 	{
@@ -663,14 +1062,14 @@
 								help_string => "Application visualization log module(slb-http, slb-tcp, sdns, ssl, llb), default is all",
 								optional => "YES",
 								default_value => "\"\"",
-							}, 
+							},
 						],
 	},
 	{
 		obj_type => "MENU",
 		parent_menu => "root_log",
 		name => "http",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Change http logging settings",
 		uniq_name => "root_log_http",
@@ -692,7 +1091,7 @@
 								type => "STRING",
 								help_string => "regular expression to match the log messages",
 								optional => "NO",
-							    }, 
+							    },
 				  {
 								type => "STRING",
 								help_string => "email address",
@@ -702,15 +1101,15 @@
 		                                                type => "U32",
 								help_string => "interval to send the email (0..10000 minutes, 0 means to email right away)",
 								optional => "NO",
-							    }, 
+							    },
 				  {
 								type => "STRING",
 								help_string => "alert log type: data or count",
 								optional => "YES",
 								default_value => "\"data\"",
-							    }, 
+							    },
 				  ],
-	}, 	
+	},
 	{
 		obj_type => "ITEM",
 		name => "squid",
@@ -724,14 +1123,14 @@
 								help_string => "vip|novip",
 								optional => "YES",
 								default_value => "\"None\"",
-								}, 
+								},
 				  {
 								type => "STRING",
 								help_string => "host|nohost",
 								optional => "YES",
 								default_value => "\"None\"",
 								},],
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "off",
@@ -741,7 +1140,7 @@
 		help_string => "Disable http access logging",
 		function_name => "proxy_log_off",
 		function_args => [],
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "welf",
@@ -751,7 +1150,7 @@
 		help_string => "Set http access logs to welf format",
 		function_name => "proxy_log_type_welf",
 		function_args => [],
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "common",
@@ -765,7 +1164,7 @@
 								help_string => "vip|novip",
 								optional => "YES",
 								default_value => "\"None\"",
-								}, 
+								},
 				  {
 								type => "STRING",
 								help_string => "host|nohost",
@@ -786,7 +1185,7 @@
 								help_string => "vip|novip",
 								optional => "YES",
 								default_value => "\"None\"",
-								}, 
+								},
 				  {
 								type => "STRING",
 								help_string => "host|nohost",
@@ -807,7 +1206,7 @@
 								help_string => "format(%%U means full URL, %%c means client IP address...Please read APP Guide)",
 								optional => "NO",
 								},],
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "test",
@@ -817,8 +1216,8 @@
 		help_string => "Generate test log message",
 		function_name => "fast_log_test",
 		function_args => [],
-	},  
-	
+	},
+
 	{
 		obj_type => "ITEM",
 		name => "timestamp",
@@ -843,8 +1242,8 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Set log options",
-	},        
-        
+	},
+
         {
 		obj_type => "ITEM",
 		name => "levelinfo",
@@ -860,7 +1259,7 @@
 								default_value => "\"ON\"",
 								}, ],
 	},
-          
+
         {
 		obj_type => "ITEM",
 		name => "logid",
@@ -876,7 +1275,7 @@
 								default_value => "\"ON\"",
 								}, ],
 	},
-	 
+
 	{
 		obj_type => "MENU",
 		name => "log",
@@ -900,7 +1299,7 @@
 		menu => "root_show_log",
 		name => "appvisual",
 		help_string => "Display application visualization logging setting",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_log_appvisualize_module_status",
 		function_args => [
@@ -927,13 +1326,13 @@
 								default_value => "0",
 							    },
 				  ],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		menu => "root_show_log",
 		name => "config",
 		help_string => "Show Log configuration",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "fast_log_show",
 		function_args => [],
@@ -943,7 +1342,7 @@
 		menu => "root_show_log",
 		name => "cli",
 		help_string => "Display CLI logs",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "cli_log_show",
 		function_args => [ {
@@ -965,7 +1364,7 @@
 		menu => "root_show_log_restapi",
 		name => "cli",
 		help_string => "Display Restapi CLI logs",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "restapi_cli_log_show",
 		function_args => [ {
@@ -996,7 +1395,7 @@
 		name => "trap",
 		menu => "root_show_log_snmp",
 		help_string => "Show log snmp trap oid settings",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_snmp_trap_oid",
 		function_args => [ {
@@ -1021,7 +1420,7 @@
 		name => "disable",
 		menu => "root_show_log_message",
 		help_string => "Show stopped log message configuration",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "logoff_id_show",
 		function_args => [ {
@@ -1089,7 +1488,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "clear_fastlog_alert",
 		function_args => [],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "buffer",
@@ -1124,7 +1523,7 @@
 		name => "msgid",
 		menu => "root_clear_log_rfc5424",
 		help_string => "Clear rfc5424 log msgid",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "fast_log_rfc5424_clean_all_msgid",
 		function_args => [],
@@ -1143,7 +1542,7 @@
 		name => "trap",
 		menu => "root_clear_log_snmp",
 		help_string => "Clear log snmp trap oid settings",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "clear_snmp_trap_oid",
 		function_args => [
@@ -1160,7 +1559,7 @@
 		name => "attach",
 		menu => "root_clear_log",
 		help_string => "Clear log attach configurations",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "clear_log_attach_vs",
 		function_args => [
@@ -1196,7 +1595,7 @@
 		name => "disable",
 		menu => "root_clear_log_message",
 		help_string => "clear stopped log message configuration",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "logoff_id_clear",
 		function_args => [],
@@ -1206,7 +1605,7 @@
 		menu => "root_log",
 		name => "on",
 		help_string => "Turn logging on",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "fast_log_set_on",
 		function_args => [],
@@ -1216,7 +1615,7 @@
 		menu => "root_log",
 		name => "off",
 		help_string => "Turn logging off",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "fast_log_set_off",
 		function_args => [],
@@ -1235,7 +1634,7 @@
 		menu => "root_log_language",
 		name => "chinese",
 		help_string => "Switch the local log language to Chinese",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "fast_log_local_language_chinese",
 		function_args => [],
@@ -1245,7 +1644,7 @@
 		menu => "root_log_language",
 		name => "english",
 		help_string => "Switch the local log language to English",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "fast_log_local_language_english",
 		function_args => [],
@@ -1264,7 +1663,7 @@
 		menu => "root_log_localhost",
 		name => "on",
 		help_string => "Enable the local log host",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "fast_log_local_host_on",
 		function_args => [ {
@@ -1279,7 +1678,7 @@
 		menu => "root_log_localhost",
 		name => "off",
 		help_string => "Disable the local log host",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "fast_log_local_host_off",
 		function_args => [],
@@ -1298,7 +1697,7 @@
 		name => "disable",
 		menu => "root_log_message",
 		help_string => "stop a log message",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "logoff_id_add",
 		function_args => [ {
@@ -1313,7 +1712,7 @@
 		name => "host",
 		help_string => "Set remote logging host",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
-		user_level => "CLI_LEVEL_CONFIG", 
+		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "fast_log_set_host",
 		function_args => [ {
 									type => "IPADDR",
@@ -1353,7 +1752,7 @@
 		name => "attach",
 		help_string => "Attach virtual service to log host",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
-		user_level => "CLI_LEVEL_CONFIG", 
+		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "attach_vs_to_log_host",
 		function_args => [ {
 									type => "STRING",
@@ -1367,17 +1766,17 @@
 									min => "1",
 									max => "15",
                                 },],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		menu => "root_log",
 		name => "filter",
 		help_string => "Set logging host's filter",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
-		user_level => "CLI_LEVEL_CONFIG", 
+		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "fast_log_set_filter",
-		function_args => 
-				[ 
+		function_args =>
+				[
 					{
 					type => "U32",
 					help_string => "host's id",
@@ -1411,7 +1810,7 @@
 		obj_type => "MENU",
 		name => "snmp",
 		help_string => "Set configuration for snmp",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		parent_menu => "root_log",
 		uniq_name => "root_log_snmp",
@@ -1424,24 +1823,24 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "log_snmp_trap_oid",
-		function_args => [ 
+		function_args => [
 							{
 								type => "U32",
 								help_string => "Log message id",
 								optional => "NO",
-							}, 
+							},
 							{
 								type => "U16",
 								help_string => "Log trap oid",
 								optional => "NO",
-							}, 
+							},
 						],
 	},
 	{
 		obj_type => "MENU",
 		name => "source",
 		help_string => "Change log source",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		parent_menu => "root_log",
 		uniq_name => "root_log_source",
@@ -1604,7 +2003,7 @@
 		name => "host",
 		help_string => "Delete remote log host",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
-		user_level => "CLI_LEVEL_CONFIG", 
+		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "fast_log_del_host",
 		function_args => [ {
 									type => "IPADDR",
@@ -1629,7 +2028,7 @@
 		name => "attach",
 		help_string => "Detach virtual service from log host",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
-		user_level => "CLI_LEVEL_CONFIG", 
+		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "detach_vs_from_log_host",
 		function_args => [ {
 									type => "STRING",
@@ -1658,17 +2057,17 @@
 								optional => "NO",
 							    },
 				  ],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		menu => "root_no_log",
 		name => "filter",
 		help_string => "Delete log host's filter",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
-		user_level => "CLI_LEVEL_CONFIG", 
+		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "fast_log_del_filter",
-		function_args => 
-			[ 
+		function_args =>
+			[
 				{
 				type => "U32",
 				help_string => "host id",
@@ -1679,7 +2078,7 @@
 				help_string => "filter id, (optional, default value is 0, clear all filters on this host",
 				optional => "YES",
 				default_value => "0",
-				}, 
+				},
 			],
 	},
 	{
@@ -1730,7 +2129,7 @@
 		name => "disable",
 		menu => "root_no_log_message",
 		help_string => "remove a log message from the stopped log message list",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "logoff_id_del",
 		function_args => [ {
@@ -1738,7 +2137,7 @@
 					help_string => "log id",
 					optional => "NO",
 					}],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "config",
@@ -1859,7 +2258,7 @@
 		function_name => "ui_clear_config_all",
 		function_args => [],
 	},
-	#Bug 12912, donghy, 20060410 
+	#Bug 12912, donghy, 20060410
 	{
 		obj_type => "ITEM",
 		name => "factorydefault",
@@ -1869,7 +2268,7 @@
 		help_string => " Restore configuration to factory defaults",
 		function_name => "clear_config_fdefault",
 		function_args => [],
-	},	
+	},
 	#Bug 12912, end
 	{
 		obj_type => "ITEM",
@@ -1880,7 +2279,7 @@
 		help_string => "Resst global configuration",
 		function_name => "ui_clear_global",
 		function_args => [],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "file",
@@ -1909,7 +2308,7 @@
                 cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL|CMD_GLOBAL",
                 user_level => "CLI_LEVEL_ENABLE",
                 function_name => "show_compression_stats",
-                function_args => [{					
+                function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name (all - to show statistics for all layer 7 virtual services)",
 					optional => "YES",
@@ -1937,7 +2336,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display llb dd",
 	},
-		
+
 	{
                 obj_type => "ITEM",
                 name => "table",
@@ -1961,7 +2360,7 @@
 			default_value =>"0xFFFFFFFF"
 		},
 		],
-        },	
+        },
 		{
 			obj_type => "ITEM",
 			name => "static",
@@ -1972,7 +2371,7 @@
 			function_name => "show_llb_dd_static_kern",
 			function_args => [],
 
-        },	
+        },
 	{
 		obj_type => "MENU",
 		name => "dd",
@@ -1991,7 +2390,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "clear_llb_dd_static_data_kern",
 		function_args => [],
-	},	
+	},
 		{
                 obj_type => "ITEM",
                 name => "table",
@@ -2001,9 +2400,9 @@
                 user_level => "CLI_LEVEL_CONFIG",
                 function_name => "clear_llb_dd_table_kern",
 		function_args => [],
-        },	
+        },
+
 
-        
 
 	{
 		obj_type => "MENU",
@@ -2080,7 +2479,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "clear_stat_nat",
 		function_args => [],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "pptp",
@@ -2090,8 +2489,8 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "clear_stat_pptp",
 		function_args => [],
-	},	
-	{ 
+	},
+	{
 		obj_type => "ITEM",
 		name => "eroute",
 		menu => "root_show_statistics",
@@ -2152,7 +2551,7 @@
 		function_args => [{
 				  type => "IPADDR",
 				  help_string => "Please input the ip address you want to filtrate in the route entry.If you input \\\"::\\\" or \\\"0.0.0.0\\\", it will display all IP Flow route",
-				  optional => "NO", 
+				  optional => "NO",
 				  },],
 	},
 	{
@@ -2166,7 +2565,7 @@
 		function_args => [
 				  {type => "IPADDR",
 				  help_string => "Please input the ip address you want to filtrate in the route entry.If you input \\\"::\\\" or \\\"0.0.0.0\\\", it will display all RTS route",
-				  optional => "NO", 
+				  optional => "NO",
 				  },],
 	},
 	{
@@ -2179,7 +2578,7 @@
 		function_name => "show_nat_stats",
 		function_args => [],
 	},
-	
+
 # Bug 17465, luozy, 20071022
 	{
 		obj_type => "MENU",
@@ -2202,7 +2601,7 @@
 					type => "IPADDR",
 					help_string => "Source IP",
 					optional => "NO",
-				}, 
+				},
 			        {
 					type => "U16",
 					help_string => "Source port(for webwall, echorequest/echoreply: 9/1(icmp), 129/130(icmpv6))",
@@ -2212,7 +2611,7 @@
 					type => "IPADDR",
 					help_string => "Destination IP",
 					optional => "NO",
-				}, 
+				},
 			        {
 					type => "U16",
 					help_string => "Destination port",
@@ -2234,7 +2633,7 @@
 					help_string => "Action Table, 1: Permit Table 2: Deny Table",
 					optional => "YES",
 					default_value => "1",
-				},				
+				},
 				],
 	},
 # Bug 17465, end
@@ -2271,7 +2670,7 @@
 		obj_type => "MENU",
 		name => "passive",
 		parent_menu => "root_health",
-		uniq_name => "root_health_passive",				   
+		uniq_name => "root_health_passive",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Configure the passive health check function",
@@ -2308,30 +2707,30 @@
 									type => "STRING",
 									help_string => "Template name (a string of 1 to 128 bytes)",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "STRING",
 									help_string => "Abnormal HTTP response code (multiple values separated by ; are supported)",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "U32",
 									help_string => "HTTP response timeout in seconds (value range: 1-60; default = 10)",
 									optional => "YES",
 									default_value => "10",
-								}, 								
+								},
 								{
 									type => "U32",
 									help_string => "Statistical period in seconds (value range: 1-60; default = 10)",
 									optional => "YES",
 									default_value => "10",
-								}, 
+								},
 								{
 									type => "U32",
 									help_string => "HTTP abnormal response count threshold (value range: 1-100000; default = 10)",
 									optional => "YES",
 									default_value => "10",
-								}, 
+								},
 								{
 									type => "STRING",
 									help_string => "URL list name",
@@ -2344,7 +2743,7 @@
 		obj_type => "MENU",
 		name => "urllist",
 		parent_menu => "root_health_passive",
-		uniq_name => "root_health_passive_urlist",				   
+		uniq_name => "root_health_passive_urlist",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Create URL list for passive health check",
@@ -2375,7 +2774,7 @@
 									type => "STRING",
 									help_string => "Name of an existing URL list",
 									optional => "NO",
-								}, 	
+								},
 								{
 									type => "STRING",
 									help_string => "URL to be added to the URL list (a string of 1 to 128 bytes)",
@@ -2390,24 +2789,24 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "health_passive_tcp_template",
-		function_args => [								
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Template name (a string of 1 to 128 bytes)",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "U32",
 									help_string => "Statistical period in seconds (value range: 1-60; default = 10)",
 									optional => "YES",
 									default_value => "10",
-								},  
+								},
 								{
 									type => "U32",
 									help_string => "RESET count threshold (value range: 0-100000; default = 10)",
 									optional => "YES",
 									default_value => "10",
-								},  
+								},
 								{
 									type => "U32",
 									help_string => "Zero window ratio threshold in percentage (value range: 0-100; default = 40)",
@@ -2420,7 +2819,7 @@
 		obj_type => "MENU",
 		name => "apply",
 		parent_menu => "root_health_passive",
-		uniq_name => "root_health_passive_apply",				   
+		uniq_name => "root_health_passive_apply",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Apply the passive health check template",
@@ -2429,7 +2828,7 @@
 		obj_type => "MENU",
 		name => "real",
 		parent_menu => "root_health_passive_apply",
-		uniq_name => "root_health_passive_apply_real",				   
+		uniq_name => "root_health_passive_apply_real",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Apply the passive health check template to a real service",
@@ -2441,12 +2840,12 @@
 		help_string => "Apply an HTTP passive health check template to the real service",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "health_passive_http_template_apply_real",		
+		function_name => "health_passive_http_template_apply_real",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing real service",
 									optional => "NO",
-								}, 	
+								},
 								{
 									type => "STRING",
 									help_string => "Name of an existing HTTP passive health check template",
@@ -2460,12 +2859,12 @@
 		help_string => "Apply a TCP passive health check template to the real service",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "health_passive_tcp_template_apply_real",		
+		function_name => "health_passive_tcp_template_apply_real",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing real service",
 									optional => "NO",
-								}, 	
+								},
 								{
 									type => "STRING",
 									help_string => "Name of an existing TCP passive health check template",
@@ -2509,13 +2908,13 @@
 									type => "U32",
 									help_string => "server timeout (seconds, optional, 1-1000000, default = 5)",
 									optional => "YES",
-									
+
 									# Bug: 9458
 									# Reviser: Wei Wang
 									# Change the default value from 2 to 5
 									# Date: 2004/12/15
 									default_value => "5",
-								}, 
+								},
 								{
 									type => "STRING",
 									help_string => "Real service name or additional health check name or null for the global",
@@ -2552,7 +2951,7 @@
 		obj_type => "MENU",
 		name => "import",
 		parent_menu => "root_health",
-		uniq_name => "root_health_import",				   
+		uniq_name => "root_health_import",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Import request/response files from remote url",
@@ -2602,7 +3001,7 @@
 		obj_type => "MENU",
 		name => "load",
 		parent_menu => "root_health",
-		uniq_name => "root_health_load",				   
+		uniq_name => "root_health_load",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Load imported request/response files into memory",
@@ -2660,7 +3059,7 @@
 									help_string => "Response string, with a length of 1 to 895 characters. Multiple strings should be separated by semicolons (;).\\n By executing this command, user can customize the response of the health check of HTTP, HTTPS, HTTP/2, HTTPS/2, DNS, POP3, SMTP and UDP types.\\nThe default response string is \\\"200 OK\\\".",
 									# end of bug 11129
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "STRING",
 									help_string => "The relation between multiple response strings should be \\\"and\\\" or \\\"or\\\". The default relation is \\\"and\\\".",
@@ -2669,20 +3068,20 @@
 								},
 						],
 	},
-	{ 
-		obj_type => "ITEM", 
-		name => "earlywarning", 
-		menu => "root_health", 
-		help_string => "Set threshold of health check response time", 
+	{
+		obj_type => "ITEM",
+		name => "earlywarning",
+		menu => "root_health",
+		help_string => "Set threshold of health check response time",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "hc_set_threshold", 
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "hc_set_threshold",
 		function_args => [{
 					type => "U32",
 					help_string => "Set SLB threshold of health check response time in milliseconds,\\nthe range is 0-60000, when 0 is specified, health earlywarning will be closed.",
-					optional => "NO",									
-				},], 
-	}, 
+					optional => "NO",
+				},],
+	},
 	{
 		obj_type => "MENU",
 		name => "action",
@@ -2719,14 +3118,14 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 	},
-	{ 
-		obj_type => "ITEM", 
-		name => "disable", 
-		menu => "root_health_action", 
-		help_string => "Disable real service when its health status is down", 
+	{
+		obj_type => "ITEM",
+		name => "disable",
+		menu => "root_health_action",
+		help_string => "Disable real service when its health status is down",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "health_action_disable", 
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "health_action_disable",
 		function_args => [{
 								type => "U16",
 								help_string => "The way how to disable real service (0: normally disable; 1: forcibly disable; 2: reset connection. Default is 0)",
@@ -2741,31 +3140,31 @@
 								optional => "YES",
 								default_value => "\"\"",
 						  },
-				], 
+				],
 	},
-	{ 
-		obj_type => "ITEM", 
-		name => "disable", 
-		menu => "root_no_health_action", 
-		help_string => "Remove \\\"health action disable\\\" configuration of a real services", 
+	{
+		obj_type => "ITEM",
+		name => "disable",
+		menu => "root_no_health_action",
+		help_string => "Remove \\\"health action disable\\\" configuration of a real services",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "no_health_action_disable", 
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "no_health_action_disable",
 		function_args => [{
 							type => "STRING",
 							help_string => "Real service name",
 							optional => "NO",
-						 },], 
+						 },],
 	},
-	{ 
-		obj_type => "ITEM", 
-		name => "disable", 
-		menu => "root_clear_health_action", 
-		help_string => "Clear \\\"health action disable\\\" configurations of all real services", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "clear_health_action_disable", 
-		function_args => [], 
+	{
+		obj_type => "ITEM",
+		name => "disable",
+		menu => "root_clear_health_action",
+		help_string => "Clear \\\"health action disable\\\" configurations of all real services",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "clear_health_action_disable",
+		function_args => [],
 	},
 	{
 		obj_type => "ITEM",
@@ -2780,7 +3179,7 @@
 								help_string => "Real service name or null for all real services",
 								optional => "YES",
 								default_value => "\"\"",
-						 },], 
+						 },],
 	},
 	{
 		obj_type => "ITEM",
@@ -2805,14 +3204,14 @@
 									help_string => "Response table index",
 									optional => "NO",
 								},],
-#end of bug 9585,9614 
-						
+#end of bug 9585,9614
+
 	},
 	{
 		obj_type => "MENU",
 		name => "proxyip",
 		parent_menu => "root_health",
-		uniq_name => "root_health_proxyip",	
+		uniq_name => "root_health_proxyip",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Set health proxyip configurations",
@@ -2894,7 +3293,7 @@
 	                            help_string => "End port number (3000 to 60000, default: 5000)",
 	                            optional => "YES",
 	                            default_value => "5000",
-                          },],			
+                          },],
 	},
 	{
 		obj_type => "ITEM",
@@ -2904,7 +3303,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "hc_proxyip_disable",
-		function_args => [],			
+		function_args => [],
 	},
 	{
 		obj_type => "ITEM",
@@ -2943,7 +3342,7 @@
 		obj_type => "MENU",
 		name => "connclose",
 		parent_menu => "root_health",
-		uniq_name => "root_health_connclose",	
+		uniq_name => "root_health_connclose",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Set health check connection close mode",
@@ -2957,13 +3356,13 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "health_conn_finish_enable_rst",
 		function_args => [
-			{		
+			{
 				type => "STRING",
 				help_string => "Real service name (\\\"all\\\" for all real services as default)",
 				optional => "YES",
-				default_value => "\"all\"", 
+				default_value => "\"all\"",
 			},
-		],			
+		],
 	},
 	{
 		obj_type => "ITEM",
@@ -2974,13 +3373,13 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "health_conn_finish_disable_rst",
 		function_args => [
-			{		
+			{
 				type => "STRING",
 				help_string => "Real service name (\\\"all\\\" for all real services as default)",
 				optional => "YES",
-				default_value => "\"all\"", 
+				default_value => "\"all\"",
 			},
-		],			
+		],
 	},
 	{
 		obj_type => "ITEM",
@@ -2990,7 +3389,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "hc_set_db_info",
-		function_args => [ 
+		function_args => [
 							{		type => "STRING",
 									help_string => "Real service name or additional health check name or group health check name",
 									optional => "NO",
@@ -3010,29 +3409,29 @@
 									help_string => "Password",
 									optional => "NO",
 							},
-							{		
+							{
 									type => "STRING",
 									help_string => "sql statement for oracle hc",
 									optional => "YES",
-									default_value => "\"\"", 
+									default_value => "\"\"",
 							},
-							{		
+							{
 									type => "STRING",
 									help_string => "expect result for oracle hc",
 									optional => "YES",
-									default_value => "\"\"", 
+									default_value => "\"\"",
 							},
-							{		
+							{
 									type => "U32",
 									help_string => "rows",
 									optional => "YES",
-									default_value => "1", 
+									default_value => "1",
 							},
-							{		
+							{
 									type => "U32",
 									help_string => "cols",
 									optional => "YES",
-									default_value => "1", 
+									default_value => "1",
 							},
 		],
 	},
@@ -3139,7 +3538,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Revert request to default",
 		function_name => "no_hcaddreq",
-		function_args => [ { 
+		function_args => [ {
 									type => "U16",
 									help_string => "Request table row index to clear",
 									optional => "NO",
@@ -3172,7 +3571,7 @@
 									help_string => "Real server Name or addtional healtch check name",
 									optional => "NO",
 							},],
-#end of bug 9585,9614  
+#end of bug 9585,9614
 	},
 	{
 		obj_type => "ITEM",
@@ -3193,11 +3592,11 @@
 		obj_type => "MENU",
 		name => "import",
 		parent_menu => "root_no_health",
-		uniq_name => "root_no_health_import",				   
+		uniq_name => "root_no_health_import",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove imported request/response files",
-	}, 
+	},
 #request
 	{
 		obj_type => "ITEM",
@@ -3207,7 +3606,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove imported request file",
 		function_name => "hc_no_import_req",
-		function_args => [ { 
+		function_args => [ {
 									type => "U16",
 									help_string => "Request table index",
 									optional => "NO",
@@ -3222,7 +3621,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove imported response file",
 		function_name => "hc_no_import_resp",
-		function_args => [ { 
+		function_args => [ {
 									type => "U16",
 									help_string => "Response table index",
 									optional => "NO",
@@ -3284,7 +3683,7 @@
 		obj_type => "MENU",
 		name => "import",
 		parent_menu => "root_clear_health",
-		uniq_name => "root_clear_health_import",				   
+		uniq_name => "root_clear_health_import",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove all request/response files",
@@ -3298,7 +3697,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "hc_clear_import_req",
 		function_args => [],
-	}, 
+	},
 
 	#response
 	{
@@ -3310,7 +3709,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "hc_clear_import_resp",
 		function_args => [],
-	}, 
+	},
 	#bug 18326, end
 	{
 		obj_type => "ITEM",
@@ -3401,10 +3800,10 @@
 		function_name => "show_health_conn_finish_with_rst",
 		function_args => [
 			{
-				type => "STRING", 
-				help_string => "Real service name (\\\"all\\\" for all real services as default)", 
-				optional => "YES", 
-				default_value => "\"all\"", 
+				type => "STRING",
+				help_string => "Real service name (\\\"all\\\" for all real services as default)",
+				optional => "YES",
+				default_value => "\"all\"",
 			},
 		],
 	},
@@ -3419,11 +3818,11 @@
 		function_name => "show_health_request",
 		function_args => [ {
 				type => "U16",
-				help_string => "The nth health request, legal range is 0~999, (Optional, no argument or 65535 input show all table)", 
-				optional => "YES", 
+				help_string => "The nth health request, legal range is 0~999, (Optional, no argument or 65535 input show all table)",
+				optional => "YES",
 				default_value => "65535",
 			},],
-		# bug 13608, end 
+		# bug 13608, end
 	},
 	{
 		obj_type => "ITEM",
@@ -3434,11 +3833,11 @@
 		menu => "root_show_health",
 		# bug 13608, zhangzh, 20060622
 		function_name => "show_health_response",
-		function_args => [ { 
+		function_args => [ {
 				type => "U16",
 				help_string => "The nth health response, legal range is 0~999, (Optional, no argument or 65535 input show all table)",
 				optional => "YES",
-				default_value => "65535", 
+				default_value => "65535",
 			},],
 		# bug 13608, end
 	},
@@ -3447,7 +3846,7 @@
 		obj_type => "MENU",
 		name => "import",
 		parent_menu => "root_show_health",
-		uniq_name => "root_show_health_import",				   
+		uniq_name => "root_show_health_import",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show imported request/response files",
@@ -3461,16 +3860,16 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show imported request file",
 		function_name => "hc_show_import_request",
-		function_args => [ { 
+		function_args => [ {
 								type => "U16",
 								help_string => "Request table index",
 								optional => "NO",
-							}, 
+							},
 							{
-								type => "STRING", 
-								help_string => "Output mode (text/binary, optional, default is binary)", 
-								optional => "YES", 
-								default_value => "\"binary\"", 
+								type => "STRING",
+								help_string => "Output mode (text/binary, optional, default is binary)",
+								optional => "YES",
+								default_value => "\"binary\"",
 							}, ],
 	},
 	#response
@@ -3482,16 +3881,16 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show imported response file",
 		function_name => "hc_show_import_response",
-		function_args => [ { 
+		function_args => [ {
 								type => "U16",
 								help_string => "Response table index",
 								optional => "NO",
 							},
 							{
-								type => "STRING", 
-								help_string => "Output mode (text/binary, optional, default is binary)", 
-								optional => "YES", 
-								default_value => "\"binary\"", 
+								type => "STRING",
+								help_string => "Output mode (text/binary, optional, default is binary)",
+								optional => "YES",
+								default_value => "\"binary\"",
 							}, ],
 	},
 	#bug 18326, end
@@ -3505,9 +3904,9 @@
 		help_string => "Show all real servers' health",
 		function_name => "show_health_server",
 		function_args => [ {
-				type => "STRING", 
-				help_string => "Real server's name (optional)", 
-				optional => "YES", 
+				type => "STRING",
+				help_string => "Real server's name (optional)",
+				optional => "YES",
 				default_value => "\"\"",
 			},
 		],
@@ -3530,9 +3929,9 @@
 		help_string => "Display the health check status of all real services in SLB groups",
 		function_name => "show_health_group",
 		function_args => [ {
-				type => "STRING", 
-				help_string => "Group name", 
-				optional => "NO", 
+				type => "STRING",
+				help_string => "Group name",
+				optional => "NO",
 			},
 		],
 	},
@@ -4027,7 +4426,7 @@
 							 type => "STRING",
 							 help_string => "Virtual Service name (use \\\"global\\\" for global filter, default \\\"all\\\")",
 							 optional => "YES",
-							 default_value => "\"\"",	
+							 default_value => "\"\"",
 							},],
 	},
 	{
@@ -4097,7 +4496,7 @@
 							 help_string => "Virtual Service name (use \\\"global\\\" for global filter, default \\\"all\\\")",
 							 optional => "YES",
 							 default_value => "\"all\"",
-						     }, ],	
+						     }, ],
 	},
 	{
 		obj_type => "MENU",
@@ -4121,7 +4520,7 @@
 							 help_string => "Virtual Service name (use \\\"global\\\" for global filter, default \\\"all\\\")",
 							 optional => "YES",
 							 default_value => "\"all\"",
-						     }, ],	
+						     }, ],
 	},
 	{
 		obj_type => "ITEM",
@@ -4136,7 +4535,7 @@
 							 help_string => "Virtual Service name (use \\\"global\\\" for global filter, default \\\"all\\\")",
 							 optional => "YES",
 							 default_value => "\"all\"",
-						     }, ],	
+						     }, ],
 	},
 	{
 		obj_type => "ITEM",
@@ -4151,7 +4550,7 @@
 							 help_string => "Virtual Service name (use \\\"global\\\" for global filter, default \\\"all\\\")",
 							 optional => "YES",
 							 default_value => "\"all\"",
-						     }, ],	
+						     }, ],
 	},
 	{
 		obj_type => "MENU",
@@ -4166,7 +4565,7 @@
 		obj_type => "MENU",
 		name => "mode",
 		parent_menu => "root_filter",
-		uniq_name => "root_filter_mode",				   
+		uniq_name => "root_filter_mode",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Define filter mode",
@@ -4245,7 +4644,7 @@
 		obj_type => "MENU",
 		name => "url",
 		parent_menu => "root_filter",
-		uniq_name => "root_filter_url",				   
+		uniq_name => "root_filter_url",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Define deny character range or keyword ",
@@ -4254,7 +4653,7 @@
 		obj_type => "MENU",
 		name => "keyword",
 		parent_menu => "root_filter_url",
-		uniq_name => "root_filter_url_keyword",				   
+		uniq_name => "root_filter_url_keyword",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Define filter keyword",
@@ -4323,7 +4722,7 @@
 		obj_type => "MENU",
 		name => "default",
 		parent_menu => "root_filter_url_keyword",
-		uniq_name => "root_filter_url_keyword_default",				   
+		uniq_name => "root_filter_url_keyword_default",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Define default for url keyword filter",
@@ -4362,7 +4761,7 @@
 		obj_type => "MENU",
 		name => "type",
 		parent_menu => "root_filter",
-		uniq_name => "root_filter_type",				   
+		uniq_name => "root_filter_type",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Define filter type ",
@@ -4460,7 +4859,7 @@
 		obj_type => "MENU",
 		name => "url",
 		parent_menu => "root_no_filter",
-		uniq_name => "root_no_filter_url",				   
+		uniq_name => "root_no_filter_url",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove deny character range or keyword ",
@@ -4469,7 +4868,7 @@
 		obj_type => "MENU",
 		name => "type",
 		parent_menu => "root_no_filter",
-		uniq_name => "root_no_filter_type",				   
+		uniq_name => "root_no_filter_type",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove filter type ",
@@ -4518,7 +4917,7 @@
 		obj_type => "MENU",
 		name => "keyword",
 		parent_menu => "root_no_filter_url",
-		uniq_name => "root_no_filter_url_keyword",				   
+		uniq_name => "root_no_filter_url_keyword",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove filter url keyword",
@@ -4592,7 +4991,7 @@
 		obj_type => "MENU",
 		name => "length",
 		parent_menu => "root_filter",
-		uniq_name => "root_filter_length",				   
+		uniq_name => "root_filter_length",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Define length fields",
@@ -5122,11 +5521,11 @@
 					help_string => "Deny source mask",
 					optional => "NO",
 				},
-				{					
+				{
 					type => "U16",
 					# Bug 13638, chenyl, 20060915
 					help_string => "Deny source port (0 means that all ports are denied)",
-					# Bug 13638, end 
+					# Bug 13638, end
 					optional => "NO",
 				},
 				{
@@ -6371,7 +6770,7 @@
 		menu => "root_show",
 		help_string => "Display WebWall, NIC information",
 		function_name => "show_if",
-		function_args => [ { 
+		function_args => [ {
 									type => "STRING",
 									help_string => "Interface name",
 									optional => "YES",
@@ -6606,12 +7005,12 @@
 									type => "IPADDR",
 									help_string => "System IP",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "IPMASK",
 									help_string => "Netmask for IPv4(e.g. 255.255.255.0), or prefix length for IPv6, in range [1,128]",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "STRING",
 									help_string => "Overlap option(overlap),configue overlaped ip address used by NUMA",
@@ -6654,7 +7053,7 @@
 				   },
 					{
 						type => "U16",
-						help_string => "4(IPv4) or 6(IPv6), default is 4", 
+						help_string => "4(IPv4) or 6(IPv6), default is 4",
 						optional => "YES",
 						default_value => "4",
 					},
@@ -6760,7 +7159,7 @@
 									help_string => "MAC address",
 									optional => "NO",
 								}, ],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "mac",
@@ -6785,7 +7184,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "clear_mac",
 		function_args => [],
-	},		
+	},
 	{
 		obj_type => "ITEM",
 		name => "management",
@@ -6804,7 +7203,7 @@
 									help_string => "Default gateway IP",
 									optional => "NO",
 								}, ],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "management",
@@ -6820,7 +7219,7 @@
 								},
 							{
 								type => "U16",
-								help_string => "4(IPv4) or 6(IPv6), default is 4", 
+								help_string => "4(IPv4) or 6(IPv6), default is 4",
 								optional => "YES",
 								default_value => "4",
 							},],
@@ -6853,7 +7252,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "interface_bandwidth_timer",
-		function_args => [ 
+		function_args => [
 							{
 								type => "U32",
 								help_string => "bandwidth timer (5 ~ 300) seconds",
@@ -6948,7 +7347,7 @@
                                type => "STRING",
                                help_string => "MAC address. (xx:xx:xx:xx:xx:xx)",
                                optional => "NO",
-                            },],   
+                            },],
 	},
 	{
         obj_type => "ITEM",
@@ -7091,7 +7490,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "ui_clear_crontab",
 		function_args => [],
-	},	
+	},
 	{
 		obj_type => "MENU",
 		name => "ipgroup",
@@ -7236,7 +7635,7 @@
 		parent_menu => "root_no",
 		uniq_name => "root_no_ipgroup",
 		help_string => "Remove ip ipgroup related configurations",
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "name",
@@ -7336,7 +7735,7 @@
 		parent_menu => "root_no",
 		uniq_name => "root_no_ipregion",
 		help_string => "Remove ip region related configurations",
-	},	
+	},
 	{
 		obj_type => "MENU",
 		name => "table",
@@ -7347,7 +7746,7 @@
 		help_string => "Configure ip region table related configurations",
 	},
 
-	{     
+	{
 		obj_type => "MENU",
 		name => "geoip",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
@@ -7355,8 +7754,8 @@
 		parent_menu => "root_ipregion",
 		uniq_name => "root_ipregion_geoip",
 		help_string => "Configure geoip file related configurations",
-	},  
-	{       
+	},
+	{
 		obj_type => "ITEM",
 		name => "import",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
@@ -7365,12 +7764,12 @@
 		menu => "root_ipregion_geoip",
 		function_name => "ipregion_geoip_import",
 		function_args => [
-		{       
+		{
 				type => "STRING",
 				help_string => "The region level of the geoip. The value should be country or state",
 				optional => "NO",
 		},
-		{       
+		{
 				type => "STRING",
 				help_string => "Url",
 				optional => "NO",
@@ -7441,13 +7840,13 @@
 							type => "STRING",
 							help_string => "ip region name",
 							optional => "NO",
-						},	
+						},
 						{
 							type => "STRING",
 							help_string => "FTP URL",
 							optional => "NO",
 						},],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "import",
@@ -7461,13 +7860,13 @@
 							type => "STRING",
 							help_string => "ip region name",
 							optional => "NO",
-						},	
+						},
 						{
 							type => "STRING",
 							help_string => "HTTP/FTP URL",
 							optional => "NO",
 						},],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "route",
@@ -7499,20 +7898,20 @@
 							optional => "YES",
 							default_value => "1",
 						},
-						 {     
+						 {
 							 type => "U16",
 							 help_string => "Start port number (0 to 65535, default: 0)",
 							 optional => "YES",
 							 default_value => "0",
-						 },    
-						 {     
+						 },
+						 {
 							 type => "U16",
 							 help_string => "End port number (1 to 65535, default: 65535)",
 							 optional => "YES",
 							 default_value => "65535",
 
 						},],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "name",
@@ -7522,7 +7921,7 @@
 		menu => "root_show_ipregion",
 		function_name => "show_ipregion_name",
 		function_args => [],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "match",
@@ -7536,7 +7935,7 @@
 					help_string => "address to match",
 					optional => "NO",
 				},],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "geoip",
@@ -7561,7 +7960,7 @@
 							help_string => "ip region name",
 							optional => "NO",
 						},],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "route",
@@ -7586,7 +7985,7 @@
 							help_string => "ip region name",
 							optional => "NO",
 						},],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "route",
@@ -7601,7 +8000,7 @@
 							help_string => "ip region name",
 							optional => "NO",
 						},],
-	},		
+	},
 	{
 		obj_type => "ITEM",
 		name => "table",
@@ -7616,7 +8015,7 @@
 							optional => "YES",
 							default_value => "\"\"",
 							},],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "route",
@@ -7626,7 +8025,7 @@
 		menu => "root_clear_ipregion",
 		function_name => "clear_ipregion_route",
 		function_args => [],
-	},		
+	},
 	{
 		obj_type => "ITEM",
 		name => "mnet",
@@ -7692,7 +8091,7 @@
 						type => "STRING",
 						help_string => "Host name",
 						optional => "NO",
-				    
+
 				    },
 
 				    {
@@ -7723,7 +8122,7 @@
 		help_string => "Clear one node's hostname in a real cluster",
 		function_name => "clear_host_name",
 		function_args => [],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "health",
@@ -7814,7 +8213,7 @@
 		function_name => "clear_slb_health_kern",
 		function_args => [],
 	},
-	
+
 	{
 		obj_type => "ITEM",
 		name => "health",
@@ -8052,7 +8451,7 @@
 		obj_type => "MENU",
 		name => "l2vs",
 		parent_menu => "root_slb",
-		uniq_name => "root_slb_l2vs",				   
+		uniq_name => "root_slb_l2vs",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "L2SLB VS configuration",
@@ -8082,7 +8481,7 @@
 		obj_type => "MENU",
 		name => "l2group",
 		parent_menu => "root_slb",
-		uniq_name => "root_slb_l2group",				   
+		uniq_name => "root_slb_l2group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "L2SLB group configuration",
@@ -8112,7 +8511,7 @@
 		obj_type => "MENU",
 		name => "l2vs",
 		parent_menu => "root_no_slb",
-		uniq_name => "root_no_slb_l2vs",				   
+		uniq_name => "root_no_slb_l2vs",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove L2SLB VS configuration",
@@ -8142,7 +8541,7 @@
 		obj_type => "MENU",
 		name => "l2group",
 		parent_menu => "root_no_slb",
-		uniq_name => "root_no_slb_l2group",				   
+		uniq_name => "root_no_slb_l2group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove L2SLB group configuration",
@@ -8172,7 +8571,7 @@
 		obj_type => "MENU",
 		name => "l2vs",
 		parent_menu => "root_clear_slb",
-		uniq_name => "root_clear_slb_l2vs",				   
+		uniq_name => "root_clear_slb_l2vs",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear L2SLB VS configuration",
@@ -8197,7 +8596,7 @@
 		obj_type => "MENU",
 		name => "l2group",
 		parent_menu => "root_clear_slb",
-		uniq_name => "root_clear_slb_l2group",				   
+		uniq_name => "root_clear_slb_l2group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear L2SLB group configuration",
@@ -8222,7 +8621,7 @@
 		obj_type => "MENU",
 		name => "l2vs",
 		parent_menu => "root_show_slb",
-		uniq_name => "root_show_slb_l2vs",				   
+		uniq_name => "root_show_slb_l2vs",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show L2SLB VS configuration",
@@ -8241,7 +8640,7 @@
 		obj_type => "MENU",
 		name => "l2group",
 		parent_menu => "root_show_slb",
-		uniq_name => "root_show_slb_l2group",				   
+		uniq_name => "root_show_slb_l2group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show L2SLB gruop configuration",
@@ -8260,7 +8659,7 @@
 		obj_type => "MENU",
 		name => "real",
 		parent_menu => "root_slb",
-		uniq_name => "root_slb_real",				   
+		uniq_name => "root_slb_real",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Define SLB real service",
@@ -8269,7 +8668,7 @@
 		obj_type => "MENU",
 		name => "application",
 		parent_menu => "root_slb_real",
-		uniq_name => "root_slb_real_application",				   
+		uniq_name => "root_slb_real_application",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Define SLB real application settings",
@@ -8402,7 +8801,7 @@
 									help_string => "Check type (tcp/icmp/script-tcp/snmp/none) performed to determine real service\\nviability (optional, default is tcp)\\nOnly icmp or none can be used if port is 0",
 									optional => "YES",
 									default_value => "\"tcp\"",
-								}, 
+								},
 								{
 									type => "U32",
 									# bug 12264, zhangzh, 20060111
@@ -8455,7 +8854,7 @@
 									help_string => "Check type (icmp/tcp/http/http2/script-tcp/snmp/none) performed to determine real service\\nviability (optional, default is tcp)\\nOnly icmp or none can be used if port is 0",
 									optional => "YES",
 									default_value => "\"tcp\"",
-								}, 
+								},
 								{
 									type => "U32",
 									# bug 12264, zhangzh, 20060111
@@ -8520,7 +8919,7 @@
 			default_value => "3",
 		},
 		{
-			type => "U32",   
+			type => "U32",
 			help_string => "Real service session timeout (seconds, optional, default = 60)",
 			optional => "YES",
 			default_value => "60",
@@ -8561,7 +8960,7 @@
 			help_string => "Check type (radius-acct/icmp/udp/script-udp/snmp/none) performed to determine real service\\nviability (optional, default is radius-acct)\\nOnly icmp or none can be used if port is 0",
 			optional => "YES",
 			default_value => "\"radius-acct\"",
-		}, 
+		},
 		{
 			type => "U32",
 			help_string => "Consecutive healthcheck successes before this real service\\nmarked up (optional, default = 3)",
@@ -8575,7 +8974,7 @@
 			default_value => "3",
 		},
 		{
-			type => "U32",   
+			type => "U32",
 			help_string => "Real service session timeout (seconds, optional, default = 60)",
 			optional => "YES",
 			default_value => "60",
@@ -8599,7 +8998,7 @@
 		obj_type => "ITEM",
 		name => "radacct",
 		menu => "root_no_slb_real",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL | CMD_KERN_API",    
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove a RADIUS Accounting real service",
 		function_name => "no_slb_real_radacct_kern",
@@ -8638,7 +9037,7 @@
 									optional => "YES",
 									default_value => "\"\"",
 								}, ],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "radauth",
@@ -8756,7 +9155,7 @@
 									help_string => "Check type (icmp/tcp/script-tcp/ftp/snmp/none) performed to determine real service viability\\n(optional, default is tcp)",
 									optional => "YES",
 									default_value => "\"tcp\"",
-								}, 
+								},
 								{
                                     type => "U32",
 				    # bug 12264, zhangzh, 20060111
@@ -8773,7 +9172,7 @@
                                 }, ],
 	},
 	#
-	# ZhangGaofeng, Fri Apr 30 17:37:31 CST 2004, bug: 8050 
+	# ZhangGaofeng, Fri Apr 30 17:37:31 CST 2004, bug: 8050
 	#
 	{
 		obj_type => "ITEM",
@@ -8811,7 +9210,7 @@
 									help_string => "Check type (icmp/udp/dns/script-udp/snmp/none) performed to determine real service viability\\n(optional, default is dns)\\nOnly icmp or none can be used if port is 0",
 									optional => "YES",
 									default_value => "\"dns\"",
-								}, 
+								},
 								{
                                     type => "U32",
 				    # bug 12264, zhangzh, 20060111
@@ -8827,11 +9226,11 @@
 				    # bug 12264, end
                                 },
 								{
-									type => "U32",   
+									type => "U32",
 									help_string => "Real service session timeout (seconds, optional, default = 60)",
 									optional => "YES",
 									default_value => "60",
-								}, ],   
+								}, ],
 	},
 	# end of bug 8050
 
@@ -8866,7 +9265,7 @@
 								},
 								{
 									type => "STRING",
-									# bug 10530, zhangwy, 2005/07/08									
+									# bug 10530, zhangwy, 2005/07/08
 									# bug 21001, add "dns" hc type, 2009/01/15
 									help_string => "Check type (icmp/tcp/smtp/http/http2/https2/tcps/snmp/none/script-tcp/rtsp-tcp/sip-tcp/script-tcps/https/ldap/mysql-db/mysql-dbs/mssql-db/mssql-dbs/oracle-db/pop3) performed to determine real service viability\\n(optional, default is tcp)\\nOnly icmp or none can be used if port is 0",
 									optional => "YES",
@@ -8933,7 +9332,7 @@
 				    # bug 12264, end
                                 },
 				{
-					type => "U32",   
+					type => "U32",
 					help_string => "Real service session timeout (seconds, optional, default = 60)",
 					optional => "YES",
 					default_value => "60",
@@ -8974,7 +9373,7 @@
 								},
 								{
 									type => "STRING",
-									# bug 10530, zhangwy, 2005/07/08									
+									# bug 10530, zhangwy, 2005/07/08
 									# bug 21001, add "dns" hc type, 2009/01/15
 									help_string => "Check type (icmp/snmp/none) performed to determine real service\\nviability (optional, default is icmp)",
 									optional => "YES",
@@ -9039,11 +9438,11 @@
 				},
 				# bug 12230, zhangwy, 2006/04/13
 				{
-					type => "U32",   
+					type => "U32",
 					help_string => "Real service UDP session timeout (seconds, optional, default = 60)",
 					optional => "YES",
 					default_value => "60",
-				
+
 				}, ],
 	},
 	{
@@ -9083,7 +9482,7 @@
 									help_string => "Check type (icmp/tcp/tcps/https/https2/script-tcp/script-tcps/snmp/none) performed to determine real service\\nviability (optional, default is tcp)\\nOnly icmp or none can be used if port is 0",
 									optional => "YES",
 									default_value => "\"tcp\"",
-								}, 
+								},
 								{
 									type => "U32",
 									# bug 12264, zhangzh, 20060111
@@ -9135,7 +9534,7 @@
 									help_string => "Check type (icmp/tcp/tcps/none/script-tcp/script-tcps/https/https2/mysql-dbs/mssql-dbs/snmp) performed to determine real service\\nviability (optional, default is tcp)\\nOnly icmp or none can be used if port is 0",
 									optional => "YES",
 									default_value => "\"tcp\"",
-								}, 
+								},
 								{
 									type => "U32",
 									# bug 12264, zhangzh, 20060111
@@ -9188,7 +9587,7 @@
 									help_string => "Check type (icmp/tcp/rtsp-tcp/script-tcp/snmp/none) performed to determine real service\\nviability (optional, default is rtsp-tcp)",
 									optional => "YES",
 									default_value => "\"rtsp-tcp\"",
-								}, 
+								},
 								{
 									type => "U32",
                                     help_string => "Consecutive healthcheck successes before this real service\\nmarked up (optional, default = 3)",
@@ -9202,7 +9601,7 @@
 									default_value => "3",
 								},
 								{
-									type => "U32",   
+									type => "U32",
 									help_string => "Real service UDP connection timeout (seconds, optional, default = 60)",
 									optional => "YES",
 									default_value => "60",
@@ -9235,7 +9634,7 @@
 									type => "STRING",
 									help_string => "Real service name to disable",
 									optional => "NO",
-							}, 
+							},
 							{
 									type => "U16",
 									help_string => "The way how to disable real service (0: normal disable; 1: forcebly disable; 2: reset connection. Default is 0)",
@@ -9254,7 +9653,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Tune SLB real service",
-	},    
+	},
 	{
 		obj_type => "ITEM",
 		name => "keepdip",
@@ -9266,10 +9665,10 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "Real service name",
-				optional => "NO", 
-			},    
-		],    
-	}, 
+				optional => "NO",
+			},
+		],
+	},
 	{
 		obj_type => "ITEM",
 		name => "enable",
@@ -9373,13 +9772,13 @@
 								type => "STRING",
 								help_string => "SLB group name",
 								optional => "NO",
-							}, 
+							},
 							{
 								type => "STRING",
 								help_string => "Proxy protocol version(optional. \\\"v1\\\" and \\\"v2\\\" are supported, default is \\\"v1\\\".)",
 								optional => "YES",
 								default_value => "\"v1\"",
-							}, 
+							},
 						],
 	},
 	{
@@ -9394,7 +9793,7 @@
 								type => "STRING",
 								help_string => "SLB group name",
 								optional => "NO",
-							}, 
+							},
 						],
 	},
 	{
@@ -9420,7 +9819,7 @@
 								help_string => "SLB group name",
 								optional => "YES",
 								default_value => "\"\"",
-							}, 
+							},
 						],
 	},
 	{
@@ -9435,7 +9834,7 @@
 									type => "STRING",
 									help_string => "SLB group name",
 									optional => "NO",
-								}, 
+								},
 		                        {
 									type => "STRING",
 									help_string => "cookie properties for group of method ic, more than\\none properties are separated by ',', e.g: \\\"Expires=1:2:3, Path=/, Domain=./a.com\\\"",
@@ -9454,7 +9853,7 @@
 								type => "STRING",
 								help_string => "SLB group name",
 								optional => "NO",
-							}, 
+							},
 							{
 								type => "U16",
 								help_string => "TCP option kind [31 - 254]",
@@ -9462,14 +9861,14 @@
 								min => "31",
 								max => "254",
 							},
-							{     
+							{
 								type => "U16",
 								help_string => "TCP Option--insert source port (1: Insert source port; 0: Do not insert source port. default=0)",
 								optional => "YES",
 								min => "0",
 								max => "1",
 								default_value => "0",
-							},   
+							},
 						],
 	},
 	{
@@ -9528,13 +9927,13 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "Group name",
-				optional => "NO", 
-			},      
-			{     
+				optional => "NO",
+			},
+			{
 				type => "STRING",
 				help_string => "Domain to be adoptive",
 				optional => "NO",
-			}, ], 
+			}, ],
 	},
 	{
 		obj_type => "ITEM",
@@ -9561,31 +9960,31 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "Group name",
-				optional => "NO", 
-			},    
-			{     
+				optional => "NO",
+			},
+			{
 				type => "U16",
 				help_string => "Minimum port",
-				optional => "NO", 
-			},    
-			{     
+				optional => "NO",
+			},
+			{
 				type => "U16",
 				help_string => "Maximum port",
-				optional => "NO", 
-			},    
-			{     
+				optional => "NO",
+			},
+			{
 				type => "STRING",
 				help_string => "Protocol [all|tcp|udp] (optional, default = all)",
 				optional => "YES",
 				default_value => "\"all\"",
-			},    
-			{     
+			},
+			{
 				type => "STRING",
 				help_string => "Destination port or source port [dst|src] (optional, default = dst)",
 				optional => "YES",
 				default_value => "\"dst\"",
-			}, ], 
-	}, 
+			}, ],
+	},
 	{
 		obj_type => "ITEM",
 		name => "portrange",
@@ -9854,7 +10253,7 @@
 									type => "U32",
 									help_string => "Number of active real services allowed to be used (value ranges from 0 to 65535)",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "U32",
 									help_string => "Minimum number of active real services for determining group/subgroup availability (optional. value ranges from 0 to 65535. default=0)",
@@ -10351,7 +10750,7 @@
 								optional => "NO",
 						   },],
 	},
-	
+
 	{
 		obj_type => "MENU",
 		name => "http2",
@@ -10458,7 +10857,7 @@
 		function_name => "clear_slb_group_http2_settings_kern",
 		function_args => [ ],
 	},
-	
+
 	#http2 end
 	{
 		obj_type => "ITEM",
@@ -10496,7 +10895,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Tune SLB virtual service",
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "description",
@@ -10527,11 +10926,11 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "Virtual service name",
-				optional => "NO", 
-			},    
-		],    
-	}, 
-	{   
+				optional => "NO",
+			},
+		],
+	},
+	{
 		obj_type => "ITEM",
 		name => "ecs",
 		menu => "root_slb_virtual_settings",
@@ -10542,11 +10941,11 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "Virtual service name",
-				optional => "NO", 
-			},    
-		],    
-	}, 
-	{   
+				optional => "NO",
+			},
+		],
+	},
+	{
 		obj_type => "ITEM",
 		name => "interface",
 		menu => "root_slb_virtual_settings",
@@ -10557,16 +10956,16 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "Virtual service name",
-				optional => "NO", 
-			},                  
-			{     
+				optional => "NO",
+			},
+			{
 				type => "STRING",
 				help_string => "Interface name (<system_ifname>|<vlan_ifname>|<bond_ifname>)",
-				optional => "NO", 
-			}, 
-		],                      
-	}, 
-	{   
+				optional => "NO",
+			},
+		],
+	},
+	{
 		obj_type => "ITEM",
 		name => "proxyprotocol",
 		menu => "root_slb_virtual_settings",
@@ -10577,10 +10976,10 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "Virtual service name",
-				optional => "NO", 
-			}, 
-		],                      
-	}, 
+				optional => "NO",
+			},
+		],
+	},
 	{
 		obj_type => "ITEM",
 		name => "proxyprotocol",
@@ -10592,9 +10991,9 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "Virtual service name",
-				optional => "NO", 
+				optional => "NO",
 			},
-		], 
+		],
 	},
 	{
 		obj_type => "ITEM",
@@ -10608,7 +11007,7 @@
                                         type => "STRING",
                                         help_string => "Virtual service name to turn on amplification on",
                                         optional => "NO",
-                                   }, 
+                                   },
 				   {
                                         type => "U16",
                                         help_string => "Virtual service amplifiation factor (default = 0, 0 or 1 = no amplificaton)",
@@ -10707,7 +11106,7 @@
 	{
 		obj_type => "ITEM",
 		name => "radauth",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",    
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		menu => "root_slb_virtual",
 		help_string => "Define SLB RADIUS Authentication virtual service",
@@ -10780,12 +11179,12 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "radauth",   
+		name => "radauth",
 		menu => "root_no_slb_virtual",
 		help_string => "Remove RADIUS Authentication virtual service",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "no_slb_virtual_radauth",      
+		function_name => "no_slb_virtual_radauth",
 		function_args => [ {
 									type => "STRING",
 									help_string => "Virtual service name",
@@ -10794,18 +11193,18 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "radacct",   
+		name => "radacct",
 		menu => "root_no_slb_virtual",
 		help_string => "Remove RADIUS Accounting virtual service",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "no_slb_virtual_radacct",      
+		function_name => "no_slb_virtual_radacct",
 		function_args => [ {
 									type => "STRING",
 									help_string => "Virtual service name",
 									optional => "NO",
 								}, ],
-	},		
+	},
 	{
 		obj_type => "ITEM",
 		name => "radauth",
@@ -10885,7 +11284,7 @@
 									optional => "YES",
 									default_value => "\"\"",
 								}, ],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "radauth",
@@ -10984,7 +11383,7 @@
 									help_string => "mode option(redirect|nat)",
 									optional => "YES",
 									default_value => "\"redirect\"",
-								}, 
+								},
 								{
 									type => "STRING",
 									help_string => "arp|noarp option (optional, default = arp)",
@@ -10998,7 +11397,7 @@
 									default_value => "0",
 								}, ],
 	},
-	
+
 	{
 		obj_type => "ITEM",
 		name => "ftp",
@@ -11106,7 +11505,7 @@
 	{
 		obj_type => "ITEM",
 		name => "tcp",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",    
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		menu => "root_slb_virtual",
 		help_string => "Define SLB TCP virtual service",
@@ -11132,7 +11531,7 @@
 									help_string => "arp|noarp option (optional, default = arp)",
 									optional => "YES",
 									default_value => "\"arp\"",
-								# bug 14012, end 
+								# bug 14012, end
 								},
 								{
 									type => "U32",
@@ -11144,7 +11543,7 @@
 	{
 		obj_type => "ITEM",
 		name => "tcps",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",    
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		menu => "root_slb_virtual",
 		help_string => "Define SLB TCPS virtual service",
@@ -11170,7 +11569,7 @@
 									help_string => "arp|noarp option (optional, default = arp)",
 									optional => "YES",
 									default_value => "\"arp\"",
-								# bug 14012, end 
+								# bug 14012, end
 								},
 								{
 									type => "U32",
@@ -11208,7 +11607,7 @@
 									help_string => "arp|noarp option (optional, default = arp)",
 									optional => "YES",
 									default_value => "\"arp\"",
-								# bug 14012, end 
+								# bug 14012, end
 								},
 								{
 									type => "U32",
@@ -11894,11 +12293,11 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "regex",  
+		name => "regex",
 		help_string => "Define regular expression policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
-		menu => "root_slb_policy",   
+		menu => "root_slb_policy",
 		function_name => "slb_policy_regex_url",
 		function_args => [ {
 								type => "STRING",
@@ -11909,8 +12308,8 @@
 								type => "STRING",
 								help_string => "Virtual service|vlink name",
 								optional => "NO",
-							},    
-							{   
+							},
+							{
 								type => "STRING",
 								help_string => "Group|vlink name",
 								optional => "NO",
@@ -11929,11 +12328,11 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "header",  
+		name => "header",
 		help_string => "Define a header match policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API|CMD_NON_SERIAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		menu => "root_slb_policy",   
+		menu => "root_slb_policy",
 		function_name => "slb_policy_header",
 		function_args => [ {
 								type => "STRING",
@@ -11944,8 +12343,8 @@
 								type => "STRING",
 								help_string => "Virtual service|vlink name",
 								optional => "NO",
-							},    
-							{   
+							},
+							{
 								type => "STRING",
 								help_string => "Group|vlink name",
 								optional => "NO",
@@ -12051,7 +12450,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		menu => "root_slb_policy",
 		function_name => "slb_policy_dnssec",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Policy name (a string of 1 to 128 characters)",
@@ -12095,7 +12494,7 @@
 									type => "U16",
 									help_string => "Tuxedo wsl port value",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "STRING",
 									help_string => "The value format is \\\"minport:maxport\\\", for example \\\"10000:24000\\\", minport and maxport can range from 1 to 65,535",
@@ -12326,7 +12725,7 @@
 					type => "U32",
 					help_string => "Timeout value in seconds(1 ~ 2592000)",
 					optional => "NO",
-				}, 
+				},
 				{
 					type => "STRING",
 					help_string => "Timeout Type(optional, idle|fin_wait1|fin_wait2|closing|time_wait|close_wait|last_ack. default type is idle)",
@@ -12347,11 +12746,11 @@
 					help_string => "Virtual Service name",
 					optional => "NO",
 				},
-				{       
+				{
                                         type => "STRING",
-                                        help_string => "Timeout Type(optional, idle|fin_wait1|fin_wait2|closing|time_wait|close_wait|last_ack. default type is idle)", 
+                                        help_string => "Timeout Type(optional, idle|fin_wait1|fin_wait2|closing|time_wait|close_wait|last_ack. default type is idle)",
                                         optional => "YES",
-                                        default_value => "\"idle\"", 
+                                        default_value => "\"idle\"",
                                 }, ],
 	},
 	{
@@ -12387,7 +12786,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "add_snat_virtual",
-		function_args => [ 
+		function_args => [
 					{
 						type => "STRING",
 						help_string => "Virtual Service name",
@@ -12395,7 +12794,7 @@
 					},
 					{
 						type => "IPADDR",
-						help_string => "Client Network",	
+						help_string => "Client Network",
 						optional => "NO",
 					},
 					{
@@ -12408,7 +12807,7 @@
 	{
 		obj_type => "MENU",
 		name => "snat",
-		parent_menu => "root_no_slb",    
+		parent_menu => "root_no_slb",
 		uniq_name => "root_no_slb_snat",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -12422,7 +12821,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "no_snat_virtual",
-		function_args => [ 
+		function_args => [
 					{
 						type => "STRING",
 						help_string => "Virtual Service name",
@@ -12430,7 +12829,7 @@
 					},
 					{
 						type => "IPADDR",
-						help_string => "Client Network",	
+						help_string => "Client Network",
 						optional => "NO",
 					},
 					{
@@ -12509,7 +12908,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display SLB SNMP OID settings",
-	},  
+	},
 	{
 		obj_type => "ITEM",
 		name => "virtual",
@@ -12561,10 +12960,10 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear SLB SNMP OID settings",
-	},  
-	{                               
-		obj_type => "ITEM",         
-		name => "virtual",              
+	},
+	{
+		obj_type => "ITEM",
+		name => "virtual",
 		menu => "root_clear_slb_snmp_oid",
 		help_string => "Clear SLB SNMP OID settings for all virtual services",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
@@ -12572,9 +12971,9 @@
 		function_name => "root_clear_slb_snmp_oid_virtual",
 		function_args => [],
 	},
-	{                               
-		obj_type => "ITEM",         
-		name => "real",              
+	{
+		obj_type => "ITEM",
+		name => "real",
 		menu => "root_clear_slb_snmp_oid",
 		help_string => "Clear SLB SNMP OID settings for all real services",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
@@ -12591,7 +12990,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display connection from client to vs then to rs",
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "current",
@@ -12600,7 +12999,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display current connection",
 		function_name => "show_connection_current",
-			function_args => [            
+			function_args => [
 					{
 						type => "U32",
 						help_string => "number of connections to be displayed(1 to 20000,default:100)",
@@ -12611,7 +13010,7 @@
 					},
 					{
 						type => "STRING",
-						help_string => "input filter, such as: client=IP/netmask or vs=vs_name or rs=rs_name",	
+						help_string => "input filter, such as: client=IP/netmask or vs=vs_name or rs=rs_name",
 						optional => "YES",
 						default_value =>"\"NULL\"",
 					},
@@ -12626,9 +13025,9 @@
 						help_string => "input filter, such as: client=IP/netmask or vs=vs_name or rs=rs_name",
 						optional => "YES",
 						default_value =>"\"NULL\"",
-					},       	                                                                                     
+					},
 	                                ],
-	},		
+	},
 	{
 		obj_type => "ITEM",
 		name => "live",
@@ -12636,11 +13035,11 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display live connection",
-		function_name => "slb_connection_live",	
+		function_name => "slb_connection_live",
 		function_args => [
 					{
 						type => "STRING",
-						help_string => "input filter, such as: client=IP/netmask or vs=vs_name or rs=rs_name",	
+						help_string => "input filter, such as: client=IP/netmask or vs=vs_name or rs=rs_name",
 						optional => "YES",
 						default_value =>"\"NULL\"",
 					},
@@ -12655,7 +13054,7 @@
 						help_string => "input filter, such as: client=IP/netmask or vs=vs_name or rs=rs_name",
 						optional => "YES",
 						default_value =>"\"NULL\"",
-					},					
+					},
 					],
 	},
 #	tcp option for slb
@@ -12685,7 +13084,7 @@
 	},
 	{
 		obj_type => "MENU",
-		name => "real",  
+		name => "real",
 		parent_menu => "root_no_slb",
 		uniq_name => "root_no_slb_real",
 		help_string => "Remove a real service",
@@ -12696,12 +13095,12 @@
 	{
 		obj_type => "ITEM",
 		name => "forwardip",
-		menu => "root_no_slb",     
+		menu => "root_no_slb",
 		help_string => "Delete the setting of extracting the client IP from the TCP option",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "no_slb_forwardip_kern",
-		function_args => [ {       
+		function_args => [ {
 									type => "STRING",
 									help_string => "Virtual service name",
 									optional => "NO",
@@ -12709,13 +13108,13 @@
 	},
 	{
 		obj_type => "MENU",
-		name => "settings",  
+		name => "settings",
 		parent_menu => "root_no_slb_real",
 		uniq_name => "root_no_slb_real_settings",
 		help_string => "Remove real service settings",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-	},    
+	},
 	{
 		obj_type => "ITEM",
 		name => "keepdip",
@@ -12725,15 +13124,15 @@
 		help_string => "Remove keepdip setting on a real service",
 		function_name => "no_slb_real_settings_keepdip_kern",
 		function_args => [
-			{     
+			{
 				type => "STRING",
 				help_string => "Real service name",
-				optional => "NO", 
-			}, ], 
+				optional => "NO",
+			}, ],
 	},
 	{
 		obj_type => "MENU",
-		name => "application",  
+		name => "application",
 		parent_menu => "root_no_slb_real",
 		uniq_name => "root_no_slb_real_application",
 		help_string => "Remove a real service application setting",
@@ -12787,43 +13186,43 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "diameter",   
+		name => "diameter",
 		menu => "root_no_slb_real",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove an diameter real service",
-		function_name => "no_slb_real_diameter_kern",  
+		function_name => "no_slb_real_diameter_kern",
 		function_args => [ {
 									type => "STRING",
-									help_string => "Real service name",   
+									help_string => "Real service name",
 									optional => "NO",
 								}, ],
 	},
 	{
 		obj_type => "ITEM",
-		name => "http",   
+		name => "http",
 		menu => "root_no_slb_real",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove an http real service",
-		function_name => "no_slb_real_http_kern",  
+		function_name => "no_slb_real_http_kern",
 		function_args => [ {
 									type => "STRING",
-									help_string => "Real service name",   
+									help_string => "Real service name",
 									optional => "NO",
 								}, ],
 	},
 	{
 		obj_type => "ITEM",
-		name => "ftp",   
+		name => "ftp",
 		menu => "root_no_slb_real",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove an ftp real service",
-		function_name => "no_slb_real_ftp_kern",  
+		function_name => "no_slb_real_ftp_kern",
 		function_args => [ {
 									type => "STRING",
-									help_string => "Real service name",   
+									help_string => "Real service name",
 									optional => "NO",
 								}, ],
 	},
@@ -12832,15 +13231,15 @@
 	#
 	{
 		obj_type => "ITEM",
-		name => "dns", 
+		name => "dns",
 		menu => "root_no_slb_real",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove an dns real service",
-		function_name => "no_slb_real_dns_kern",  
+		function_name => "no_slb_real_dns_kern",
 		function_args => [ {
 									type => "STRING",
-									help_string => "Real service name",   
+									help_string => "Real service name",
 									optional => "NO",
 								}, ],
 	},
@@ -12877,7 +13276,7 @@
 		obj_type => "ITEM",
 		name => "udp",
 		menu => "root_no_slb_real",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL | CMD_KERN_API",    
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove a udp real service",
 		function_name => "no_slb_real_udp_kern",
@@ -12891,7 +13290,7 @@
 		obj_type => "ITEM",
 		name => "ip",
 		menu => "root_no_slb_real",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",    
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove an ip real service",
 		function_name => "no_slb_real_ip_kern",
@@ -12905,7 +13304,7 @@
 		obj_type => "ITEM",
 		name => "https",
 		menu => "root_no_slb_real",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",    
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove a HTTPS real service",
 		function_name => "no_slb_real_https",
@@ -12919,7 +13318,7 @@
 		obj_type => "ITEM",
 		name => "tcps",
 		menu => "root_no_slb_real",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",    
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove a SSL TCP real service",
 		function_name => "no_slb_real_tcps",
@@ -12934,7 +13333,7 @@
 		obj_type => "ITEM",
 		name => "rtsp",
 		menu => "root_no_slb_real",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL| CMD_KERN_API",    
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL| CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove a RTSP real service",
 		function_name => "no_slb_real_rtsp_kern",
@@ -12948,7 +13347,7 @@
 	{
 		obj_type => "MENU",
 		name => "group",
-		parent_menu => "root_no_slb",    
+		parent_menu => "root_no_slb",
 		uniq_name => "root_no_slb_group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -12957,12 +13356,12 @@
 	{
 		obj_type => "ITEM",
 		name => "method",
-		menu => "root_no_slb_group",     
+		menu => "root_no_slb_group",
 		help_string => "Remove group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL | CMD_KERN_API | CMD_NON_SERIAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "no_slb_group_method_kern",
-		function_args => [ {       
+		function_args => [ {
 									type => "STRING",
 									help_string => "Group name",
 									optional => "NO",
@@ -12980,12 +13379,12 @@
 	{
 		obj_type => "ITEM",
 		name => "ic",
-		menu => "root_no_slb_group_option",     
+		menu => "root_no_slb_group_option",
 		help_string => "Remove group options",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL | CMD_KERN_API | CMD_NON_SERIAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "no_slb_group_option_ic_kern",
-		function_args => [ {       
+		function_args => [ {
 									type => "STRING",
 									help_string => "Group name",
 									optional => "NO",
@@ -12994,12 +13393,12 @@
 	{
 		obj_type => "ITEM",
 		name => "itcpopt",
-		menu => "root_no_slb_group_option",     
+		menu => "root_no_slb_group_option",
 		help_string => "Remove group options",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL | CMD_KERN_API | CMD_NON_SERIAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "no_slb_group_option_itcpopt_kern",
-		function_args => [ {       
+		function_args => [ {
 									type => "STRING",
 									help_string => "Group name",
 									optional => "NO",
@@ -13008,7 +13407,7 @@
 	{
 		obj_type => "MENU",
 		name => "application",
-		parent_menu => "root_no_slb_group",    
+		parent_menu => "root_no_slb_group",
 		uniq_name => "root_no_slb_group_application",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -13037,7 +13436,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "no_slb_group_activation_kern",
-		function_args => [ {       
+		function_args => [ {
 									type => "STRING",
 									help_string => "Group name",
 									optional => "NO",
@@ -13051,13 +13450,13 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL | CMD_KERN_API | CMD_NON_SERIAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "no_slb_group_member_kern",
-		function_args => [ {       
+		function_args => [ {
 									type => "STRING",
 									help_string => "Group name",
 									optional => "NO",
 								},
 								{
-									type => "STRING",   
+									type => "STRING",
 									help_string => "Real service name",
 									optional => "NO",
 								}, ],
@@ -13242,13 +13641,13 @@
 						optional => "YES",
 						default_value => 0,
 					}
-					
+
 				]
 	},
 	{
 		obj_type => "MENU",
 		name => "virtual",
-		parent_menu => "root_no_slb",    
+		parent_menu => "root_no_slb",
 		uniq_name => "root_no_slb_virtual",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -13257,7 +13656,7 @@
 	{
 		obj_type => "MENU",
 		name => "settings",
-		parent_menu => "root_no_slb_virtual",   
+		parent_menu => "root_no_slb_virtual",
 		uniq_name => "root_no_slb_virtual_settings",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -13290,7 +13689,7 @@
 				help_string => "Virtual service name",
 				optional => "NO",
 			}, ],
-	},  
+	},
 	{
 		obj_type => "ITEM",
 		name => "ecs",
@@ -13304,7 +13703,7 @@
 				help_string => "Virtual service name",
 				optional => "NO",
 			}, ],
-	},  
+	},
 	{
 		obj_type => "ITEM",
 		name => "interface",
@@ -13316,19 +13715,19 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "Virtual service name",
-				optional => "NO", 
+				optional => "NO",
 			},
 			{
 				type => "STRING",
 				help_string => "Interface name (<system_ifname>|<vlan_ifname>|<bond_ifname>)",
-				optional => "NO", 
-			}, 
-		], 
+				optional => "NO",
+			},
+		],
 	},
 	{
 		obj_type => "MENU",
 		name => "application",
-		parent_menu => "root_no_slb_virtual",    
+		parent_menu => "root_no_slb_virtual",
 		uniq_name => "root_no_slb_virtual_application",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -13448,7 +13847,7 @@
 								}, ],
 	},
 	#
-	# ZhangGaofeng, Fri Apr 30 17:46:16 CST 2004, bug: 8050 
+	# ZhangGaofeng, Fri Apr 30 17:46:16 CST 2004, bug: 8050
 	#
 	{
 		obj_type => "ITEM",
@@ -13467,12 +13866,12 @@
 	# end of bug 8050
 	{
 		obj_type => "ITEM",
-		name => "tcp",   
+		name => "tcp",
 		menu => "root_no_slb_virtual",
 		help_string => "Remove TCP virtual service",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "no_slb_virtual_tcp",      
+		function_name => "no_slb_virtual_tcp",
 		function_args => [ {
 									type => "STRING",
 									help_string => "Virtual service name",
@@ -13481,12 +13880,12 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "tcps",   
+		name => "tcps",
 		menu => "root_no_slb_virtual",
 		help_string => "Remove TCPS virtual service",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "no_slb_virtual_tcps",      
+		function_name => "no_slb_virtual_tcps",
 		function_args => [ {
 									type => "STRING",
 									help_string => "Virtual service name",
@@ -13500,7 +13899,7 @@
 		help_string => "Remove UDP virtual service",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "no_slb_virtual_udp",      
+		function_name => "no_slb_virtual_udp",
 		function_args => [ {
 									type => "STRING",
 									help_string => "Virtual service name",
@@ -13509,12 +13908,12 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "tuxedo",   
+		name => "tuxedo",
 		menu => "root_no_slb_virtual",
 		help_string => "Remove tuxedo virtual service",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "no_slb_virtual_tuxedo",      
+		function_name => "no_slb_virtual_tuxedo",
 		function_args => [ {
 									type => "STRING",
 									help_string => "Virtual service name",
@@ -13528,7 +13927,7 @@
 		help_string => "Remove IP virtual service",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "no_slb_virtual_ip",      
+		function_name => "no_slb_virtual_ip",
 		function_args => [ {
 									type => "STRING",
 									help_string => "Virtual service name",
@@ -13537,18 +13936,18 @@
 	},
 	{
 		obj_type => "MENU",
-		name => "policy", 
+		name => "policy",
 		parent_menu => "root_no_slb",
-		uniq_name => "root_no_slb_policy", 
+		uniq_name => "root_no_slb_policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove policy",
 	},
 	{
 		obj_type => "MENU",
-		name => "mode", 
+		name => "mode",
 		parent_menu => "root_no_slb",
-		uniq_name => "root_no_slb_mode", 
+		uniq_name => "root_no_slb_mode",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove slb mode",
@@ -13798,7 +14197,7 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "regex",  
+		name => "regex",
 		help_string => "Remove regular expression policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -13809,11 +14208,11 @@
 								help_string => "Policy name",
 								optional => "NO",
 							},
-						], 
+						],
 	},
 	{
 		obj_type => "ITEM",
-		name => "header",  
+		name => "header",
 		help_string => "Remove a header match policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API|CMD_NON_SERIAL",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -13824,7 +14223,7 @@
 								help_string => "Policy name",
 								optional => "NO",
 							},
-						], 
+						],
 	},
 	{
 		obj_type => "ITEM",
@@ -13852,7 +14251,7 @@
 									type => "STRING",
 									help_string => "Virtual service name",
 									optional => "NO",
-								}, 
+								},
 						 ],
 	},
 	{
@@ -13894,8 +14293,8 @@
 		function_args => [ {
 								type => "STRING",
 								help_string => "Policy name",
-								optional => "NO", 
-							}, 
+								optional => "NO",
+							},
 						],
 	},
 	{
@@ -13934,7 +14333,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display real service settings",
-	},    
+	},
 	{
 		obj_type => "ITEM",
 		name => "keepdip",
@@ -13944,13 +14343,13 @@
 		help_string => "Display keepdip settings on real services",
 		function_name => "show_slb_real_settings_keepdip",
 		function_args => [
-			{     
+			{
 				type => "STRING",
 				help_string => "Real service name",
 				optional => "YES",
 				default_value => "\"\"",
-			}, ], 
-	},    
+			}, ],
+	},
 	{
 		obj_type => "MENU",
 		name => "application",
@@ -14086,7 +14485,7 @@
 								}, ],
 	},
 	#
-	# ZhangGaofeng, Fri Apr 30 17:48:38 CST 2004, bug: 8050 
+	# ZhangGaofeng, Fri Apr 30 17:48:38 CST 2004, bug: 8050
 	#
 	{
 		obj_type => "ITEM",
@@ -14412,18 +14811,18 @@
                                 }, ],
     },
 #bug 14353, zhangzh, 20060912
-	{ 
-		obj_type => "ITEM", 
-		name => "healthcheck", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API", 
-		user_level => "CLI_LEVEL_ENABLE", 
-		menu => "root_show_slb_real_compatible", 
-		help_string => "Display compatible healthcheck type(s) with a given real server type", 
-		function_name => "show_slb_reals_compatible_health_kern", 
-		function_args => [ { 
-			type => "STRING", 
-			help_string => "Real server type ('all' to show all supported real server types and corresponding compatible healthcheck type(s))", 
-			optional => "NO", 
+	{
+		obj_type => "ITEM",
+		name => "healthcheck",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_ENABLE",
+		menu => "root_show_slb_real_compatible",
+		help_string => "Display compatible healthcheck type(s) with a given real server type",
+		function_name => "show_slb_reals_compatible_health_kern",
+		function_args => [ {
+			type => "STRING",
+			help_string => "Real server type ('all' to show all supported real server types and corresponding compatible healthcheck type(s))",
+			optional => "NO",
 		}, ],
 	},
 #bug 14353, end
@@ -14732,8 +15131,8 @@
 				help_string => "Virtual service name (optional)",
 				optional => "YES",
 				default_value => "\"\"",
-			}, ], 
-	}, 
+			}, ],
+	},
 	{
 		obj_type => "ITEM",
 		name => "proxyprotocol",
@@ -14747,8 +15146,8 @@
 				help_string => "Virtual service name (optional)",
 				optional => "YES",
 				default_value => "\"\"",
-			}, ], 
-	}, 
+			}, ],
+	},
 	{
 		obj_type => "MENU",
 		name => "application",
@@ -14880,7 +15279,7 @@
 								}, ],
 	},
 	#
-	# ZhangGaofeng, Fri Apr 30 17:51:23 CST 2004, bug: 8050 
+	# ZhangGaofeng, Fri Apr 30 17:51:23 CST 2004, bug: 8050
 	#
 	{
 		obj_type => "ITEM",
@@ -14932,14 +15331,14 @@
 		obj_type => "ITEM",
 		name => "udp",
 		menu => "root_show_slb_virtual",
-		help_string => "Show UDP virtual services",  
+		help_string => "Show UDP virtual services",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_slb_virtual_udp",
 		function_args => [ {
 									type => "STRING",
 									help_string => "Virtual service name (optional)",
-									optional => "YES",      
+									optional => "YES",
 									default_value => "\"\"",
 								}, ],
 	},
@@ -14963,14 +15362,14 @@
 		obj_type => "ITEM",
 		name => "l2ip",
 		menu => "root_show_slb_virtual",
-		help_string => "Show L2IP virtual services",  
+		help_string => "Show L2IP virtual services",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_slb_virtual_l2ip",
 		function_args => [ {
 									type => "STRING",
 									help_string => "L2IP Virtual service name (optional)",
-									optional => "YES",      
+									optional => "YES",
 									default_value => "\"\"",
 								}, ],
 	},
@@ -14979,14 +15378,14 @@
 		obj_type => "ITEM",
 		name => "ip",
 		menu => "root_show_slb_virtual",
-		help_string => "Show IP virtual services",  
+		help_string => "Show IP virtual services",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_slb_virtual_ip",
 		function_args => [ {
 									type => "STRING",
 									help_string => "Virtual service name (optional)",
-									optional => "YES",      
+									optional => "YES",
 									default_value => "\"\"",
 								}, ],
 	},
@@ -15029,7 +15428,7 @@
                                     type => "STRING",
                                     help_string => "Group Name",
                                     optional => "NO",
-                                },   
+                                },
                                                 {
                                     type => "STRING",
                                     help_string => "Virtual Name",
@@ -15290,12 +15689,12 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "regex",  
-		help_string => "Show regular expression policy",    
+		name => "regex",
+		help_string => "Show regular expression policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		menu => "root_show_slb_policy",
-		function_name => "show_slb_policy_regex_url", 
+		function_name => "show_slb_policy_regex_url",
 		function_args => [ {
 								type => "STRING",
 								help_string => "Policy name (optional)",
@@ -15306,12 +15705,12 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "header",  
-		help_string => "Show header match policies",    
+		name => "header",
+		help_string => "Show header match policies",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		menu => "root_show_slb_policy",
-		function_name => "show_slb_policy_header", 
+		function_name => "show_slb_policy_header",
 		function_args => [ {
 								type => "STRING",
 								help_string => "Policy name (optional)",
@@ -15393,7 +15792,7 @@
 								help_string => "Policy name (optional). Display all dnssec policies by default.",
 								optional => "YES",
 								default_value => "\"\"",
-							}, 
+							},
 						],
     },
 	{
@@ -15409,20 +15808,20 @@
 	{
 		obj_type => "ITEM",
 		name => "forwardip",
-		menu => "root_clear_slb",     
+		menu => "root_clear_slb",
 		help_string => "Clear the setting of extracting the client IP from the TCP option",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "clear_slb_forwardip_kern",
-		function_args => [ {       
+		function_args => [ {
 									type => "STRING",
 									help_string => "Virtual service name",
 									optional => "YES",
 									default_value => "\"\"",
 								}, ],
-	},	
+	},
+
 
-	
 	{
 		obj_type => "ITEM",
 		name => "all",
@@ -15450,17 +15849,17 @@
 		help_string => "Clear real service settings",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-	},                                          
-	{                                           
-		obj_type => "ITEM",                     
-		name => "keepdip",                  
+	},
+	{
+		obj_type => "ITEM",
+		name => "keepdip",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		menu => "root_clear_slb_real_settings",
 		help_string => "Clear all keepdip settings on real services",
 		function_name => "clear_slb_real_settings_keepdip_kern",
 		function_args => [],
-	}, 
+	},
 	{
 		obj_type => "MENU",
 		name => "application",
@@ -15521,7 +15920,7 @@
 		function_args => [],
 	},
 	#
-	# ZhangGaofeng, Fri Apr 30 17:52:41 CST 2004, bug: 8050 
+	# ZhangGaofeng, Fri Apr 30 17:52:41 CST 2004, bug: 8050
 	#
 	{
 		obj_type => "ITEM",
@@ -15860,10 +16259,10 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear virtual service settings",
-	},  
-	{                               
-		obj_type => "ITEM",         
-		name => "description",              
+	},
+	{
+		obj_type => "ITEM",
+		name => "description",
 		menu => "root_clear_slb_virtual_settings",
 		help_string => "Clear virtual service description",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
@@ -15871,9 +16270,9 @@
 		function_name => "clear_slb_virtual_settings_desc",
 		function_args => [],
 	},
-	{                               
-		obj_type => "ITEM",         
-		name => "rts",              
+	{
+		obj_type => "ITEM",
+		name => "rts",
 		menu => "root_clear_slb_virtual_settings",
 		help_string => "Clear RTS settings on virtual services",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
@@ -15881,9 +16280,9 @@
 		function_name => "clear_slb_virtual_settings_rts",
 		function_args => [],
 	},
-	{                               
-		obj_type => "ITEM",         
-		name => "ecs",              
+	{
+		obj_type => "ITEM",
+		name => "ecs",
 		menu => "root_clear_slb_virtual_settings",
 		help_string => "Clear the ECS settings on all virtual services",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
@@ -15891,9 +16290,9 @@
 		function_name => "clear_slb_virtual_settings_ecs",
 		function_args => [],
 	},
-	{                                     
-		obj_type => "ITEM",               
-		name => "interface",                    
+	{
+		obj_type => "ITEM",
+		name => "interface",
 		menu => "root_clear_slb_virtual_settings",
 		help_string => "Clear all serving interface settings of virtual services",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
@@ -15901,9 +16300,9 @@
 		function_name => "clear_slb_virtual_settings_interface",
 		function_args => [],
 	},
-	{                               
-		obj_type => "ITEM",         
-		name => "proxyprotocol",              
+	{
+		obj_type => "ITEM",
+		name => "proxyprotocol",
 		menu => "root_clear_slb_virtual_settings",
 		help_string => " Clear the proxy protocol settings of virtual services",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
@@ -16002,7 +16401,7 @@
 		function_args => [],
 	},
 	#
-	# ZhangGaofeng, Fri Apr 30 17:54:01 CST 2004, bug: 8050 
+	# ZhangGaofeng, Fri Apr 30 17:54:01 CST 2004, bug: 8050
 	#
 	{
 		obj_type => "ITEM",
@@ -16253,7 +16652,7 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "regex",  
+		name => "regex",
 		help_string => "Clear all regular expression policies",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -16263,7 +16662,7 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "header",  
+		name => "header",
 		help_string => "Delete all header match policies",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -16450,7 +16849,7 @@
 								}, ],
 	},
 	#
-	# ZhangGaofeng, Fri Apr 30 17:55:05 CST 2004, bug: 8050 
+	# ZhangGaofeng, Fri Apr 30 17:55:05 CST 2004, bug: 8050
 	#
 	{
 		obj_type => "ITEM",
@@ -16543,8 +16942,8 @@
 				help_string => "Real service name (optional)",
 				optional => "YES",
 				default_value => "\"\"",
-			}, ], 
-	},    
+			}, ],
+	},
 	{
 		obj_type => "ITEM",
 		name => "fwdmac",
@@ -16558,8 +16957,8 @@
 				help_string => "Real service name (optional)",
 				optional => "YES",
 				default_value => "\"\"",
-			}, ], 
-	}, 
+			}, ],
+	},
 	{
 		obj_type => "ITEM",
 		name => "ip",
@@ -16779,7 +17178,7 @@
 								}, ],
 	},
 	#
-	# ZhangGaofeng, Fri Apr 30 17:56:44 CST 2004, bug: 8050 
+	# ZhangGaofeng, Fri Apr 30 17:56:44 CST 2004, bug: 8050
 	#
 	{
 		obj_type => "ITEM",
@@ -16936,12 +17335,12 @@
 								help_string => "Policy name (optional)",
 								optional => "YES",
 								default_value => "\"\"",
-							}, 
+							},
 						],
 	},
 	{
 		obj_type => "ITEM",
-		name => "regex",  
+		name => "regex",
 		menu => "root_show_statistics_slb_policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_KERN_API | CMD_MONITOR",
 		user_level => "CLI_LEVEL_ENABLE",
@@ -16949,14 +17348,14 @@
 		function_name => "show_statistics_slb_policy_regex_url",
 		function_args => [ {
 									type => "STRING",
-									help_string => "Policy name (optional)", 
+									help_string => "Policy name (optional)",
 									optional => "YES",
 									default_value => "\"\"",
 								}, ],
 	},
 	{
 		obj_type => "ITEM",
-		name => "header",  
+		name => "header",
 		menu => "root_show_statistics_slb_policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_KERN_API | CMD_MONITOR",
 		user_level => "CLI_LEVEL_ENABLE",
@@ -16964,14 +17363,14 @@
 		function_name => "show_statistics_slb_policy_header",
 		function_args => [ {
 									type => "STRING",
-									help_string => "Policy name (optional)", 
+									help_string => "Policy name (optional)",
 									optional => "YES",
 									default_value => "\"\"",
 								}, ],
 	},
 	{
 		obj_type => "ITEM",
-		name => "raduname",  
+		name => "raduname",
 		menu => "root_show_statistics_slb_policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_KERN_API | CMD_MONITOR",
 		user_level => "CLI_LEVEL_ENABLE",
@@ -16979,14 +17378,14 @@
 		function_name => "show_statistics_slb_policy_raduname",
 		function_args => [ {
 									type => "STRING",
-									help_string => "Policy name (optional)", 
+									help_string => "Policy name (optional)",
 									optional => "YES",
 									default_value => "\"\"",
 								}, ],
 	},
 	{
 		obj_type => "ITEM",
-		name => "radsid",  
+		name => "radsid",
 		menu => "root_show_statistics_slb_policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_KERN_API | CMD_MONITOR",
 		user_level => "CLI_LEVEL_ENABLE",
@@ -16994,7 +17393,7 @@
 		function_name => "show_statistics_slb_policy_radsid",
 		function_args => [ {
 									type => "STRING",
-									help_string => "Policy name (optional)", 
+									help_string => "Policy name (optional)",
 									optional => "YES",
 									default_value => "\"\"",
 								}, ],
@@ -17363,7 +17762,7 @@
 								}, ],
 	},
 	#
-	# ZhangGaofeng, Fri Apr 30 17:57:50 CST 2004, bug: 8050 
+	# ZhangGaofeng, Fri Apr 30 17:57:50 CST 2004, bug: 8050
 	#
 	{
 		obj_type => "ITEM",
@@ -17471,8 +17870,8 @@
                                     help_string => "Real service name (optional)",
                                     optional => "YES",
                                     default_value => "\"\"",
-                                }, ], 
-    },    
+                                }, ],
+    },
     {
         obj_type => "ITEM",
         name => "fwdmac",
@@ -17486,7 +17885,7 @@
                                     help_string => "Real service name (optional)",
                                     optional => "YES",
                                     default_value => "\"\"",
-                                }, ], 
+                                }, ],
     },
 	#bug 12685, shily, 20060801
 	{
@@ -17660,7 +18059,7 @@
 								}, ],
 	},
 	#
-	# ZhangGaofeng, Fri Apr 30 17:59:41 CST 2004, bug: 8050 
+	# ZhangGaofeng, Fri Apr 30 17:59:41 CST 2004, bug: 8050
 	#
 	{
 		obj_type => "ITEM",
@@ -18033,7 +18432,7 @@
 									help_string => "Policy name (optional)",
 									optional => "YES",
 									default_value => "\"\"",
-						}, 
+						},
 						],
 	},
 	{
@@ -18068,7 +18467,7 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "regex",  
+		name => "regex",
 		menu => "root_clear_statistics_slb_policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -18076,14 +18475,14 @@
 		function_name => "clear_statistics_slb_policy_regex_url",
 		function_args => [ {
 									type => "STRING",
-									help_string => "Policy name (optional)",  
+									help_string => "Policy name (optional)",
 									optional => "YES",
 									default_value => "\"\"",
 								}, ],
 	},
 	{
 		obj_type => "ITEM",
-		name => "header",  
+		name => "header",
 		menu => "root_clear_statistics_slb_policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -18091,14 +18490,14 @@
 		function_name => "clear_statistics_slb_policy_header",
 		function_args => [ {
 									type => "STRING",
-									help_string => "Policy name (optional)",  
+									help_string => "Policy name (optional)",
 									optional => "YES",
 									default_value => "\"\"",
 								}, ],
 	},
 	{
 		obj_type => "ITEM",
-		name => "raduname",  
+		name => "raduname",
 		menu => "root_clear_statistics_slb_policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -18106,14 +18505,14 @@
 		function_name => "clear_statistics_slb_policy_raduname",
 		function_args => [ {
 									type => "STRING",
-									help_string => "Policy name (optional)",  
+									help_string => "Policy name (optional)",
 									optional => "YES",
 									default_value => "\"\"",
 								}, ],
 	},
 	{
 		obj_type => "ITEM",
-		name => "radsid",  
+		name => "radsid",
 		menu => "root_clear_statistics_slb_policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -18121,7 +18520,7 @@
 		function_name => "clear_statistics_slb_policy_radsid",
 		function_args => [ {
 									type => "STRING",
-									help_string => "Policy name (optional)",  
+									help_string => "Policy name (optional)",
 									optional => "YES",
 									default_value => "\"\"",
 								}, ],
@@ -18269,7 +18668,7 @@
 		parent_menu => "root_cache",
 		uniq_name => "root_cache_setting",
 		help_string => "Modify the HTTP cache settings",
-	},   
+	},
 	{
 		obj_type => "ITEM",
 		name => "objectsize",
@@ -18306,7 +18705,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		menu => "root_cache",
 		function_name => "cache_evict",
-		function_args => [ { 
+		function_args => [ {
 									type => "STRING",
 									help_string => "Hostname or Hostname:port (Note: hostname does not take regex)",
 									optional => "NO",
@@ -18325,7 +18724,7 @@
 		parent_menu => "root_cache",
 		uniq_name => "root_cache_imgopt",
 		help_string => "Configure cache image optimization",
-	},  
+	},
 	{
 		obj_type => "ITEM",
 		name => "on",
@@ -18367,7 +18766,7 @@
 		function_args => [ {
 									type => "U32",
 									help_string => "Minimum image optimization file size. Default is 1 (KB)",
-									optional => "YES", 
+									optional => "YES",
 									default_value => "1",
 								}, ],
 	},
@@ -18575,10 +18974,10 @@
 		function_args => [{
 					type => "STRING",
 					help_string => "IP group name (optional)",
-					optional => "YES", 
+					optional => "YES",
 					default_value => "\"\"",
 				},],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "acl",
@@ -18590,10 +18989,10 @@
 		function_args => [{
 					type => "STRING",
 					help_string => "Protocol : (no input: clear acl statistics; dns: clear dns acl statistics; http: clear http acl statistics)\\nBlacklist: clear acl blacklist statistics",
-					optional => "YES", 
+					optional => "YES",
 					default_value => "\"\"",
 				},],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "cache",
@@ -18654,7 +19053,7 @@
 		help_string => "Reset cache settings",
 		parent_menu => "root_no_cache",
 		uniq_name => "no_cache_settings",
-	},   
+	},
 	{
 		obj_type => "ITEM",
 		name => "expire",
@@ -18683,7 +19082,7 @@
 		help_string => "Reset cache settings",
 		parent_menu => "root_no_cache",
 		uniq_name => "root_no_cache_imgopt",
-	},  
+	},
 	{
 		obj_type => "ITEM",
 		name => "urlexclude",
@@ -18696,7 +19095,7 @@
 									type => "STRING",
 									help_string => "virtual service name",
 									optional => "NO",
-								}, 
+								},
 					  			{
 									type => "STRING",
 									help_string => "Excluded URL",
@@ -18720,7 +19119,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Change virtual cluster settings",
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "on",
@@ -18736,13 +19135,13 @@
 									help_string => "Virtual cluster ID, default = 0 (all)",
 									optional => "YES",
 									default_value => "0"
-								}, 
+								},
 								{
 									type => "STRING",
 									help_string => "Interface name ([system]|[vlan]|[mnet]|[bond]|all, default = all)",
 									optional => "YES",
 									default_value => "\"all\"",
-								}, 
+								},
 				],
 	},
 	{
@@ -18760,13 +19159,13 @@
 									help_string => "Virtual cluster ID, default = 0 (all)",
 									optional => "YES",
 									default_value => "0"
-								}, 
+								},
 								{
 									type => "STRING",
 									help_string => "Interface name ([system]|[vlan]|[mnet]|[bond]|all, default = all)",
 									optional => "YES",
 									default_value => "\"all\"",
-								}, 
+								},
 				],
 	},
 	{
@@ -18777,18 +19176,18 @@
 		menu => "root_cluster_virtual",
 		help_string => "Set virtual cluster interface name",
 		function_name => "multi_cluster_virtual_ifname",
-		function_args => [ 
+		function_args => [
 
 								{
 									type => "STRING",
 									help_string => "Interface name ([system]|[vlan]|[mnet]|[bond])",
 									optional => "NO"
-								}, 
+								},
 								{
 									type => "U32",
 									help_string => "Virtual cluster ID",
 									optional => "NO",
-								}, 
+								},
 				],
 	},
 	{
@@ -18799,12 +19198,12 @@
 		menu => "root_cluster_virtual",
 		help_string => "Set virtual cluster virtual IP",
 		function_name => "multi_cluster_virtual_vip",
-		function_args =>  [ 
+		function_args =>  [
 								{
 									type => "STRING",
 									help_string => "Interface name ([system]|[vlan]|[mnet]|[bond])",
 									optional => "NO"
-								}, 
+								},
 								{
 									type => "U32",
 									help_string => "Virtual cluster ID",
@@ -18824,12 +19223,12 @@
 		menu => "root_cluster_virtual",
 		help_string => "Set virtual cluster authentication",
 		function_name => "multi_cluster_virtual_auth",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Interface name ([system]|[vlan]|[mnet]|[bond])",
 									optional => "NO"
-								}, 
+								},
 								{
 									type => "U32",
 									help_string => "Virtual cluster ID",
@@ -18839,7 +19238,7 @@
 									type => "U32",
 									help_string =>  "<0-1>\\n0 (no authentication)\\n1 (set authentication code)",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "STRING",
 									help_string =>  "Up to 8 character authentication code " ,
@@ -18857,23 +19256,23 @@
 		menu => "root_cluster_virtual",
 		help_string => "Set virtual cluster preemption on or off",
 		function_name => "multi_cluster_virtual_preempt",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Interface name ([system]|[vlan]|[mnet]|[bond])",
 									optional => "NO"
-								}, 
+								},
 
 								{
 									type => "U32",
 									help_string => "Virtual cluster ID",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "U32",
 									help_string => "Preempt value, 0=false, 1=true",
 									optional => "NO",
-								}, 
+								},
 
 
 
@@ -18889,13 +19288,13 @@
 		menu => "root_cluster_virtual",
 		help_string => "Set advertisement interval for the cluster" ,
 		function_name => "multi_cluster_virtual_mrthresh",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Interface name ([system]|[vlan]|[mnet]|[bond])",
 									optional => "NO"
-								}, 
-								
+								},
+
 								{
 									type => "U32",
 									help_string => "Virtual cluster ID",
@@ -18915,12 +19314,12 @@
 		menu => "root_cluster_virtual",
 		help_string => "Set virtual cluster priority",
 		function_name => "multi_cluster_virtual_prio",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Interface name ([system]|[vlan]|[mnet]|[bond])",
 									optional => "NO"
-								}, 
+								},
 
 								{
 									type => "U32",
@@ -18931,14 +19330,14 @@
 									type => "U16",
 									help_string => "Set virtual cluster priority (1-255, 255 is the highest) ",
 									optional => "NO",
-								}, 
+								},
 
 								{
 									type => "STRING",
 									help_string => "peer hostname",
 									optional => "YES",
 									default_value => "NULL",
-								}, 
+								},
 
 				],
 	},
@@ -18966,7 +19365,7 @@
 									type => "U16",
 									help_string => "Interval of broadcasting gratuitous ARP (in second, 30 to 65535).\\n0 means only send gratuitous ARP when switching to master.",
 									optional => "NO",
-								}, 
+								},
 				],
 	},
 #bug 23432, end
@@ -19012,7 +19411,7 @@
         },
         {
                 obj_type => "ITEM",
-                name => "on",      
+                name => "on",
                 cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
                 user_level => "CLI_LEVEL_CONFIG",
                 menu => "root_cluster_virtual_ffo",
@@ -19048,7 +19447,7 @@
                 uniq_name => "root_cluster_virtual_ffo_interface_carrier",
                 help_string => "Set interface carrier loss timeout for fast failover",
         },
-        { 
+        {
                 obj_type => "MENU",
                 name => "loss",
                 cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
@@ -19070,7 +19469,7 @@
 						type => "U32",
 						help_string => "Interface timeout value (0 - 65535)ms",
 						optional => "NO",
-					}, 
+					},
 		],
         },
 
@@ -19091,7 +19490,7 @@
 		parent_menu => "root_no_cluster",
 		uniq_name => "root_no_cluster_virtual",
 		help_string => "Disable selective virtual clustering features",
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "vip",
@@ -19100,13 +19499,13 @@
 		menu => "root_no_cluster_virtual",
 		help_string => "Delete virtual cluster virtual IP",
 		function_name => "multi_cluster_no_virtual_vip",
-		function_args => [ 
+		function_args => [
 
 								{
 									type => "STRING",
 									help_string => "Interface name ([system]|[vlan]|[mnet]|[bond])",
 									optional => "NO"
-								}, 
+								},
 								{
 
 									type => "U32",
@@ -19127,12 +19526,12 @@
 		menu => "root_no_cluster_virtual",
 		help_string => "Reset cluster authentication to default(false)",
 		function_name => "multi_cluster_no_virtual_auth",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Interface name ([system]|[vlan]|[mnet]|[bond])",
 									optional => "NO"
-								}, 
+								},
 							{
 									type => "U32",
 									help_string => "Virtual cluster ID (1-255)",
@@ -19147,12 +19546,12 @@
 		menu => "root_no_cluster_virtual",
 		help_string => "Reset cluster preemption mode to default(true)",
 		function_name => "multi_cluster_no_virtual_preempt",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Interface name ([system]|[vlan]|[mnet]|[bond])",
 									optional => "NO"
-								}, 
+								},
 							{
 									type => "U32",
 									help_string => "Virtual cluster ID (1-255)",
@@ -19167,18 +19566,18 @@
 		menu => "root_no_cluster_virtual",
 		help_string => "Reset advertisment interval to default(5)",
 		function_name => "other_cluster_no_virtual_mrthresh",
-		function_args => [ 
-					{	
+		function_args => [
+					{
 					type => "STRING",
 					help_string => "Interface name ([system]|[vlan]|[mnet]|[bond]",
 					optional => "NO"
-					}, 
+					},
 					{
 					type => "U32",
 					help_string => "Virtual cluster ID (1-255)",
 					optional => "NO",
 					}, ],
-							
+
 	},
 	{
 		obj_type => "ITEM",
@@ -19188,12 +19587,12 @@
 		menu => "root_no_cluster_virtual",
 		help_string => "Reset cluster priority to default(100)",
 		function_name => "multi_cluster_no_virtual_prio",
-		function_args => [ 
+		function_args => [
 			{
 			type => "STRING",
 			help_string => "Interface name ([system]|[vlan]|[mnet]|[bond])",
 			optional => "NO"
-			}, 
+			},
 
 			{
 			type => "U32",
@@ -19206,7 +19605,7 @@
 			help_string => "peer hostname",
 			optional => "YES",
 			default_value => "NULL",
-			}, 
+			},
 		],
 	},
 
@@ -19243,7 +19642,7 @@
 			help_string => "Interface name (all|[system]|[vlan]|[mnet]|[bond]), default is \\\"all\\\"",
 			optional => "YES",
 			default_value => "\"all\"",
-		    }, 
+		    },
 		    {
 			type => "U32",
 			help_string => "virtual cluster ID to clear, 0=all, default is 0",
@@ -19264,7 +19663,7 @@
 									type => "STRING",
 									help_string => "Interface name ([system]|all|[vlan]|[mnet]|[bond])",
 									optional => "NO"
-								}, 
+								},
 
 								{
 									type => "U32",
@@ -19306,8 +19705,8 @@
 									help_string => "Interface name ([system]|all|[vlan]|[mnet]|[bond], default=all)",
 									optional => "YES",
 									default_value => "\"all\"",
-									  
-								}, 
+
+								},
 				],
 	},
 	{
@@ -19325,8 +19724,8 @@
 									help_string => "Interface name ([system]|all|[vlan]|[mnet]|[bond], default=all)",
 									optional => "YES",
 									default_value => "\"all\"",
-	
-								}, 
+
+								},
 				],
 	},
 
@@ -19365,7 +19764,7 @@
 						help_string => "Interface name ([system]|all|[vlan]|[mnet]|[bond], default=all)",
 						optional => "YES",
 						default_value => "\"all\"",
-					}, 
+					},
 		                 ],
         },
 #bug 23432, end
@@ -19453,7 +19852,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Set RESTful API listening IP address",
 		function_name => "restfulapi_ip",
-		function_args => [ 
+		function_args => [
 			{
 				type => "IPADDR",
 				help_string => "RESTful API listening IP address",
@@ -19474,7 +19873,7 @@
 				type => "IPADDR",
 				help_string => "Source IP (IPv4 in 10.0.0.0 format or IPv6 in ff:fe::0 format)",
 				optional => "NO",
-			}, 
+			},
 			{
 				type => "IPMASK",
 				help_string => "Netmask for IPv4(e.g. 255.255.255.0), or prefix length for IPv6, in range [1,128]",
@@ -19485,7 +19884,7 @@
 				help_string => "The action of source IP restriction rule (permit or deny. default is permit)",
 				optional => "YES",
 				default_value => "\"permit\"",
-			}, 
+			},
 		],
 	},
 	{
@@ -19514,14 +19913,14 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Import PEM certificate chain file, including private key and certificate",
 		function_name => "restfulapi_ssl_import_certificate",
-		function_args => [ 
+		function_args => [
 			{
 				type => "STRING",
 				name => "url",
 				help_string => "FTP, TFTP or HTTP URL",
 				optional => "YES",
 				default_value => "\"\"",
-			}, 
+			},
 		],
 	},
 	{
@@ -19615,7 +20014,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "     Set the SSL protocols supported by RESTful API",
 		function_name => "restfulapi_ssl_set_protocol",
-		function_args => [ 
+		function_args => [
 			{
 				type => "STRING",
 				help_string => "SSL protocol version(SSLv3, TLSv1, TLSv11, TLSv12, or \\\"ALL\\\" for all versions, use colons to separate)",
@@ -19631,12 +20030,12 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "     Set the cipher suites supported by RESTful API",
 		function_name => "restfulapi_ssl_set_ciphersuites",
-		function_args => [ 
+		function_args => [
 			{
 				type => "STRING",
 				help_string => "New cipher suite",
 				optional => "NO",
-			}, 
+			},
 		],
 	},
 	{
@@ -19661,7 +20060,7 @@
 				type => "IPADDR",
 				help_string => "Source IP (IPv4 in 10.0.0.0 format or IPv6 in ff:fe::0 format)",
 				optional => "NO",
-			}, 
+			},
 			{
 				type => "IPMASK",
 				help_string => "Netmask for IPv4(e.g. 255.255.255.0), or prefix length for IPv6, in range [1,128]",
@@ -19838,7 +20237,7 @@
         user_level => "CLI_LEVEL_CONFIG",
         function_name => "delete_activation_server",
         function_args => [],
-    }, 
+    },
     {
         obj_type => "ITEM",
         name => "activationserver",
@@ -19974,12 +20373,12 @@
                 type => "IPADDR",
                 help_string => "Source IP (ipv4 in 10.0.0.0 format or IPv6 in ff:fe::0 format)",
                 optional => "NO",
-            }, 
+            },
             {
                 type => "IPMASK",
                 help_string => "Netmask for IPv4(e.g. 255.255.255.0), or prefix length for IPv6, in range [1,128]",
                 optional => "NO",
-            },          
+            },
             {
                 type => "STRING",
                 help_string => "The action of this rule (permit or deny. default is permit)",
@@ -20104,7 +20503,7 @@
 				},
 				{
 					type => "STRING",
-					help_string => "The full filename of the certificate, default is <Host name>.crt",  
+					help_string => "The full filename of the certificate, default is <Host name>.crt",
                     optional =>"NO",
                 },],
 	},
@@ -20291,7 +20690,7 @@
 								optional => "NO",
 								}, ],
 	},
-	
+
     {
         obj_type => "MENU",
         name => "webui",
@@ -20300,7 +20699,7 @@
         help_string => "Delete WEBUI settings",
         cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
         user_level => "CLI_LEVEL_CONFIG",
-    },   
+    },
     {
         obj_type => "ITEM",
         name => "source",
@@ -20313,7 +20712,7 @@
                 type => "IPADDR",
                 help_string => "Source IP (ipv4 in 10.0.0.0 format or IPv6 in ff:fe::0 format)",
                 optional => "NO",
-            }, 
+            },
             {
                 type => "IPMASK",
                 help_string => "Netmask for IPv4(e.g. 255.255.255.0), or prefix length for IPv6, in range [1,128]",
@@ -20360,7 +20759,7 @@
         help_string => "Delete WEBUI two-fatcor settings",
         cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
         user_level => "CLI_LEVEL_ENGINEER",
-    }, 
+    },
 	{
 		obj_type => "MENU",
 		name => "webui",
@@ -20548,7 +20947,7 @@
 		function_name => "webui_ssl_show_config",
 		function_args => [],
 	},
-	
+
         # Bug 23432, huangyf, 20090825
 	{
 		obj_type => "MENU",
@@ -20573,7 +20972,7 @@
 						help_string => "Interface name ([system]|all|[vlan]|[mnet]|[bond], default=all)",
 						optional => "YES",
 						default_value => "\"all\"",
-					}, 
+					},
 		                 ],
         },
         # Bug 23432, end
@@ -20607,7 +21006,7 @@
 		user_level => "CLI_LEVEL_USER",
 		function_name => "quit_acc_level",
 		function_args => [],
-	},       
+	},
 
 	{
 		obj_type => "ITEM",
@@ -20631,7 +21030,7 @@
 									type => "STRING",
 									help_string => "Source IP or IP group",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "STRING",
 									help_string => "Netmask for source IP",
@@ -20646,7 +21045,7 @@
 									type => "STRING",
 									help_string => "Destination IP, domain name or IP group",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "STRING",
 									help_string => "Netmask for destination IP",
@@ -20667,7 +21066,7 @@
 									help_string => "Gateway IP",
 									optional => "NO",
 								},
-								#Temporary fix bug87414 
+								#Temporary fix bug87414
 								{
 									type => "U32",
 									help_string => "Weight for weighted round robin or hash ip method(default = 1, range is 1-1048576)",
@@ -20675,8 +21074,8 @@
 									default_value => "1",
 								},],
 	},
-	
-	
+
+
 	{
 		obj_type => "ITEM",
 		name => "eroute",
@@ -20700,7 +21099,7 @@
 		menu => "root_clear_ip",
 		function_name => "eroute_clear",
 		function_args => [],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "droute",
@@ -20724,7 +21123,7 @@
 					help_string => "What to show, ipv4 or ipv6",
 					optional => "YES",
 					default_value => "\"\"",
-                                                }, 
+                                                },
 						{
 							type => "STRING",
 							help_string => "Optional, valid or invalid or all can list all eroutes including generated by ipregion",
@@ -20767,7 +21166,7 @@
 									type => "IPADDR",
 									help_string => "Destination IP",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "STRING",
 									help_string => "Netmask for IPv4(e.g. 255.255.255.0), or prefix length for IPv6, in range [1,128]",
@@ -20815,7 +21214,7 @@
                                                                         type => "STRING",
                                                                         help_string => "Gateway IP",
                                                                         optional => "NO",
-                                                                }, ],  
+                                                                }, ],
 	},
 	{
 		obj_type => "ITEM",
@@ -20826,7 +21225,7 @@
 		menu => "root_clear_ip",
 		function_name => "clear_route",
 		function_args => [],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "route",
@@ -21027,7 +21426,7 @@
 		parent_menu => "root_ip",
 		uniq_name => "root_ip_rts",
 	},
-	
+
 	{
 		obj_type => "ITEM",
 		name => "on",
@@ -21035,13 +21434,13 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		menu => "root_ip_rts",
-        function_name => "rts_on",		
+        function_name => "rts_on",
         function_args => [{
                     type => "STRING",
                     help_string => "rts mode [gateway|all]. The default is all mode.\\ngateway mode: rts record external senders as configured gateways.\\nall mode: rts record all external senders that send packets to the unit.",
                     optional => "YES",
                     default_value => "\"all\"",},
-            ],		
+            ],
 	},
 	{
 		obj_type => "ITEM",
@@ -21067,7 +21466,7 @@
 					optional => "YES",
 					default_value => "60",},
 		    ],
-	},		
+	},
 	{
 		obj_type => "ITEM",
 		name => "rts",
@@ -21090,7 +21489,7 @@
 	},
 
 	# begin DPI CLI
-	# begin DPI 
+	# begin DPI
 	{
 		obj_type => "MENU",
 		parent_menu => ".",
@@ -21257,7 +21656,7 @@
 						help_string => "Application protocol name (the max length of name is 40 characters)",
 						optional => "NO",
 						length => ["1", "40"],
-					},					
+					},
 					],
 	},
 	{
@@ -21274,18 +21673,18 @@
 						help_string => "Application protocol name",
 						optional => "NO",
 						length => ["1", "40"],
-					},					
+					},
 					{
 						type => "U16",
 						help_string => "Port number. The range is [1,65535]",
 						optional => "NO",
-					}, 
+					},
 					{
 						type => "STRING",
 						help_string => "Protocol type (tcp or udp)",
 						optional => "NO",
 						length => ["1", "3"],
-					},	
+					},
 				],
 	},
 	{
@@ -21377,9 +21776,9 @@
 					},
 		],
 	},
-# end DPI 
-	
-	# begin no DPI 
+# end DPI
+
+	# begin no DPI
 	{
 		obj_type => "MENU",
 		name => "dpi",
@@ -21471,7 +21870,7 @@
 		function_name => "no_dpi_update_profile",
 		function_args => 	[],
 	},
-	
+
 	{
 		obj_type => "ITEM",
 		name => "profile",
@@ -21485,13 +21884,13 @@
 						type => "STRING",
 						help_string => "Application protocol name",
 						optional => "NO",
-						length => ["1", "40"],							
+						length => ["1", "40"],
 					},
 					{
 						type => "STRING",
 						help_string => "Profile name(the max length of name is 40)",
 						optional => "YES",
-						length => ["0", "40"],	
+						length => ["0", "40"],
 						default_value => "\"\"",
 					},
 		],
@@ -21509,7 +21908,7 @@
 						type => "STRING",
 						help_string => "Profile name(the max length of name is 40)",
 						optional => "NO",
-						length => ["1", "40"],							
+						length => ["1", "40"],
 					},
 		],
 	},
@@ -21549,7 +21948,7 @@
 						type => "STRING",
 						help_string => "Application protocol name",
 						optional => "NO",
-						length => ["1", "40"],							
+						length => ["1", "40"],
 					},
 					{
 						type => "U16",
@@ -21560,7 +21959,7 @@
 						type => "STRING",
 						help_string => "Protocol type (tcp or udp)",
 						optional => "NO",
-						length => ["1", "3"],							
+						length => ["1", "3"],
 					},
 		],
 	},
@@ -21577,7 +21976,7 @@
 						type => "STRING",
 						help_string => "Application protocol name",
 						optional => "NO",
-						length => ["1", "40"],							
+						length => ["1", "40"],
 					},
 					{
 						type => "IPADDR",
@@ -21629,10 +22028,10 @@
 						length => ["1", "40"],
 					}, ],
 	},
-	# end no DPI 
-	
+	# end no DPI
+
 	# begin show DPI
-	{     
+	{
 		obj_type => "MENU",
 		name => "dpi",
 		parent_menu => "root_show",
@@ -21641,7 +22040,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show dpi configuration",
 	},
-	{     
+	{
 		obj_type => "MENU",
 		name => "apply",
 		parent_menu => "root_show_dpi",
@@ -21650,7 +22049,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show dpi apply configuration",
 	},
-	{     
+	{
 		obj_type => "MENU",
 		name => "link",
 		parent_menu => "root_show_dpi_apply",
@@ -21659,7 +22058,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show dpi apply link configuration",
 	},
-	{     
+	{
 		obj_type => "MENU",
 		name => "protocol",
 		parent_menu => "root_show_dpi",
@@ -21668,7 +22067,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show custom application protocol configuration",
 	},
-	{     
+	{
 		obj_type => "MENU",
 		name => "rule",
 		parent_menu => "root_show_dpi_protocol",
@@ -21677,7 +22076,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show rules configured for custom application protocols",
 	},
-	{     
+	{
 		obj_type => "MENU",
 		name => "import",
 		parent_menu => "root_show_dpi",
@@ -21686,7 +22085,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show dpi import configuration",
 	},
-	{     
+	{
 		obj_type => "MENU",
 		name => "update",
 		parent_menu => "root_show_dpi",
@@ -21695,7 +22094,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show dpi update configuration",
 	},
-	{     
+	{
 		obj_type => "MENU",
 		name => "profile",
 		parent_menu => "root_show_dpi_update",
@@ -21704,7 +22103,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show dpi update profile configuration.",
 	},
-	{     
+	{
 		obj_type => "MENU",
 		name => "attach",
 		parent_menu => "root_show_dpi",
@@ -21856,7 +22255,7 @@
 		function_name => "show_dpi_update_profile",
 		function_args => [],
 	},
-	
+
 	{
 		obj_type => "ITEM",
 		name => "profile",
@@ -21912,10 +22311,10 @@
 					},
 		],
 	},
-	
-	# end show DPI 
-	# begin clear DPI 
-	{     
+
+	# end show DPI
+	# begin clear DPI
+	{
 		obj_type => "MENU",
 		name => "dpi",
 		parent_menu => "root_clear",
@@ -21923,7 +22322,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear dpi configuration",
-	},    
+	},
 	{
 		obj_type => "MENU",
 		name => "update",
@@ -22063,14 +22462,14 @@
 						optional => "YES",
 						length => ["0", "40"],
 						default_value => "\"\"",
-					}, 
+					},
 					{
 						type => "STRING",
 						help_string => "Protocol type (tcp or udp, default is both).",
 						optional => "YES",
 						length => ["0", "3"],
 						default_value => "\"\"",
-					}, 
+					},
 				],
 	},
 	{
@@ -22145,9 +22544,9 @@
 		],
 	},
 	# end clear DPI
-	
+
 # end DPI CLI
-	
+
         {
                 obj_type => "MENU",
                 name => "llb",
@@ -22247,25 +22646,25 @@
 					type => "U16",
 					help_string => "Remote port for TCP (Range: 0 to 65535; Default: 0). For ICMP, this parameter will be ignored.",
 					optional => "YES",
-				      	default_value => "0", 
+				      	default_value => "0",
 				},
 				{
 					type => "U16",
 					help_string => "Health check interval. Default is 30 seconds, minimum is 5 seconds and maximum is 300 seconds. If more than 400 remote site net segments are configured, then the interval should not be less than 10 seconds; If more than 800 remote site net segments are configured, then the interval should not be less than 15 seconds.",
 					optional => "YES",
-				      	default_value => "30", 
+				      	default_value => "30",
 				},
 				{
 					type => "U16",
 					help_string => "Continuous up(default = 3)",
 					optional => "YES",
-				      	default_value => "3", 
+				      	default_value => "3",
 				},
 				{
 					type => "U16",
 					help_string => "Continuous down(default = 3)",
 					optional => "YES",
-				      	default_value => "3", 
+				      	default_value => "3",
 				},],
         },
 	{
@@ -22300,7 +22699,7 @@
 					type => "IPADDR",
 					help_string => "Remote site detect IP address",
 					optional => "YES",
-				      	default_value => "\"\"", 
+				      	default_value => "\"\"",
 				},],
         },
 	{
@@ -22543,7 +22942,7 @@
                 user_level => "CLI_LEVEL_CONFIG",
                 function_name => "llb_method_inbound_proximity",
                 function_args => [],
-        },        
+        },
         {
                 obj_type => "MENU",
                 name => "outbound",
@@ -22820,7 +23219,7 @@
 						type => "IPADDR",
 						help_string => "IP subnet",
 						optional => "NO",
-				}, 
+				},
 				{
 						type => "IPMASK",
 						help_string => "Netmask for IPv4(e.g. 255.255.255.0 or 24)",
@@ -22852,7 +23251,7 @@
 			function_name => "llb_dns_proxy_off",
 			function_args => [],
 		},
-                   
+
 # wangjx: dnsproxy  end
 
 # llb link health
@@ -22962,7 +23361,7 @@
                                      type => "STRING",
                                      help_string => "Remote host name or ip address with quotation mark",
                                      optional => "NO",
-                                    },  
+                                    },
                                     {
                                     type => "U16",
                                     help_string => "Health check interval(default = 10 seconds)",
@@ -23005,7 +23404,7 @@
                                      type => "STRING",
                                      help_string => "Remote host name or ip address with quotation mark",
                                      optional => "NO",
-                                    },  
+                                    },
                                     {
                                     type => "U16",
                                     help_string => "Remote port",
@@ -23053,7 +23452,7 @@
                                      type => "STRING",
                                      help_string => "Remote host name or ip address with quotation mark",
                                      optional => "NO",
-                                    },  
+                                    },
                                     {
 				          type => "STRING",
 				          help_string => "Domain name",
@@ -23083,7 +23482,7 @@
                                     optional => "YES",
                                     default_value => "3",
 				  },],
-        },        
+        },
 #llb link bandwidth
         {
                 obj_type => "ITEM",
@@ -23093,7 +23492,7 @@
                 cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
                 user_level => "CLI_LEVEL_CONFIG",
                 function_name => "set_llb_bandwidth_priority",
-                function_args => [ 
+                function_args => [
                                  {
                                     type => "U32",
                                     help_string => "llb link bandwidth priority( 0 - 1999, default = 1800 )",
@@ -23135,20 +23534,20 @@
 				      help_string => "Weight",
 				      optional => "YES",
 				      default_value => "1",
-				  }, 
-				  # Bug 15403, LiBo, 20070326 
+				  },
+				  # Bug 15403, LiBo, 20070326
 				  {
 				      type => "U16",
 				      help_string => "Port",
 				      optional => "YES",
 				      default_value => "0",
-				  },			
+				  },
 				  {
 				      type => "STRING",
 				      help_string => "Link name",
 				      optional => "YES",
-				      default_value => "\"\"", 
-				  },				  
+				      default_value => "\"\"",
+				  },
 				  ],
         },
         {
@@ -23159,7 +23558,7 @@
                 cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
                 user_level => "CLI_LEVEL_CONFIG",
                 function_name => "llb_dns_ttl",
-                function_args => [ 
+                function_args => [
 				   {
 				       type => "STRING",
 				       help_string => "Hostname (in www.xyz.com format)",
@@ -23179,7 +23578,7 @@
                 cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
                 user_level => "CLI_LEVEL_CONFIG",
                 function_name => "llb_dns_replycount",
-                function_args => [ 
+                function_args => [
 				   {
 				       type => "STRING",
 				       help_string => "Hostname (in www.xyz.com format)",
@@ -23243,7 +23642,7 @@
                 user_level => "CLI_LEVEL_ENABLE",
                 parent_menu => "root_show_llb_link",
                 uniq_name => "root_show_llb_link_health",
-        },        
+        },
         {
                 obj_type => "ITEM",
                 name => "checker",
@@ -23343,37 +23742,37 @@
 				      optional => "YES",
 				      default_value => "NULL",
 				  }, ],
-        },        
+        },
         {
                 obj_type => "ITEM",
                 name => "bandwidth",
                 help_string => "Display llb bandwidth statistics ",
                 cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_KERN_API |CMD_NORMAL|CMD_GLOBAL",
                 user_level => "CLI_LEVEL_ENABLE",
-                menu => "root_show_llb_link",                
+                menu => "root_show_llb_link",
                 function_name => "show_llb_bandwidth_statistics",
                 function_args => [],
-        },                
+        },
 	{
                 obj_type => "ITEM",
                 name => "connection",
                 help_string => "Display llb connection statistics ",
                 cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API |CMD_NORMAL|CMD_GLOBAL",
                 user_level => "CLI_LEVEL_ENABLE",
-                menu => "root_show_llb_link",                
+                menu => "root_show_llb_link",
                 function_name => "show_llb_link_connections",
                 function_args => [],
-        },    
+        },
         {
                 obj_type => "ITEM",
                 name => "bw_priority",
                 help_string => "Display llb bandwidth priority",
                 cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL|CMD_GLOBAL",
                 user_level => "CLI_LEVEL_ENABLE",
-                menu => "root_show_llb_link",                
+                menu => "root_show_llb_link",
                 function_name => "show_llb_bandwidth_priority",
                 function_args => [],
-        },                
+        },
         {
                 obj_type => "MENU",
                 parent_menu => ".",
@@ -23477,7 +23876,7 @@
 						type => "IPADDR",
 						help_string => "IP subnet",
 						optional => "NO",
-				}, 
+				},
 				{
 						type => "IPMASK",
 						help_string => "Netmask for IPv4(e.g. 255.255.255.0 or 24)",
@@ -23551,7 +23950,7 @@
 						help_string => "IP subnet",
 						optional => "YES",
 						default_value =>  "\"\"",
-				}, 
+				},
 				{
 						type => "IPMASK",
 						help_string => "Netmask for IPv4(e.g. 255.255.255.0 or 24)",
@@ -23630,7 +24029,7 @@
                 function_name => "clear_llb_dnsproxy_network",
                 function_args => [],
         },
-        
+
         # wangjx: dnsproxy end
         {
                 obj_type => "MENU",
@@ -23649,7 +24048,7 @@
                 cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
                 user_level => "CLI_LEVEL_CONFIG",
                 help_string => "Remove health checker",
-        },        
+        },
         {
                 obj_type => "ITEM",
                 name => "icmp",
@@ -23716,7 +24115,7 @@
   				          help_string => "Domain name",
 				          optional => "NO",
 				  },],
-        },        
+        },
 # Bug 13978, end
         {
                 obj_type => "MENU",
@@ -23888,7 +24287,7 @@
 				type => "IPADDR",
 				help_string => "Source IP",
 				optional => "NO",
-			}, 
+			},
 			{
 				type => "U16",
 				help_string => "Source port",
@@ -23898,7 +24297,7 @@
 				type => "IPADDR",
 				help_string => "Destination IP",
 				optional => "NO",
-			}, 
+			},
 			{
 				type => "U16",
 				help_string => "Destination port",
@@ -23917,7 +24316,7 @@
 				type => "IPADDR",
 				help_string => "Source IP",
 				optional => "NO",
-			}, 
+			},
 			{
 				type => "U16",
 				help_string => "Source port",
@@ -23927,7 +24326,7 @@
 				type => "IPADDR",
 				help_string => "Destination IP",
 				optional => "NO",
-			}, 
+			},
 			{
 				type => "U16",
 				help_string => "Destination port",
@@ -24183,17 +24582,17 @@
                 parent_menu => "root_system",
                 uniq_name => "root_system_test",
                 cmd_attribute => "CMD_SPROXY|CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
-                user_level => "CLI_LEVEL_CONFIG",       
-                help_string => "System diagnostic tools",    
+                user_level => "CLI_LEVEL_CONFIG",
+                help_string => "System diagnostic tools",
         },
-        {      
+        {
                obj_type => "MENU",
                name => "failover",
                parent_menu => "root_system_test",
                uniq_name => "root_system_test_failover",
                cmd_attribute => "CMD_SPROXY|CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
                user_level => "CLI_LEVEL_CONFIG",
-               help_string => "Failover diagnostic tools",       
+               help_string => "Failover diagnostic tools",
         },
         {
                obj_type => "ITEM",
@@ -24202,7 +24601,7 @@
                help_string => "Failover port diagnostic tool",
                cmd_attribute => "CMD_SPROXY|CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
                user_level => "CLI_LEVEL_CONFIG",
-               function_name => "ui_test_ffo_port",    
+               function_name => "ui_test_ffo_port",
                function_args => [ {
 					type => "STRING",
 					help_string => "",
@@ -24217,7 +24616,7 @@
                help_string => "port stress tool",
                cmd_attribute => "CMD_SPROXY|CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
                user_level => "CLI_LEVEL_ENGINEER",
-               function_name => "test_interface",    
+               function_name => "test_interface",
                function_args => [
 					{
 						type => "STRING",
@@ -24267,24 +24666,24 @@
 				}, ],
         },
 	{
-		obj_type => "MENU", 
-		name => "console", 
-		parent_menu => "root_system", 
-		uniq_name => "root_system_console", 
-		cmd_attribute => "CMD_SPROXY|CMD_ARRAYOS|CMD_NORMAL", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		help_string => "Console operation", 
-	}, 
-	{ 
-		obj_type => "ITEM", 
-		name => "reset", 
-		menu => "root_system_console", 
-		help_string => "Reset system console", 
-		cmd_attribute => "CMD_SPROXY|CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "ui_console_reset", 
-		function_args => [], 
-	}, 
+		obj_type => "MENU",
+		name => "console",
+		parent_menu => "root_system",
+		uniq_name => "root_system_console",
+		cmd_attribute => "CMD_SPROXY|CMD_ARRAYOS|CMD_NORMAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Console operation",
+	},
+	{
+		obj_type => "ITEM",
+		name => "reset",
+		menu => "root_system_console",
+		help_string => "Reset system console",
+		cmd_attribute => "CMD_SPROXY|CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "ui_console_reset",
+		function_args => [],
+	},
 	{
 			obj_type => "MENU",
 			name => "directfwd",
@@ -24445,7 +24844,7 @@
                                         optional => "YES",
                                         default_value => "\"interactive\"",
                                         },],
-	},		
+	},
 	{
 	        obj_type => "ITEM",
                 name => "restart",
@@ -24463,13 +24862,13 @@
                                 ],
    },
 	{
-		obj_type => "MENU", 
-		name => "registration", 
-		parent_menu => ".", 
-		uniq_name => "root_registration", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
-		user_level => "CLI_LEVEL_ENGINEER", 
-		help_string => "Array Appliance Registration Status ", 
+		obj_type => "MENU",
+		name => "registration",
+		parent_menu => ".",
+		uniq_name => "root_registration",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
+		user_level => "CLI_LEVEL_ENGINEER",
+		help_string => "Array Appliance Registration Status ",
 	},
 	{
 		obj_type => "ITEM",
@@ -24495,7 +24894,7 @@
 		function_name => "registration_status",
 		function_args => [],
 	},
- 	{ 		
+ 	{
  		obj_type => "ITEM",
  		name => "serialnumber",
  		help_string => "Manually generate vAPV's serial number",
@@ -24536,7 +24935,7 @@
 		function_args => [ {
 			                type => "STRING",
 			                help_string => "halt:halt system but not turn off power.\\npoweroff:halt system and turn off power.\\n(default poweroff)",
-			                optional => "YES", 
+			                optional => "YES",
 			                default_value => "\"poweroff\"",
 			                },
 			                {
@@ -24580,7 +24979,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_conf_timeout",
 		function_args => [],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "file",
@@ -24610,8 +25009,8 @@
 		help_string => "Configure SSL interception",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-	}, 
-	{   
+	},
+	{
 		obj_type => "ITEM",
 		name => "on",
 		menu => "root_ssli",
@@ -24622,18 +25021,18 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "SSL host name",
-				optional => "NO", 
-			},    
-			{     
+				optional => "NO",
+			},
+			{
 				type => "U32",
 				help_string => "Distribution mode: \\n\\r0-> Ingress and egress are distributed on two devices.\\n\\r1-> Ingress and egress are integrated on one device.",
 				optional => "No",
-			},   
+			},
 		],
 	},
-	{     
+	{
 		obj_type => "ITEM",
-		name => "off", 
+		name => "off",
 		menu => "root_ssli",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_INTERACTIVE|CMD_EXTRA_FILE",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -24642,10 +25041,10 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "SSL host name",
-				optional => "NO", 
-			},    
-		],    
-	},  
+				optional => "NO",
+			},
+		],
+	},
 	{
 		obj_type => "MENU",
 		name => "settings",
@@ -24655,14 +25054,14 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Modify SSL interception settings",
 	},
-	{ 
-		obj_type => "MENU", 
-		name => "certcache", 
-		parent_menu => "root_ssli_settings", 
-		uniq_name => "root_ssli_settings_certcache", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		help_string => "Configure certificate cache for SSL interception", 
+	{
+		obj_type => "MENU",
+		name => "certcache",
+		parent_menu => "root_ssli_settings",
+		uniq_name => "root_ssli_settings_certcache",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Configure certificate cache for SSL interception",
 	},
 	{
 		obj_type => "ITEM",
@@ -24676,7 +25075,7 @@
 				type => "U32",
 				help_string => "Expiration time value, ranging from 60 to 86400, in seconds",
 				optional => "NO",
-			},],   
+			},],
 	},
     {
         obj_type => "ITEM",
@@ -24689,9 +25088,9 @@
         function_args => [ {
                     type => "STRING",
                     help_string => "Virtual host name",
-                    optional => "NO", 
-                }, ], 
-    }, 
+                    optional => "NO",
+                }, ],
+    },
 	{
 		obj_type => "MENU",
 		name => "cacert",
@@ -24700,7 +25099,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Generate a CA certificate for SSL interception",
-	},    
+	},
 	{
 		obj_type => "ITEM",
 		name => "ecc",
@@ -24712,27 +25111,27 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "Virtual host name",
-				optional => "NO", 
-			},    
-			{     
+				optional => "NO",
+			},
+			{
 				type => "STRING",
 				help_string => "Elliptic curve name. The supported values are prime256v1, secp384r1 and secp521r1 (Default = prime256v1).",
 				optional => "YES",
 				default_value => "\"prime256v1\"",
-			},    
-			{     
+			},
+			{
 				type => "U32",
 				help_string => "Certificate index. The index value should be 1, 2 or 3. (Default = 1)",
 				optional => "YES",
-				default_value => 1, 
-			},    
-			{     
+				default_value => 1,
+			},
+			{
 				type => "U32",
 				help_string => "Signature algorithm index for the CA certificate:\\n\\r1->sha256ECDSA.\\n\\r2->sha384ECDSA.\\n\\r3->sha512ECDSA.\\n\\r4->sha1ECDSA.\\n\\rThe default index is 1.",
 				optional => "YES",
-				default_value => 1, 
-			},    
-		],    
+				default_value => 1,
+			},
+		],
 	},
 	{
 		obj_type => "ITEM",
@@ -24778,7 +25177,7 @@
 		help_string => "Configure website classification for SSL interception",
 	},
 #ssli webclassify on
-	{   
+	{
 		obj_type => "ITEM",
 		name => "on",
 		menu => "root_ssli_webclassify",
@@ -24789,12 +25188,12 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "SSL virtual host name",
-				optional => "NO", 
-			},    
+				optional => "NO",
+			},
 		],
 	},
 #ssli webclassify off
-	{   
+	{
 		obj_type => "ITEM",
 		name => "off",
 		menu => "root_ssli_webclassify",
@@ -24805,11 +25204,11 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "SSL virtual host name",
-				optional => "NO", 
-			},    
+				optional => "NO",
+			},
 		],
 	},
-	{   
+	{
 		obj_type => "ITEM",
 		name => "defaction",
 		menu => "root_ssli_webclassify",
@@ -24820,24 +25219,24 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "SSL virtual host name",
-				optional => "NO", 
-			},    
-			{     
+				optional => "NO",
+			},
+			{
 				type => "U32",
 				help_string => "Action: \\n\\r0-> Intercept traffic accessing unrecognized websites\\n\\r1-> Bypass traffic accessing unrecognized websites",
 				optional => "YES",
 				default_value => "0",
-			},   
+			},
 		],
 	},
-	{ 
-		obj_type => "MENU", 
-		name => "url", 
-		parent_menu => "root_ssli_webclassify", 
-		uniq_name => "root_ssli_webclassify_url", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		help_string => "Configure URL settings", 
+	{
+		obj_type => "MENU",
+		name => "url",
+		parent_menu => "root_ssli_webclassify",
+		uniq_name => "root_ssli_webclassify_url",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Configure URL settings",
 	},
 	{
 		obj_type => "ITEM",
@@ -24857,7 +25256,7 @@
                 help_string => "Category name (Please enclose the category name by double quotes)",
                 optional => "No",
             },
-        ],	
+        ],
 	},
 # ssli webclassify url intercept
 	{
@@ -24878,7 +25277,7 @@
                 help_string => "Category name (Please enclose the category name by double quotes)",
                 optional => "No",
             },
-        ],	
+        ],
 	},
 #end ssli webclassify
 	{
@@ -24890,7 +25289,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Configure SSL interception domainlist",
 	},
-	{   
+	{
 		obj_type => "ITEM",
 		name => "on",
 		menu => "root_ssli_domainlist",
@@ -24900,7 +25299,7 @@
 		function_name => "ssli_domainlist_on",
 		function_args => [],
 	},
-	{   
+	{
 		obj_type => "ITEM",
 		name => "off",
 		menu => "root_ssli_domainlist",
@@ -24910,7 +25309,7 @@
 		function_name => "ssli_domainlist_off",
 		function_args => [],
 	},
-	{ 
+	{
 		obj_type => "ITEM",
 		name => "list",
 		menu => "root_ssli_domainlist",
@@ -24930,7 +25329,7 @@
 			},
 		],
 	},
-	{   
+	{
 		obj_type => "ITEM",
 		name => "item",
 		menu => "root_ssli_domainlist",
@@ -24959,7 +25358,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Apply a list or an domain item",
 	},
-	{   
+	{
 		obj_type => "ITEM",
 		name => "list",
 		menu => "root_ssli_domainlist_apply",
@@ -24979,7 +25378,7 @@
 			},
 		],
 	},
-	{   
+	{
 		obj_type => "ITEM",
 		name => "item",
 		menu => "root_ssli_domainlist_apply",
@@ -25004,7 +25403,7 @@
 			},
 		],
 	},
-#webclassify 
+#webclassify
 	{
 		obj_type => "MENU",
 		name => "webclassify",
@@ -25013,7 +25412,7 @@
 		help_string => "Configure website classification settings",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-	}, 
+	},
 #webclassify license  for engnior
     {
         obj_type => "ITEM",
@@ -25060,7 +25459,7 @@
 #webclassify  on
     {
         obj_type => "ITEM",
-        name => "on", 
+        name => "on",
         menu => "root_webclassify",
         help_string => "Enable website classification",
         cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
@@ -25088,7 +25487,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Enable or disable online website classification lookup",
-	}, 
+	},
 #webclassify cloud on
     {
         obj_type => "ITEM",
@@ -25142,7 +25541,7 @@
 								type => "STRING",
 								help_string => "Virtual host name",
 								optional => "NO",
-							}, 
+							},
 							{
 								type => "STRING",
 								help_string => "SLB virtual name",
@@ -25164,7 +25563,7 @@
 								type => "STRING",
 								help_string => "Real host name",
 								optional => "NO",
-							}, 
+							},
 							{
 								type => "STRING",
 								help_string => "SLB real service name",
@@ -25223,7 +25622,7 @@
 									type => "STRING",
 									help_string => "SSL vhost name",
 									optional => "NO",
-							}, 
+							},
 							{
 									type => "U16",
 									help_string => "OID index, an integer ranging from the maximum number of vhost to twice this number.",
@@ -25331,18 +25730,18 @@
         user_level => "CLI_LEVEL_ENABLE",
         help_string => "Export signature Private key of the host",
         function_name => "show_sm2_encrypted_signkey",
-        function_args => [ 
+        function_args => [
 							{
 								type => "STRING",
 								help_string => "Host name",
 								optional => "NO",
-							}, 
+							},
 							{
 								type => "U32",
 								help_string => "Key index. The key index value must be 0, 1, 2 or 3. The default value is 0, indicating the activated key will be displayed.",
 								optional => "YES",
 								default_value => 0,
-							},	
+							},
 						 ],
     },
 	{
@@ -25353,7 +25752,7 @@
         user_level => "CLI_LEVEL_ENABLE",
         help_string => "Export encryption Private key of the host",
         function_name => "show_sm2_encrypted_enckey",
-        function_args => [ 
+        function_args => [
 							{
                                     type => "STRING",
                                     help_string => "Host name",
@@ -25375,7 +25774,7 @@
         user_level => "CLI_LEVEL_ENABLE",
         help_string => "Export encryption challenge key of the host",
         function_name => "show_sm2_encrypted_challengekey",
-        function_args => [ 
+        function_args => [
 							{
                                     type => "STRING",
                                     help_string => "Host name",
@@ -25523,7 +25922,7 @@
                                 default_value => "\"\"",
                             },
                         ],
-    
+
 	},
     {
         obj_type => "ITEM",
@@ -25709,7 +26108,7 @@
 				},
 				{
 					type => "STRING",
-					help_string => "The full filename of the key, default is <Host name>.key",  
+					help_string => "The full filename of the key, default is <Host name>.key",
 					optional =>"YES",
 					default_value => "\"\"",
 				},
@@ -25746,14 +26145,14 @@
 					optional => "YES",
 					default_value => 0,
 				},
-				#Bug 17766, chenyl, 20071023 
+				#Bug 17766, chenyl, 20071023
 				{
 					type => "STRING",
-					help_string => "The full filename of the key, default is <Host name>.key",  
+					help_string => "The full filename of the key, default is <Host name>.key",
 					optional =>"YES",
 					default_value => "\"\"",
 				},
-				#Bug 17766, end 
+				#Bug 17766, end
 				],
 	},
 	{
@@ -25783,7 +26182,7 @@
 								},
 								{
 									type => "STRING",
-									help_string => "The full filename of the certificate, default is <Host name>.crt",  
+									help_string => "The full filename of the certificate, default is <Host name>.crt",
                                                                         optional =>"YES",
                                                                         default_value => "\"\"",
                                                                 },
@@ -25821,7 +26220,7 @@
 								},
 								{
 									type => "STRING",
-									help_string => "The full filename of the certificate, default is <Host name>.crt",  
+									help_string => "The full filename of the certificate, default is <Host name>.crt",
                                                                         optional =>"YES",
                                                                         default_value => "\"\"",
                                                                 },
@@ -25859,7 +26258,7 @@
 								},
 								{
 									type => "STRING",
-									help_string => "Password for PFX file. Optional for PEM",  
+									help_string => "Password for PFX file. Optional for PEM",
                                                                         optional =>"YES",
                                                                         default_value => "\"\"",
                                                                 },
@@ -25899,7 +26298,7 @@
 					},
 					{
 						type => "STRING",
-						help_string => "Password for encrypted file",  
+						help_string => "Password for encrypted file",
 						optional =>"YES",
 						default_value => "\"\"",
 					},
@@ -25981,7 +26380,7 @@
 					},
 				],
 	},
-	#bug 15595, lingx, 20070403 
+	#bug 15595, lingx, 20070403
 	{
 		obj_type => "ITEM",
 		name => "clientcert",
@@ -26035,7 +26434,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Import intermediate CA certificate",
 		function_name => "ssl_import_interCA_vhost",
-		# bug 7607 liqin 
+		# bug 7607 liqin
 		function_args => [ {
 									type => "STRING",
 									help_string => "Virtual Host name",
@@ -26049,7 +26448,7 @@
 								},
 								{
 									type => "STRING",
-									help_string => "The full filename of interca",	
+									help_string => "The full filename of interca",
 									optional =>"YES",
 									default_value => "\"\"",
 								},
@@ -26082,11 +26481,11 @@
 								# Bug 15325, chenyl, 20070124
 								{
 									type => "STRING",
-									help_string => "The full filename of interca",	
+									help_string => "The full filename of interca",
 									optional =>"YES",
 									default_value => "\"\"",
 								},
-								# Bug 15325, end 
+								# Bug 15325, end
 						],
 	},
 	{
@@ -26097,7 +26496,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Import trusted CA certificate",
 		function_name => "ssl_import_rootca_vhost",
-		# bug 7607 liqin 
+		# bug 7607 liqin
 		function_args => [ {
 									type => "STRING",
 									help_string => "Host name, default is \\\"ALL\\\", which means it will be imported to the global root CA list",
@@ -26113,11 +26512,11 @@
 								# Bug 15325, chenyl, 20070124
 								{
 									type => "STRING",
-									help_string => "The full filename of rootca",	
+									help_string => "The full filename of rootca",
 									optional =>"YES",
 									default_value => "\"\"",
 								},
-								# Bug 15325, end 
+								# Bug 15325, end
 						],
 	},
 	{
@@ -26128,7 +26527,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Import trusted CA certificate",
 		function_name => "ssl_import_rootca_vhost_domain",
-		# bug 7607 liqin 
+		# bug 7607 liqin
 		function_args => [ {
 									type => "STRING",
 									help_string => "Host name",
@@ -26149,11 +26548,11 @@
 								# Bug 15325, chenyl, 20070124
 								{
 									type => "STRING",
-									help_string => "The full filename of rootca",	
+									help_string => "The full filename of rootca",
 									optional =>"YES",
 									default_value => "\"\"",
 								},
-								# Bug 15325, end 
+								# Bug 15325, end
 						],
 	},
 	{
@@ -26178,7 +26577,7 @@
 								},
 								{
 									type => "STRING",
-									help_string => "The full filename of CRL CA",	
+									help_string => "The full filename of CRL CA",
 									optional =>"YES",
 									default_value => "\"\"",
 								},
@@ -26212,11 +26611,11 @@
 								# Bug 15325, chenyl, 20070124
 								{
 									type => "STRING",
-									help_string => "The full filename of rootca",	
+									help_string => "The full filename of rootca",
 									optional =>"YES",
 									default_value => "\"\"",
 								},
-								# Bug 15325, end 
+								# Bug 15325, end
 						],
 	},
 	{
@@ -26227,23 +26626,23 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Import CRL filter",
 		function_name => "ssl_import_crlfilter",
-		function_args => [ { 
+		function_args => [ {
 									type => "STRING",
 									help_string => "CRL Distribution Point name",
 									optional => "NO",
                            		},
                            		{
                            			type => "DOTTEDIP",
-                           			help_string => "IP of remote TFTP server", 
+                           			help_string => "IP of remote TFTP server",
                            			optional => "NO",
-                           		}, 
+                           		},
                            		{
                            			type => "STRING",
                            			help_string => "The full filename of CRL filter conf",
                            			optional =>"YES",
                            			default_value => "\"\"",
                            		},],
-    },	
+    },
 	{
 		obj_type => "ITEM",
 		name => "error",
@@ -26309,7 +26708,7 @@
 					help_string => "SSL Host name, default is \\\"ALL\\\", which means the imported global error page will be loaded",
 					optional => "YES",
 					default_value => "\"ALL\"",
-				},		
+				},
 				],
 	},
 	{
@@ -26329,7 +26728,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Export Private key of the host",
 		function_name => "show_encrypted_key",
-		function_args => [ { 
+		function_args => [ {
 					type => "STRING",
 					help_string => "Host name",
 					optional => "NO",
@@ -26340,13 +26739,13 @@
 					optional => "YES",
 					default_value => 0,
 				   },
-				   { 
+				   {
 					type => "STRING",
 					help_string => "Server Name Indication. Input \\\"\\\" to skip.",
 					optional => "YES",
                     default_value => "\"\"",
 				   },
-				   { 
+				   {
 					type => "STRING",
 					help_string => "Key type. The key type can be \\\"rsa\\\", \\\"ecc\\\" or \\\"all\\\". The default is \\\"all\\\"",
 					optional => "YES",
@@ -26371,11 +26770,11 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Backup SSL private keys and certificates",
 		function_name => "backup_ssl_certificate",
-		function_args => [ { 
+		function_args => [ {
 						type => "STRING",
 						help_string => "Host name. Value \\\"all\\\" indicates all hosts.",
 						optional => "NO",
-					}, 
+					},
 					{
 						type => "STRING",
 						help_string => "File name",
@@ -26384,7 +26783,7 @@
 					{
 						type => "STRING",
 						help_string => "Password",
-						optional => "NO",								
+						optional => "NO",
 					},
 					{
 						type => "STRING",
@@ -26415,7 +26814,7 @@
 					type => "STRING",
 					help_string => "Host name. Value \\\"all\\\" indicates all hosts.",
 					optional => "NO",
-				   }, 
+				   },
 				   {
 					type => "STRING",
 					help_string => "File name",
@@ -26424,7 +26823,7 @@
 				   {
 					type => "STRING",
 					help_string => "Password",
-					optional => "NO",								
+					optional => "NO",
 				   },
 				   {
 					type => "STRING",
@@ -26433,7 +26832,7 @@
 					default_value => "\"\"",
 				   },
 				],
-	},	
+	},
 	{
 		obj_type => "MENU",
 		name => "backup",
@@ -26451,12 +26850,12 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show backup SSL private keys and certificates",
 		function_name => "show_backup_ssl_certificate",
-		function_args => [ { 
+		function_args => [ {
 						type => "STRING",
 						help_string => "Host name. Value \\\"all\\\" indicates all hosts.",
 						optional => "NO",
 				   },
-                                   { 
+                                   {
 						type => "STRING",
 						help_string => "Server Name Indication",
 						optional => "YES",
@@ -26481,7 +26880,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove backup SSL private keys and certificates",
 		function_name => "no_backup_ssl_certificate",
-		function_args => [ { 
+		function_args => [ {
 						type => "STRING",
 						help_string => "Host name",
 						optional => "NO",
@@ -26507,7 +26906,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove SSL certificate/key pairs",
 		function_name => "no_ssl_certificate",
-		function_args => [ { 
+		function_args => [ {
 						type => "STRING",
 						help_string => "Host name",
 						optional => "NO",
@@ -26516,14 +26915,14 @@
 					       type => "U32",
                                                help_string => "Certificate index. Index value should be 1, 2 or 3.",
                                                optional => "NO",
-					}, 
+					},
 					{
 					       type => "STRING",
                                                help_string => "Server Name Indication. Input \\\"\\\" to skip.",
                                                optional => "YES",
 	 	                               default_value => "\"\"",
 					},
-					{ 
+					{
 					type => "STRING",
 					help_string => "Certificate/key type. The certificate/key type can be \\\"rsa\\\", \\\"ecc\\\" or \\\"all\\\". The default is \\\"all\\\"",
 					optional => "YES",
@@ -26742,7 +27141,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove SSL host",
 		function_name => "ssl_clear_vhost_generic",
-		function_args => [ { 
+		function_args => [ {
 									type => "STRING",
 									help_string => "Host name",
 									optional => "NO",
@@ -27062,7 +27461,7 @@
 		function_name => "ssl_ignore_close_notify_off",
 		function_args => [],
 	},
-	# Bug 19095, chenyl, 20080424 
+	# Bug 19095, chenyl, 20080424
 	{
 		obj_type => "MENU",
 		name => "sendclosenotify",
@@ -27093,36 +27492,36 @@
 		function_args => [],
 	},
 	# Bug 19095, end
-	{       
+	{
 		obj_type => "MENU",
 		name => "fastcrl",
 		parent_menu => "root_ssl_globalsettings",
-		uniq_name => "root_ssl_globalsettings_fastcrl", 
+		uniq_name => "root_ssl_globalsettings_fastcrl",
 		help_string => "     Enable/disable memory CRL support",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
-		user_level => "CLI_LEVEL_CONFIG",           
-	},                        
-	{                                                       
-		obj_type => "ITEM",                             
-		name => "on",                                   
-		menu => "root_ssl_globalsettings_fastcrl",  
+		user_level => "CLI_LEVEL_CONFIG",
+	},
+	{
+		obj_type => "ITEM",
+		name => "on",
+		menu => "root_ssl_globalsettings_fastcrl",
 		help_string => "Enable memory CRL support",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
-		user_level => "CLI_LEVEL_CONFIG",               
-		function_name => "ssl_fastcrl_on",              
-		function_args => [],                        
-	},                        
-	{                                                       
-		obj_type => "ITEM",                             
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "ssl_fastcrl_on",
+		function_args => [],
+	},
+	{
+		obj_type => "ITEM",
 		name => "off",
-		menu => "root_ssl_globalsettings_fastcrl",      
+		menu => "root_ssl_globalsettings_fastcrl",
 		help_string => "Disable memory CRL support",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
-		user_level => "CLI_LEVEL_CONFIG",               
-		function_name => "ssl_fastcrl_off",             
-		function_args => [],                            
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "ssl_fastcrl_off",
+		function_args => [],
 	},
-	# Bug 19168, chenyl, 20080522 
+	# Bug 19168, chenyl, 20080522
 	{
 		obj_type => "MENU",
 		name => "crl",
@@ -27189,7 +27588,7 @@
 					optional => "NO",
 				},],
 	},
-	# Bug 19168, end 
+	# Bug 19168, end
 	{
 		obj_type => "ITEM",
 		name => "studyfilter",
@@ -27205,7 +27604,7 @@
         					},
         					{
                                 type => "U32",
-                                help_string => "Minutes between CRL filters studies, default is 10080", 
+                                help_string => "Minutes between CRL filters studies, default is 10080",
                                 optional => "YES",
                                 default_value => 10080,
                             },],
@@ -27225,7 +27624,7 @@
 									optional => "NO",
 								},],
 	},
-	#Bug 15772, end 
+	#Bug 15772, end
 	{
 		obj_type => "MENU",
 		name => "statistics",
@@ -27436,7 +27835,7 @@
 					optional => "NO",
 					},
 				],
-		
+
 	},
 	#changed by hyr,2005/01/05, for bug9586 client certificate subject verification
 	{
@@ -27526,7 +27925,7 @@
 						],
 	},
 
-	
+
 
 	{
 		obj_type => "ITEM",
@@ -27549,7 +27948,7 @@
 				 	help_string => " The 2nd filter string, the prefix \'subject:\' or \'issuer:\' should be specified (optional)",
 				 	optional => "YES",
 				 	default_value => "\"\"",
-				}, 
+				},
 							],
 	},
 	# bug 15120, lingx, 20070108
@@ -27681,7 +28080,7 @@
 								optional => "NO",
 							}, ],
 	},
-	#Bug 16859, chenyl, 20070703 	
+	#Bug 16859, chenyl, 20070703
 	{
 		obj_type => "MENU",
 		name => "crl",
@@ -27725,7 +28124,7 @@
 						default_value => 1440,
 						# Bug 15120, end */
 					},
-					# Bug 18973, chenyl, 20080403 
+					# Bug 18973, chenyl, 20080403
 					{
 						type => "U32",
 						help_string => "Delay time for nextupdate(in minutes), default is 0, which indicates nextupdate won't be checked",
@@ -27738,7 +28137,7 @@
 						optional => "YES",
 						default_value => 0,
 					},
-					# Bug 18973, end 
+					# Bug 18973, end
 				],
 	},
 	{
@@ -27781,7 +28180,7 @@
 					default_value => 1440,
 					# Bug 15120, end */
 				   },
-				   # Bug 18973, chenyl, 20080403 
+				   # Bug 18973, chenyl, 20080403
 				   {
 					type => "U32",
 					help_string => "Delay time for nextupdate(in minutes), default is 0, which indicates nextupdate won't be checked",
@@ -27794,7 +28193,7 @@
 						optional => "YES",
 						default_value => 0,
 					},
-				   # Bug 18973, end 
+				   # Bug 18973, end
 				 ],
  	},
 	{
@@ -28012,7 +28411,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Disable intercpetion host's settings",
-	},  
+	},
 	{
 		obj_type => "MENU",
 		name => "settings",
@@ -28033,8 +28432,8 @@
         function_args => [ {
 			                type => "STRING",
 			                help_string => "Virtual host name",
-			                optional => "NO", 
-			            }, ], 
+			                optional => "NO",
+			            }, ],
     },
 	{
 		obj_type => "MENU",
@@ -28045,7 +28444,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove a list or item or the application of a domainlist",
 	},
-	{   
+	{
 		obj_type => "ITEM",
 		name => "list",
 		menu => "root_no_ssli_domainlist",
@@ -28057,10 +28456,10 @@
 				type => "STRING",
 				help_string => "List name",
 				optional => "NO",
-			}, 
+			},
 		],
 	},
-	{   
+	{
 		obj_type => "ITEM",
 		name => "item",
 		menu => "root_no_ssli_domainlist",
@@ -28089,7 +28488,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Cancel the application of a domainlist",
 	},
-	{   
+	{
 		obj_type => "ITEM",
 		name => "list",
 		menu => "root_ssli_no_domainlist_apply",
@@ -28106,10 +28505,10 @@
 				type => "STRING",
 				help_string => "List name",
 				optional => "NO",
-			}, 
+			},
 		],
 	},
-	{   
+	{
 		obj_type => "ITEM",
 		name => "item",
 		menu => "root_ssli_no_domainlist_apply",
@@ -28167,8 +28566,8 @@
 		function_name => "ssl_reset_default_ver_rhost",
 		function_args => [],
 	},
-	
-	# Bug 19168, chenyl, 20080522 
+
+	# Bug 19168, chenyl, 20080522
 	{
 		obj_type => "MENU",
 		name => "crl",
@@ -28234,7 +28633,7 @@
 								type => "STRING",
 								help_string => "Virtual host name",
 								optional => "NO",
-							}, 
+							},
 							{
 								type => "STRING",
 								help_string => "SLB virtual name",
@@ -28253,7 +28652,7 @@
 								type => "STRING",
 								help_string => "Real host name",
 								optional => "NO",
-							}, 
+							},
 							{
 								type => "STRING",
 								help_string => "SLB real name",
@@ -28302,15 +28701,15 @@
 					type => "STRING",
 					help_string => "Virtual Host name",
 					optional => "NO",
-				}, 
-				#Bug 16098, chenyl, 20070417		
+				},
+				#Bug 16098, chenyl, 20070417
 		   		{
 		    			type => "U32",
 		    			help_string => "certificate number",
 		    			optional => "YES",
 		    			default_value => "-1",
 				},
-				#Bug 16098, end 
+				#Bug 16098, end
 				],
 	},
 	{
@@ -28325,7 +28724,7 @@
 		    type => "STRING",
 		    help_string => "Host name, \\\"ALL\\\" means the global root CA will be deleted",
 		    optional => "NO",
-		   }, 
+		   },
 		   {
 		    type => "U32",
 		    help_string => "certificate number",
@@ -28341,12 +28740,12 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove SSL CRL CA",
 		function_name => "clear_ssl_crlca",
-		function_args => [ 
+		function_args => [
 						{
 		    				type => "STRING",
 		    				help_string => "SSL Host name, \\\"all\\\" means the CRL CA of the global CRL will be deleted",
 		    				optional => "NO",
-		   				}, 
+		   				},
 		   				{
 		    				type => "U32",
 		    				help_string => "certificate number",
@@ -28362,7 +28761,7 @@
 		help_string => "Remove SSL CRL filter of cdp",
 		function_name => "clear_ssl_crlfilter",
 		function_args => [
-							{ 	
+							{
 								type => "STRING",
 								help_string => "CRL Distribution Point name",
 								optional => "NO",
@@ -28387,7 +28786,7 @@
 					optional => "YES",
                                         default_value => "\"\"",
 				   },
-						{ 
+						{
 					type => "STRING",
 					help_string => "CSR type. The csr type can be \\\"rsa\\\", \\\"ecc\\\",\\\"sm2\\\" or \\\"all\\\". The default is \\\"all\\\"",
 					optional => "YES",
@@ -28551,10 +28950,10 @@
 									type => "STRING",
 									help_string => "Virtual host name",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "STRING",
-									help_string => "Client ip address type, ipv4 or ipv6, default is ipv4", 
+									help_string => "Client ip address type, ipv4 or ipv6, default is ipv4",
 									optional => "YES",
 									default_value => "\"ipv4\"",
 								},],
@@ -28645,7 +29044,7 @@
 				 	help_string => "The 2nd filter(optional)",
 				 	optional => "YES",
 				 	default_value => "\"\"",
-				}, 
+				},
 							],
 	},
 	#bug 15120, lingx, 20070108
@@ -28714,15 +29113,15 @@
 									type => "STRING",
 									help_string => "SSL Host name",
 									optional => "NO",
-								}, 
-								# Bug 15120, chenyl, 20070209 
+								},
+								# Bug 15120, chenyl, 20070209
 								{
 									type => "STRING",
 									help_string => "Crldp name, \\\"all\\\" means that all the crldp will be deleted",
 									optional => "YES",
 									default_value => "\"all\"",
 								},
-								# Bug 15120, end 			
+								# Bug 15120, end
 								],
 	},
 	{
@@ -28814,7 +29213,7 @@
 					type => "U32",
 					help_string => "SSL error code[901, 902, 903, 904, 905, 906]",
 					optional => "NO",
-				}, 
+				},
 				{
 					type => "STRING",
 					help_string => "SSL name, default is \\\"ALL\\\", which means the imported global error page will be deleted",
@@ -28844,7 +29243,7 @@
 					type => "U32",
 					help_string => "SSL error code[901, 902, 903, 904, 905, 906]",
 					optional => "NO",
-				}, 
+				},
 				{
 					type => "STRING",
 					help_string => "SSL Host name, default is \\\"ALL\\\", which means the loaded global error page will be deleted",
@@ -28872,7 +29271,7 @@
 		function_name => "show_ssli_settings",
 		function_args => [],
 	},
-#show ssli webclassify menu 
+#show ssli webclassify menu
     {
         obj_type => "MENU",
         name => "webclassify",
@@ -28900,7 +29299,7 @@
     },
 #end show ssli webclassify
 
-# no ssli webclassify url 
+# no ssli webclassify url
 # no ssli webclassify url bypass
 	{
 		obj_type => "MENU",
@@ -28910,19 +29309,19 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove website classification configurations related to SSL interception",
-	},  
-	{     
+	},
+	{
 		obj_type => "MENU",
-		name => "url", 
+		name => "url",
 		parent_menu => "root_no_ssli_webclassify",
-		uniq_name => "root_no_ssli_webclassify_url", 
+		uniq_name => "root_no_ssli_webclassify_url",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG", 
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove a URL setting",
-	},        
+	},
 	{
 		obj_type => "ITEM",
-		name => "bypass", 
+		name => "bypass",
 		menu => "root_no_ssli_webclassify_url",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -28931,21 +29330,21 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "SSL virtual host name",
-				optional => "NO", 
-			},        
-			{     
+				optional => "NO",
+			},
+			{
 				type => "STRING",
 				help_string => "Category name (Please enclose the category name by double quotes)",
-				optional => "No", 
-			},        
-		],        
+				optional => "No",
+			},
+		],
 	},
 #end ssli webclassify url bypass
 
-#no ssli webclassify url intercept 
+#no ssli webclassify url intercept
 	{
 		obj_type => "ITEM",
-		name => "intercept", 
+		name => "intercept",
 		menu => "root_no_ssli_webclassify_url",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -28954,20 +29353,20 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "SSL virtual host name",
-				optional => "NO", 
-			},        
-			{     
+				optional => "NO",
+			},
+			{
 				type => "STRING",
 				help_string => "Category name (Please enclose the category name by double quotes)",
-				optional => "No", 
-			},        
-		],        
+				optional => "No",
+			},
+		],
 	},
 #end no ssli webclassify url intercept
 # end no ssli webclassify url
 
 # clear ssli webclassify url
-    {   
+    {
         obj_type => "MENU",
         name => "webclassify",
         parent_menu => "root_clear_ssli",
@@ -28975,20 +29374,20 @@
         cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
         user_level => "CLI_LEVEL_CONFIG",
         help_string => "Clear website classification configurations related to SSL interception",
-    }, 
-    {     
+    },
+    {
         obj_type => "MENU",
-        name => "url", 
+        name => "url",
         parent_menu => "root_clear_ssli_webclassify",
-        uniq_name => "root_clear_ssli_webclassify_url", 
+        uniq_name => "root_clear_ssli_webclassify_url",
         cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
-        user_level => "CLI_LEVEL_CONFIG", 
+        user_level => "CLI_LEVEL_CONFIG",
         help_string => "Clear URL settings",
-    },   
-	
+    },
+
     {
         obj_type => "ITEM",
-        name => "bypass", 
+        name => "bypass",
         menu => "root_clear_ssli_webclassify_url",
         cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
         user_level => "CLI_LEVEL_CONFIG",
@@ -28997,14 +29396,14 @@
         function_args => [ {
                 type => "STRING",
                 help_string => "SSL virtual host name",
-                optional => "NO", 
-            },                
-        ],        
+                optional => "NO",
+            },
+        ],
     },
 #clear ssli webclassify url intercept
     {
         obj_type => "ITEM",
-        name => "intercept", 
+        name => "intercept",
         menu => "root_clear_ssli_webclassify_url",
         cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
         user_level => "CLI_LEVEL_CONFIG",
@@ -29013,9 +29412,9 @@
         function_args => [ {
                 type => "STRING",
                 help_string => "SSL virtual host name",
-                optional => "NO", 
-            },                
-        ],        
+                optional => "NO",
+            },
+        ],
     },
 # end clear ssli webclassify url
 
@@ -29030,45 +29429,45 @@
 		help_string => "Display website classification configurations",
 	},
 #show webclassify settings
-    {     
+    {
         obj_type => "ITEM",
-        name => "settings", 
+        name => "settings",
         menu => "root_show_webclassify",
         cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
         user_level => "CLI_LEVEL_ENABLE",
         help_string => "Display website classification global settings",
         function_name => "show_webclassify_settings",
-        function_args => [],    
+        function_args => [],
     },
 #end show webclassify settings
 
 #show webclassify status
-	{     
+	{
 		obj_type => "ITEM",
-		name => "status", 
+		name => "status",
 		menu => "root_show_webclassify",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display website classification status",
 		function_name => "show_webclassify_status",
-		function_args => [],    
-	},  
+		function_args => [],
+	},
 #end show webclassify status
 
 #show webclassify license
-	{     
+	{
 		obj_type => "ITEM",
-		name => "license", 
+		name => "license",
 		menu => "root_show_webclassify",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display website classification license",
 		function_name => "show_webclassify_license",
-		function_args => [],    
-	}, 
+		function_args => [],
+	},
 #end show webclassify license
 
-#show webclassify url menue 
+#show webclassify url menue
     {
         obj_type => "MENU",
         name => "url",
@@ -29288,18 +29687,18 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display SSL host certificate status",
 		function_name => "ssl_show_cert_status",
-		function_args => [ 
+		function_args => [
 							{
 								type => "STRING",
 								help_string => "Host name",
 								optional => "NO",
-							}, 
+							},
 							{
 								type => "STRING",
 								help_string => "Server Name Indication",
 								optional => "YES",
                                                                 default_value => "\"\"",
-							}, 
+							},
 						],
 	},
 	{
@@ -29344,7 +29743,7 @@
                                         }
                                 ],
         },
-	# Bug 18295, chenyl, 20080110 
+	# Bug 18295, chenyl, 20080110
 	{
 		obj_type => "ITEM",
 		name => "crlstatus",
@@ -29359,7 +29758,7 @@
 					# Bug 19037, chenyl, 20080411
 					optional => "YES",
 					default_value => "\"all\"",
-					# Bug 19037, end 
+					# Bug 19037, end
 					},
 					{
 						type => "STRING",
@@ -29382,7 +29781,7 @@
 				type => "STRING",
 				help_string => "Host name, \\\"all\\\" for all hosts",
 				optional => "NO",
-			}, 
+			},
 			{
 				type => "STRING",
 				help_string => "Display mode, complete or simple, default is complete",
@@ -29450,7 +29849,7 @@
 				type => "STRING",
 				help_string => "Virtual Host name",
 				optional => "NO",
-			}, 
+			},
 			{
 				type => "STRING",
 				help_string => "Display mode, complete or simple, default is complete",
@@ -29459,7 +29858,7 @@
 			},
 		],
 	},
-	#bug 15595, end 
+	#bug 15595, end
 	{
 		obj_type => "ITEM",
 		name => "csr",
@@ -29499,15 +29898,15 @@
 					type => "STRING",
 					help_string => "Virtual Host name",
 					optional => "NO",
-				   }, 
-					# Bug 16098, chenyl, 20070410  
+				   },
+					# Bug 16098, chenyl, 20070410
 				   {
 					type => "STRING",
 					help_string => "Display mode, complete or simple, default is complete",
 					optional => "YES",
 					default_value => "\"complete\"",
 				   },
-					# Bug 16098, end 
+					# Bug 16098, end
                                    {
 					type => "STRING",
 					help_string => "Server Name Indication",
@@ -29530,14 +29929,14 @@
 					optional => "YES",
 					default_value => "\"ALL\"",
 				   },
-				   # Bug 16098, chenyl, 20070410  
+				   # Bug 16098, chenyl, 20070410
 				   {
 					type => "STRING",
 					help_string => "Display mode, complete or simple, default is complete",
 					optional => "YES",
 					default_value => "\"complete\"",
 				   },
-				   # Bug 16098, end 
+				   # Bug 16098, end
 				   {
 					type => "STRING",
 					help_string => "Server Name Indication (if virtual host name is not \\\"ALL\\\")",
@@ -29546,7 +29945,7 @@
 				   },
 				],
 	},
-	
+
 	{
 		obj_type => "MENU",
 		name => "import",
@@ -29573,7 +29972,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Check SSL certificate imported through interact or from url",
 		function_name => "ssl_check_cert_exist",
-		function_args => [ 
+		function_args => [
 					{
 						type => "STRING",
 						help_string => "Host name",
@@ -29674,7 +30073,7 @@
 		help_string => "    Show SSL import files",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
-	},       
+	},
       {
 		obj_type => "ITEM",
 		name => "page",
@@ -29749,7 +30148,7 @@
 		help_string => "Show SSL loaded error pages",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
-	},    
+	},
 	{
 		obj_type => "MENU",
 		name => "error",
@@ -29758,7 +30157,7 @@
 		help_string => "    Show SSL loaded error pages",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
-	}, 
+	},
         {
 		obj_type => "ITEM",
 		name => "page",
@@ -29816,7 +30215,7 @@
 									type => "STRING",
 									help_string => "Host name",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "U32",
 									help_string => "number of connections to be displayed(1 to 1000,default:100)",
@@ -29862,7 +30261,7 @@
 		function_name => "ssl_show_errors",
 		function_args => [],
 	},
-	
+
 	#Bug 17403, chenyl, 20071011
 	{
 		obj_type => "ITEM",
@@ -29872,11 +30271,11 @@
 		user_level => "CLI_LEVEL_ENGINEER",
 		help_string => "Check the clientcert exist or not",
 		function_name => "is_ssl_selfcert_exist",
-		function_args => [{	
+		function_args => [{
 						type => "STRING",
 						help_string => "Virtual Host name",
 						optional => "NO",
-					},					
+					},
 					],
 	},
 	{
@@ -29887,14 +30286,14 @@
 		user_level => "CLI_LEVEL_ENGINEER",
 		help_string => "Check the clientkey exist or not",
 		function_name => "is_ssl_selfkey_exist",
-		function_args => [{	
+		function_args => [{
 						type => "STRING",
 						help_string => "Virtual Host name",
 						optional => "NO",
-					},					
+					},
 					],
 	},
-	#Bug 17403, end 
+	#Bug 17403, end
 	#Bug 17746, chenyl, 20071105
 	{
 		obj_type => "ITEM",
@@ -29916,7 +30315,7 @@
 					default_value => "0",
 				    },],
 	},
-	#Bug 17746, end         
+	#Bug 17746, end
 	#Bug31816: add a engineer CLI to show if the specified cdp's crlfilter imported.
 	{
 		obj_type => "ITEM",
@@ -30017,7 +30416,7 @@
 		help_string => "Save NIC sorting configuration",
 		function_name => "system_portmap",
 		function_args => [],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "portmap",
@@ -30107,7 +30506,7 @@
 		name => "on",
 		menu => "system_usbaccess",
 		help_string => "Enable access to USB storage",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "set_system_usbaccess_on",
 		function_args => [],
@@ -30117,7 +30516,7 @@
 		name => "off",
 		menu => "system_usbaccess",
 		help_string => "Disable access to USB storage",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "set_system_usbaccess_off",
 		function_args => [],
@@ -30530,19 +30929,19 @@
                 type => "IPADDR",
                 help_string => "Source IP (ipv4 in 10.0.0.0 format or IPv6 in ff:fe::0 format)",
                 optional => "NO",
-            }, 
+            },
             {
                 type => "IPMASK",
                 help_string => "Netmask for IPv4(e.g. 255.255.255.0), or prefix length for IPv6, in range [1,128]",
                 optional => "NO",
-            },          
+            },
             {
                 type => "STRING",
                 help_string => "The action of this rule (permit or deny. default is permit)",
                 optional => "YES",
                 default_value => "\"permit\"",
             },],
-    }, 
+    },
 	{
 		obj_type => "ITEM",
 		name => "remote",
@@ -30850,7 +31249,7 @@
                 type => "IPADDR",
                 help_string => "Source IP (ipv4 in 10.0.0.0 format or IPv6 in ff:fe::0 format)",
                 optional => "NO",
-            }, 
+            },
             {
                 type => "IPMASK",
                 help_string => "Netmask for IPv4(e.g. 255.255.255.0), or prefix length for IPv6, in range [1,128]",
@@ -30882,13 +31281,13 @@
 				}, ],
 	},
 	{
-		obj_type => "MENU", 
-		name => "thread", 
-		parent_menu => "root_system", 
-		uniq_name => "root_system_thread", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		help_string => "system thread mode", 
+		obj_type => "MENU",
+		name => "thread",
+		parent_menu => "root_system",
+		uniq_name => "root_system_thread",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "system thread mode",
 	},
 	{
 		obj_type => "ITEM",
@@ -31052,7 +31451,7 @@
                 user_level => "CLI_LEVEL_ENGINEER",
                 function_name => "show_kernel_syslog",
                 function_args => [],
-        },    
+        },
         # Bug 21670, end
 	{
 		obj_type => "ITEM",
@@ -31434,7 +31833,7 @@
         # Add by QinXing 2005-7-28 bug 10914
         {
                 obj_type => "ITEM",
-                name => "relay",                 
+                name => "relay",
                 menu => "root_show_system",
                 cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
                 user_level => "CLI_LEVEL_ENABLE",
@@ -31518,7 +31917,7 @@
 									optional => "YES",
 									default_value => "\"\"",
 								},],
-		
+
 	},
 	{
 		obj_type => "ITEM",
@@ -31538,7 +31937,7 @@
 									optional => "YES",
 									default_value => "\"\"",
 								},],
-		
+
 	},
 	{
 		obj_type => "ITEM",
@@ -31595,7 +31994,7 @@
 									type => "STRING",
 									help_string => "IPv6 host to check",
 									optional => "NO",
-								},{ 
+								},{
 									type => "STRING",
 									help_string => "Gateway IP address, or Ping parameters separated by commas (optional, e.g. \\\"-s 32, -i 10\\\")",
 									optional => "YES",
@@ -31612,10 +32011,10 @@
 		name => "traceroute",
 		menu => ".",
 		help_string => "Display a traced route to a host",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",
 		user_level => "CLI_LEVEL_USER",
 		function_name => "ui_traceroute",
-		function_args => [ { 
+		function_args => [ {
 									type => "DOTTEDIP",
 									help_string => "IP/hostname to trace to",
 									optional => "NO",
@@ -31651,14 +32050,14 @@
 		name => "traceroute6",
 		menu => ".",
 		help_string => "Display a traced route to a IPv6 host",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",
 		user_level => "CLI_LEVEL_USER",
 		function_name => "ui_traceroute6",
-		function_args => [ { 
+		function_args => [ {
 									type => "STRING",
 									help_string => "IPv6 address/hostname to trace to",
 									optional => "NO",
-								},{ 
+								},{
 									type => "IPADDR",
 									help_string => "A gateway IP address of an LLB link",
 									optional => "YES",
@@ -31721,7 +32120,7 @@
 									type => "U16",
 									help_string => "Remote port to forward to",
 									optional => "NO",
-								}, 
+								},
 				                                {
 								        type => "U32",
 									help_string => "Timeout value in seconds (default 300)",
@@ -31890,12 +32289,12 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "snmp_server_on",
 		function_args => [
-		       { 
+		       {
 				type=> "STRING",
 				help_string => "{default|v3}, default means SNMP agent supports three SNMP versions of v1, v2c and v3",
 				optional => "YES",
 				default_value => "\"default\"",
-		        }, 
+		        },
 		                 ],
 	},
 	{
@@ -31957,10 +32356,10 @@
 				type => "IPMASK",
 				help_string => "Netmask for IPv4(e.g. 255.255.255.0), or prefix length for IPv6, in range [1,128]",
 				optional => "NO",
-			}, 
+			},
 		                 ],
 	},
-	
+
 	{
 		obj_type => "ITEM",
 		name => "ippermit",
@@ -31979,7 +32378,7 @@
 				type => "IPMASK",
 				help_string => "Netmask for IPv4(e.g. 255.255.255.0), or prefix length for IPv6, in range [1,128]",
 				optional => "NO",
-			}, 
+			},
 		                 ],
 	},
 #snmp ip control,end
@@ -31993,40 +32392,40 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "snmp_add_v3user",
 		function_args => [
-		        { 
+		        {
 				type=> "STRING",
 				help_string => "user name",
 				optional => "NO",
 		        },
-		        { 
+		        {
 				type=> "STRING",
 				help_string => "authentication password (ranges from 8 to 32 characters)",
 				optional => "NO",
-		        }, 
-		        { 
+		        },
+		        {
 				type=> "STRING",
 				help_string => "{authNopriv|authPriv}, security level",
 				optional => "YES",
 				default_value => "\"authNopriv\"",
-		        }, 
-		        { 
+		        },
+		        {
 				type=> "STRING",
 				help_string => "private password for encryption (ranges from 8 to 32 characters)",
 				optional => "YES",
 				default_value => "\"\"",
 		        },
-				{ 
+				{
 				type=> "STRING",
 				help_string => "authentication protocol (MD5 or SHA1, default:MD5)",
 				optional => "YES",
 				default_value => "\"MD5\"",
 		        },
-				{ 
+				{
 				type=> "STRING",
 				help_string => "encryption protocol(DES or AES, default:DES)",
 				optional => "YES",
 				default_value => "\"DES\"",
-		        },      
+		        },
 	                        ],
 	},
 	{
@@ -32038,7 +32437,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "snmp_del_v3user",
 		function_args => [
-		        { 
+		        {
 				type=> "STRING",
 				help_string => "user name",
 				optional => "NO",
@@ -32053,7 +32452,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL|CMD_SPECIAL_LOG",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name =>  "snmp_server_host",
-		function_args => [ 
+		function_args => [
 		         {
 			         type => "IPADDR",
 				 help_string => "SNMP receiver IP",
@@ -32077,42 +32476,42 @@
 				 optional => "YES",
 				 default_value => "\"\"",
 			 },
-			 { 
+			 {
 				type=> "STRING",
 				help_string => "authentication password (ranges from 8 to 32 characters)",
 				optional => "YES",
 				default_value => "\"\"",
-		         }, 
-		         { 
+		         },
+		         {
 				type=> "STRING",
 				help_string => "{authNopriv|authPriv}, security level",
 				optional => "YES",
 				default_value => "\"authNopriv\"",
-		         }, 
-		         { 
+		         },
+		         {
 				type=> "STRING",
 				help_string => "private password for encryption (ranges from 8 to 32 characters)",
 				optional => "YES",
 				default_value => "\"\"",
 		         },
-			 { 
+			 {
 				type=> "U16",
 				help_string => "host port to receive trap (range 0 - 65535, default 162)",
 				optional => "YES",
 				default_value => "162",
 		         },
-				{ 
+				{
 				type=> "STRING",
 				help_string => "authentication protocol (MD5 or SHA1, default:MD5)",
 				optional => "YES",
 				default_value => "\"MD5\"",
 		        },
-				{ 
+				{
 				type=> "STRING",
 				help_string => "encryption protocol(DES or AES, default:DES)",
 				optional => "YES",
 				default_value => "\"DES\"",
-		        },      
+		        },
 			         ],
 	},
 #bug 14397, end
@@ -32124,7 +32523,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "snmp_server_community",
-		function_args => [ { 
+		function_args => [ {
 									type=> "STRING",
 									help_string => "Community string (32 characters maximum, default is public)",
 									optional => "NO",
@@ -32346,12 +32745,12 @@
 				type => "STRING",
 				help_string => "Source IP to translate(ipv4 in 10.0.0.0 format or IPv6 in ff:fe::0 format) or Source IP group name",
 				optional => "NO",
-			}, 
+			},
 			{
 				type => "STRING",
 				help_string => "Netmask for IPv4(e.g. 255.255.255.0), or prefix length for IPv6, in range [0,128]",
 				optional => "NO",
-			},			
+			},
 			{
 			        type => "U32",
 				help_string => "Timeout value in seconds (default 60)",
@@ -32390,12 +32789,12 @@
 				type => "STRING",
 				help_string => "Destination IP to match (ipv4 in 10.0.0.0 format or IPv6 in ff:fe::0 format) or Destination IP group name",
 				optional => "NO",
-			}, 
+			},
 			{
 				type => "STRING",
 				help_string => "Netmask for IPv4(e.g. 255.255.255.0), or prefix length for IPv6, in range [0,128]",
 				optional => "NO",
-			},			
+			},
 			{
 			        type => "U32",
 				help_string => "Timeout value in seconds (default 60)",
@@ -32414,7 +32813,7 @@
 				optional => "YES",
 				default_value => "\"\"",
 			},],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "static",
@@ -32432,7 +32831,7 @@
 					type => "IPADDR",
 					help_string => "IP to be translated",
 					optional => "NO",
-				}, 
+				},
 				{
 					type => "U32",
 					help_string => "Timeout value in seconds (default 60)",
@@ -32756,7 +33155,7 @@
 							help_string => "Netmask for IPv4(e.g. 255.255.255.0), or prefix length for IPv6, in range [0,128]",
 							optional => "NO",
 				},],
-	},	
+	},
 	# Bug 11799, end
 	{
 				obj_type => "ITEM",
@@ -32852,7 +33251,7 @@
 	    name => "port",
 	    menu => "root_clear_nat_protocol_ftp",
 	    help_string => "clear alternative nat ftp port",
-	    cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL", 
+	    cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 	    user_level => "CLI_LEVEL_CONFIG",
 	    function_name => "clear_nat_protocol_ftp_port",
 	    function_args => [],
@@ -32862,7 +33261,7 @@
 	    name => "dns",
 	    menu => "root_clear_nat_protocol",
 	    help_string => "Clear the DNS NAT configuration",
-	    cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL", 
+	    cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 	    user_level => "CLI_LEVEL_CONFIG",
 	    function_name => "clear_nat_protocol_dns",
 	    function_args => [],
@@ -32991,8 +33390,8 @@
 		function_args => [ {
 									type => "U32",
 									# Bug 17118, lintq, 20070725
-									# As the minimum has been alerted to 30 in Bug 10088, 
-									# so I correct the help message.  
+									# As the minimum has been alerted to 30 in Bug 10088,
+									# so I correct the help message.
 									help_string => "Timeout (seconds, 30-36000)",
 									# Bug 17118, end
 									optional => "NO",
@@ -33199,9 +33598,9 @@
 					optional => "NO",
 				},],
 	},
-	# Bug 15979, end       
+	# Bug 15979, end
 	# Bug 17997, chenyl, 20080304
-        {     
+        {
                 obj_type =>"MENU",
                 parent_menu => "root_config",
                 name =>  "all" ,
@@ -33209,8 +33608,8 @@
                 uniq_name => "root_config_all",
                 cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
                 user_level => "CLI_LEVEL_CONFIG",
-        },        
-        {     
+        },
+        {
                 obj_type => "ITEM",
                 name => "file",
                 menu => "root_config_all",
@@ -33218,18 +33617,18 @@
                 cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL|CMD_EXTRA_FILE|CMD_SPECIAL_LOG",
                 user_level => "CLI_LEVEL_CONFIG",
                 function_name => "import_all_config_file",
-                function_args => [ {           
+                function_args => [ {
                                                         type => "STRING",
                                                         help_string => "Backup config file package name ,should be without \\\".tgz\\\"",
                                                         optional => "NO",
-                                                },            
+                                                },
                                                 {
                                                         type => "STRING",
                                                         help_string => "Password for the file",
                                                         optional => "NO",
                                                 },],
-        },		
-        {     
+        },
+        {
                 obj_type => "ITEM",
                 name => "tftp",
                 menu => "root_config_all",
@@ -33242,11 +33641,11 @@
                                                         help_string => "IP of remote TFTP server",
                                                         optional => "NO",
                                                 },
-                                                {             
+                                                {
                                                         type => "STRING",
                                                         help_string => "Name of remote file",
                                                         optional => "NO",
-                                                },            
+                                                },
                                                 {
                                                         type => "STRING",
                                                         help_string => "Password for the file",
@@ -33281,7 +33680,7 @@
                                         help_string => "Password for the file",
                                         optional => "NO",
                                 },],
-        },        
+        },
         {
                 obj_type => "ITEM",
                 name => "sftp",
@@ -33310,7 +33709,7 @@
                                         help_string => "Password for the file",
                                         optional => "NO",
                                 },],
-        },        
+        },
         {
                 obj_type =>"MENU",
                 parent_menu => "root_write",
@@ -33319,7 +33718,7 @@
                 uniq_name => "root_write_all",
                 cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
                 user_level => "CLI_LEVEL_CONFIG",
-        },        
+        },
         {
                 obj_type => "ITEM",
                 name => "file",
@@ -33422,7 +33821,7 @@
                                         optional => "NO",
                                 },],
         },
-        # Bug 17997, end 	
+        # Bug 17997, end
 		{
 			obj_type => "ITEM",
 			name => "deferred",
@@ -33484,7 +33883,7 @@
 		function_name => "enter_priv",
 		function_args => [{
 					type => "STRING",
-					help_string => "recovery     password recovery", 
+					help_string => "recovery     password recovery",
 					optional => "YES",
 					default_value => "NULL",
 				},],
@@ -33556,7 +33955,7 @@
 		menu => "root_passwd",
 		help_string => "Change user password",
 		# Bug 15530, lintq, 20070307
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL|CMD_SPECIAL_LOG", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL|CMD_SPECIAL_LOG",
 		# Bug 15530, end
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "change_passwd",
@@ -33586,7 +33985,7 @@
 		name => "on",
 		menu => "passwd_forcemode",
 		help_string => "Enable strict check on password",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "set_passwd_forcemode_on",
 		function_args => [],
@@ -33596,7 +33995,7 @@
 		name => "off",
 		menu => "passwd_forcemode",
 		help_string => "Disable strict check on password",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "set_passwd_forcemode_off",
 		function_args => [],
@@ -33615,7 +34014,7 @@
 		name => "on",
 		menu => "passwd_expire",
 		help_string => "Enable password expire check",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "set_passwd_expire_on",
 		function_args => [],
@@ -33625,7 +34024,7 @@
 		name => "off",
 		menu => "passwd_expire",
 		help_string => "Disable password expire check",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "set_passwd_expire_off",
 		function_args => [],
@@ -33644,7 +34043,7 @@
 		name => "on",
 		menu => "passwd_changing",
 		help_string => "The user's password is changing",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_ENGINEER",
 		function_name => "user_passwd_changing_on",
 		function_args => [ {
@@ -33658,7 +34057,7 @@
 		name => "off",
 		menu => "passwd_changing",
 		help_string => "The user's password is not changing",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_ENGINEER",
 		function_name => "user_passwd_changing_off",
 		function_args => [ {
@@ -33672,14 +34071,14 @@
 		name => "lock",
 		menu => "root_passwd",
 		help_string => "Change the password login failed retry times and lock time",
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_ENGINEER",
 		function_name => "user_passwd_lock",
 		function_args => [ {
 								type => "U32",
 								help_string => "login lock failed retry times. Default is 5.",
 								optional => "NO",
-							}, 
+							},
 							{
 								type => "U32",
 								help_string => "login lock time (seconds). Default is 300.",
@@ -33908,7 +34307,7 @@
 								optional => "NO",
 								min => "0",
 								max => "60000",
-							}, 
+							},
 							{
 								type => "U32",
 								help_string => "max timeout times for marking the diameter server down, default is 0 which means never mark the server down",
@@ -33949,7 +34348,7 @@
 		function_args => [ ],
 	},
 
-	
+
 	{
 		obj_type => "MENU",
 		name => "http",
@@ -34016,7 +34415,7 @@
 		function_name => "show_http_conncheck",
 		function_args => [],
 	},
-         
+
         {
 		obj_type => "MENU",
 		name => "surgeprotect",
@@ -34372,7 +34771,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "proxy_xforwardedfor_on",
 		#bug 12560, shily, 20060614
-		function_args => [{					
+		function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name",
 					optional => "YES",
@@ -34413,7 +34812,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "proxy_xforwardedfor_off",
 		#bug 12560, shily, 20060614
-		function_args => [{					
+		function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name",
 					optional => "YES",
@@ -34443,7 +34842,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_proxy_xforwardedfor",
-		function_args => [{					
+		function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name",
 					optional => "YES",
@@ -34567,8 +34966,8 @@
 		function_name => "show_http_shuntreset",
   		function_args => [],
   	},
- 
-# Bug 9352,panzj 2004-12-06 
+
+# Bug 9352,panzj 2004-12-06
 # add cli cmd http connsplice
 	{
 		obj_type => "MENU",
@@ -34590,7 +34989,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "http_connsplice_on",
-		function_args => [{					
+		function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name or null for the global switch",
 					optional => "YES",
@@ -34605,7 +35004,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "http_connsplice_off",
-		function_args => [{					
+		function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name or null for the global switch",
 					optional => "YES",
@@ -34620,7 +35019,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_http_connsplice",
-		function_args => [{					
+		function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name or all or null",
 					optional => "YES",
@@ -34645,7 +35044,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "http_connkeep_on",
-		function_args => [{					
+		function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name. The default value is empty, indicating the configuration takes effect for the global.",
 					optional => "YES",
@@ -34660,7 +35059,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "http_connkeep_off",
-		function_args => [{					
+		function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name. The default value is empty, indicating the configuration takes effect for the global.",
 					optional => "YES",
@@ -34675,7 +35074,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_http_connkeep",
-		function_args => [{					
+		function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name or all. The default value is \\\"\\\", indicating displaying global settings.",
 					optional => "YES",
@@ -34834,7 +35233,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "http_serverconnreuse_max_request",
-		function_args => [{	
+		function_args => [{
 					type => "U32",
 					help_string => "Maximum number of requests allowed on a reused connection (1 to 1000000, default: 0 for unlimited)",
 					optional => "YES",
@@ -34925,7 +35324,7 @@
 					optional => "YES",
 					default_value => "\"\""
 				 },],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "serverconnreuse",
@@ -35221,14 +35620,14 @@
 					optional => "YES",
 					default_value => "\"header\"",
 				 },
-				 # Bug 20094, chenyl, 20080912 
+				 # Bug 20094, chenyl, 20080912
 				 {
 					type => "STRING",
-					help_string => "Certificate type, PEM(with begin/end header line and delimiter \\\";\\\") or body(without header line and delimiter), default is \\\"body\\\"", 
+					help_string => "Certificate type, PEM(with begin/end header line and delimiter \\\";\\\") or body(without header line and delimiter), default is \\\"body\\\"",
 					optional => "YES",
 					default_value => "\"body\"",
 				 },
-				 # Bug 20094, end 
+				 # Bug 20094, end
 				 ],
 	},
 	{
@@ -35297,7 +35696,7 @@
 					type => "STRING",
 					help_string => "Virtual service name, default is \\\"all\\\"",
 					optional => "YES",
-					default_value => "\"all\"",  
+					default_value => "\"all\"",
 				},],
 	},
 	{
@@ -35312,10 +35711,10 @@
 					type => "STRING",
 					help_string => "Virtual service name, default is \\\"all\\\"",
 					optional => "YES",
-					default_value => "\"all\"",  
+					default_value => "\"all\"",
 				},],
 	},
-	# Bug 18597, end 
+	# Bug 18597, end
 	{
 		obj_type => "ITEM",
 		name => "rdnsep",
@@ -35332,14 +35731,14 @@
 				{
 					type => "STRING",
 					help_string => "Field separator (1 to 3 bytes). 0~9, a~z, A~Z, and %% are not allowed. default is \\\",\\\"",
-					optional => "YES",	
+					optional => "YES",
 					default_value => "\"\"",
 				},
 				{
 					type => "STRING",
 					help_string => "The position of the separate character, pre(before the rdn) or post(after the rdn), default is post",
 					optional => "YES",
-					default_value => "\"\"",					
+					default_value => "\"\"",
                                 },],
 	},
 	{
@@ -35358,11 +35757,11 @@
 				{
 					type => "STRING",
 					help_string => "pem separator (1 to 6 bytes). default is \\\";\\\"",
-					optional => "YES",	
+					optional => "YES",
 					default_value => "\";\"",
 				},],
 	},
-	# Bug 18421, end 
+	# Bug 18421, end
 	# Bug 24379, chenhb, 20091116
 	{
 		obj_type => "ITEM",
@@ -35380,12 +35779,12 @@
 				{
 					type => "STRING",
 					help_string => "OID, such as 2.5.4.6",
-					optional => "NO",		
+					optional => "NO",
 				},
 				{
 					type => "STRING",
 					help_string => "Customize the name of the oid",
-					optional => "NO",				
+					optional => "NO",
                                 },],
 	},
 	{
@@ -35405,10 +35804,10 @@
 					type => "STRING",
 					help_string => "OID, default is \\\"all\\\"",
 					optional => "YES",
-					default_value => "\"all\"", 		
+					default_value => "\"all\"",
 				 },],
 	},
-	# Bug 24379, end	
+	# Bug 24379, end
 	# Bug 24526, chenhb, 20100305
 	{
 		obj_type => "ITEM",
@@ -35428,7 +35827,7 @@
 					help_string => "Encoding of DN, can be UTF-8(default), GB2312, GBK, GB18030",
 					optional => "YES",
 					default_value => "\"\"",
-									
+
                                 },],
 	},
 	{
@@ -35445,7 +35844,7 @@
 					optional => "NO",
 				 },],
 	},
-	# Bug 24526, end		
+	# Bug 24526, end
 	{
 		obj_type => "MENU",
 		name => "acl",
@@ -35470,7 +35869,7 @@
 				},
 				{
 					type => "STRING",
-					help_string => "String of the URI, excluding the scheme name, to be matched in the request (both quick RegEx match and full RegEx match are supported)", 
+					help_string => "String of the URI, excluding the scheme name, to be matched in the request (both quick RegEx match and full RegEx match are supported)",
 					optional => "NO",
 					length => ["1", "512"],
 				},
@@ -35671,7 +36070,7 @@
 		function_name => "clear_http_client_cert_dnencoding",
 		function_args => [],
 	},
-	#Bug 24526, end	
+	#Bug 24526, end
 	{
 		obj_type => "ITEM",
 		name => "plaintext",
@@ -35767,7 +36166,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_http_clientcert_plaintext",
-		function_args => [{					
+		function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name",
 					optional => "YES",
@@ -35783,7 +36182,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_http_clientcert_rdnsep",
-		function_args => [{					
+		function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name, default is all",
 					optional => "YES",
@@ -35798,7 +36197,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_http_clientcert_pemsep",
-		function_args => [{					
+		function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name, default is all",
 					optional => "YES",
@@ -35815,14 +36214,14 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_http_clientcert_oidname",
-		function_args => [{					
+		function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name, default is all",
 					optional => "YES",
 					default_value => "\"all\"",
 				},],
 	},
-	# Bug 24379, end	
+	# Bug 24379, end
 	# Bug 24526, chenhb, 20100305
 	{
 		obj_type => "ITEM",
@@ -35832,14 +36231,14 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_http_clientcert_dnencoding",
-		function_args => [{					
+		function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name, default is all",
 					optional => "YES",
 					default_value => "\"all\"",
 				},],
 	},
-	# Bug 24526, end	
+	# Bug 24526, end
 	{
 		 obj_type => "ITEM",
 		 name => "header",
@@ -35848,7 +36247,7 @@
 		 cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API",
 		 user_level => "CLI_LEVEL_ENABLE",
 		 function_name => "show_http_clientcert_header",
-		 function_args => [{					
+		 function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name (null for display all settings, default is null)",
 					optional => "YES",
@@ -35872,7 +36271,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_http_aclurl",
-		function_args => [{					
+		function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name",
 					optional => "YES",
@@ -35903,7 +36302,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "compression_on",
-		function_args => [{					
+		function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name",
 					optional => "YES",
@@ -35918,7 +36317,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "compression_off",
-		function_args => [{					
+		function_args => [{
 					type => "STRING",
 					help_string => "Virtual service name",
 					optional => "YES",
@@ -35946,7 +36345,7 @@
 								type => "STRING",
 								help_string => "user agent",
 								optional => "NO",
-							}, 
+							},
 				  {
 								type => "STRING",
 								help_string => "mime type (js, css, pdf, ppt, xls, doc)",
@@ -35985,7 +36384,7 @@
 								type => "STRING",
 								help_string => "virtual service name",
 								optional => "NO",
-							}, 
+							},
 				  {
 								type => "STRING",
 								help_string => "wildcard expression",
@@ -36123,7 +36522,7 @@
 								type => "STRING",
 								help_string => "user agent",
 								optional => "NO",
-							}, 
+							},
 				  {
 								type => "STRING",
 								help_string => "mime type (js, css)",
@@ -36537,7 +36936,7 @@
 		help_string => "Remove web application firewall audit log settings",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-	},	
+	},
     {
         obj_type => "MENU",
         name => "profile",
@@ -36579,7 +36978,7 @@
 								type => "STRING",
 								help_string => "Virtual Service Name",
 								optional => "NO",
-							}, 
+							},
 						],
     },
     {
@@ -36714,7 +37113,7 @@
 								type => "STRING",
 								help_string => "Profile Name",
 								optional => "NO",
-							}, 
+							},
 						],
 	},
 	{
@@ -36729,7 +37128,7 @@
 								type => "STRING",
 								help_string => "Profile Name",
 								optional => "NO",
-							}, 
+							},
 						],
 	},
 	{
@@ -36738,7 +37137,7 @@
 		parent_menu => "root_no_waf",
 		uniq_name => "root_no_waf_profile",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove profile configuration for web application firewall",
 	},
 	{
@@ -36773,7 +37172,7 @@
 								type => "STRING",
 								help_string => "Ruleset Name",
 								optional => "NO",
-							}, 
+							},
 						],
 	},
 	{
@@ -36793,7 +37192,7 @@
 								type => "STRING",
 								help_string => "Ruleset Name",
 								optional => "NO",
-							}, 
+							},
 						],
 	},
 	{
@@ -36813,7 +37212,7 @@
 								type => "STRING",
 								help_string => "Virtual Service Name",
 								optional => "NO",
-							}, 
+							},
 						],
 	},
 	{
@@ -36887,7 +37286,7 @@
 		help_string => "Configure web application firewall debug log settings",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENGINEER",
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "level",
@@ -37044,7 +37443,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "ddos_tcp_stat_show",
 		function_args => [],
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "udp",
@@ -37054,7 +37453,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "ddos_udp_stat_show",
 		function_args => [],
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "dns",
@@ -37069,7 +37468,7 @@
 					optional => "YES",
 					default_value => "\"all\"",
 				}, ],
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "http",
@@ -37118,7 +37517,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "ddos_tcp_stat_clear",
 		function_args => [],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "udp",
@@ -37138,7 +37537,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 	},
-	{     
+	{
 		obj_type => "ITEM",
 		name => "all",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API",
@@ -37148,7 +37547,7 @@
 		function_name => "ddos_dns_stat_clear_all",
 		function_args => [],
 	},
-	{     
+	{
 		obj_type => "ITEM",
 		name => "virtual",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API",
@@ -37164,7 +37563,7 @@
 			},
 			{
 				type => "STRING",
-				help_string => "DNS type. It can be \\\"A\\\" \\\"NS\\\" \\\"MD\\\" \\\"MF\\\" \\\"CNAME\\\" \\\"SOA\\\" \\\"MB\\\" \\\"MG\\\" \\\"MR\\\" \\\"NULL\\\" \\\"WKS\\\" \\\"PTR\\\" \\\"HINFO\\\" \\\"MINFO\\\" \\\"MX\\\" \\\"TXT\\\" \\\"AAAA\\\" \\\"ANY\\\" \\\"ALL\\\"", 
+				help_string => "DNS type. It can be \\\"A\\\" \\\"NS\\\" \\\"MD\\\" \\\"MF\\\" \\\"CNAME\\\" \\\"SOA\\\" \\\"MB\\\" \\\"MG\\\" \\\"MR\\\" \\\"NULL\\\" \\\"WKS\\\" \\\"PTR\\\" \\\"HINFO\\\" \\\"MINFO\\\" \\\"MX\\\" \\\"TXT\\\" \\\"AAAA\\\" \\\"ANY\\\" \\\"ALL\\\"",
 				optional => "YES",
 				default_value => "\"ALL\"",
 			},
@@ -37242,7 +37641,7 @@
 		parent_menu => "root_http_rewrite",
 		uniq_name => "root_http_rewrite_body",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "    Modify setting for http body rewrite",
 	},
         {
@@ -37251,7 +37650,7 @@
 		parent_menu => "root_no_http_rewrite",
 		uniq_name => "root_no_http_rewrite_body",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "    Remove configuration for http body rewrite",
 	},
         {
@@ -37260,7 +37659,7 @@
 		parent_menu => "root_clear_http_rewrite",
 		uniq_name => "root_clear_http_rewrite_body",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "    Reset http body rewrite settings",
 	},
         {
@@ -37329,19 +37728,19 @@
 					type => "STRING",
 					help_string => "Flags -iR ('i' : for  case insensitive matching, 'R' : forces the pattern to be treated as a regular expression as opposed to default pattern which is treated as a fixed string.)",
 					optional => "YES",
-					default_value => "\"\"",	
+					default_value => "\"\"",
 				   },
 				   {
 					type => "STRING",
 					help_string => "Substitute string encode format, only support \\\"GBK\\\" \\\"GB2312\\\" \\\"utf-8\\\" or \\\"\\\"; Or ProxyHTMLURLMap string encode format, set it \\\"\\\"",
 					optional => "YES",
-					default_value => "\"\"",	
+					default_value => "\"\"",
 				   },
 				   {
 					type => "STRING",
 					help_string => "Virtual service name, empty means it will apply globally",
 					optional => "YES",
-					default_value => "\"\"",	
+					default_value => "\"\"",
 				   },],
 	},
     	{
@@ -37361,19 +37760,19 @@
 					type => "STRING",
 					help_string => "Flags -iR ('i' : for  case insensitive matching, 'R' : forces the pattern to be treated as a regular expression as opposed to default pattern which is treated as a fixed string.)",
 					optional => "YES",
-					default_value => "\"\"",	
-				   }, 
+					default_value => "\"\"",
+				   },
 				   {
 					type => "STRING",
 					help_string => "Substitute string encode format, only support \\\"GBK\\\" \\\"GB2312\\\" \\\"utf-8\\\" or \\\"\\\"; Or ProxyHTMLURLMap string encode format, set it \\\"\\\"",
 					optional => "YES",
-					default_value => "\"\"",	
+					default_value => "\"\"",
 				   },
 				   {
 					type => "STRING",
 					help_string => "Virtual service name, empty means it will apply globally",
 					optional => "YES",
-					default_value => "\"\"",	
+					default_value => "\"\"",
 				   },],
 	},
         {
@@ -37389,7 +37788,7 @@
 					type => "STRING",
 					help_string => "Virtual service name, defalut is \\\"all\\\"",
 					optional => "YES",
-					default_value => "\"all\"",	
+					default_value => "\"all\"",
 				    },
 					],
 	},
@@ -37406,7 +37805,7 @@
 					type => "STRING",
 					help_string => "Virtual service name, defalut is \\\"all\\\"",
 					optional => "YES",
-					default_value => "\"all\"",	
+					default_value => "\"all\"",
 				    },
 					],
 	},
@@ -37421,7 +37820,7 @@
 		function_args => [ {
 					type => "U32",
 					help_string => "Upper length limit in KBytes (0 to 1048576, default: 5120)",
-					optional => "YES", 
+					optional => "YES",
 					default_value => "5120",
 		}, ],
 	},
@@ -37587,7 +37986,7 @@
 		parent_menu => "root_http_rewrite_body",
 		uniq_name => "root_http_rewrite_body_url",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Modify url access setting for http body rewrite",
 	},
         {
@@ -37596,7 +37995,7 @@
 		parent_menu => "root_no_http_rewrite_body",
 		uniq_name => "root_no_http_rewrite_body_url",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove  url access configuration for http body rewrite",
 	},
         {
@@ -37605,7 +38004,7 @@
 		parent_menu => "root_clear_http_rewrite_body",
 		uniq_name => "root_clear_http_rewrite_body_url",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Reset url access http body rewrite settings",
 	},
         {
@@ -37648,7 +38047,7 @@
 								type => "STRING",
 								help_string => "url access list name",
 								optional => "NO",
-							}, 
+							},
 				  {
 								type => "STRING",
 								help_string => "wildcard expression",
@@ -37716,7 +38115,7 @@
 								type => "STRING",
 								help_string => "virtual service name",
 								optional => "NO",
-							}, 
+							},
 				  {
 								type => "STRING",
 								help_string => "url access list name",
@@ -37783,7 +38182,7 @@
 								type => "STRING",
 								help_string => "virtual service name",
 								optional => "NO",
-							}, 
+							},
 				  {
 								type => "STRING",
 								help_string => "url access list name",
@@ -37825,7 +38224,7 @@
 		parent_menu => "root_http_rewrite",
 		uniq_name => "root_http_rewrite_request",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "    Modify setting for http request rewrite",
 	},
         {
@@ -37834,7 +38233,7 @@
 		parent_menu => "root_no_http_rewrite",
 		uniq_name => "root_no_http_rewrite_request",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "    Remove configuration for http request rewrite",
 	},
         {
@@ -37843,7 +38242,7 @@
 		parent_menu => "root_clear_http_rewrite",
 		uniq_name => "root_clear_http_rewrite_request",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "    Reset http request rewrite settings",
 	},
         {
@@ -38019,7 +38418,7 @@
 		parent_menu => "root_http_rewrite",
 		uniq_name => "root_http_rewrite_response",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "    Modify setting for http response rewrite",
 	},
         {
@@ -38028,7 +38427,7 @@
 		parent_menu => "root_no_http_rewrite",
 		uniq_name => "root_no_http_rewrite_response",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "    Remove configuration for http response rewrite",
 	},
         {
@@ -38037,7 +38436,7 @@
 		parent_menu => "root_clear_http_rewrite",
 		uniq_name => "root_clear_http_rewrite_response",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "    Reset http response rewrite settings",
 	},
         {
@@ -38180,7 +38579,7 @@
 		parent_menu => "root_http_rewrite_response",
 		uniq_name => "root_http_rewrite_response_cookie",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Modify setting for Set-Cookie header rewrite",
 	},
         {
@@ -38189,7 +38588,7 @@
 		parent_menu => "root_http_rewrite_response_cookie",
 		uniq_name => "root_http_rewrite_response_cookie_secure",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Modify secure setting for Set-Cookie header rewrite for https clients",
 	},
 	{
@@ -38222,14 +38621,14 @@
 					default_value => "\"\"",
 						},],
 	},
-	# bug 12097, zhangzh, 20060112 
+	# bug 12097, zhangzh, 20060112
 	{
 		obj_type => "MENU",
 		name => "icookie",
 		parent_menu => "root_http_rewrite_response_cookie_secure",
 		uniq_name => "root_http_rewrite_response_cookie_secure_icookie",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Modify setting for insert Set-Cookie header for https clients",
 	},
 	{
@@ -38268,7 +38667,7 @@
 		parent_menu => "root_http_rewrite_response_cookie",
 		uniq_name => "root_http_rewrite_response_cookie_samesite",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Modify SameSite setting for Set-Cookie header rewrite for http(s) clients",
 	},
 	{
@@ -38311,8 +38710,8 @@
 					},
 				],
 	},
-	
-	# bug 12097, end 
+
+	# bug 12097, end
         {
 		obj_type => "MENU",
 		name => "cookie",
@@ -38348,7 +38747,7 @@
 		parent_menu => "root_clear_http_rewrite_response",
 		uniq_name => "root_clear_http_rewrite_response_cookie",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Reset http response rewrite cookie settings",
 	},
     {
@@ -38529,7 +38928,7 @@
 		parent_menu => "root_http_rewrite_response",
 		uniq_name => "root_http_rewrite_response_cachecontrol",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",		
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Configure rewrite rules of \\\"Cache-Control\\\" header",
 	},
 	{
@@ -38698,7 +39097,7 @@
 		help_string => "    Import http files from remote url",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-	},        
+	},
         {
 		obj_type => "ITEM",
 		name => "error",
@@ -38716,7 +39115,7 @@
 								type => "STRING",
 								help_string => "Virtual Service name or default, default can import the error page that can be accessed by all virtual service",
 								optional => "NO",
-							}, 
+							},
 				   {
 								type => "STRING",
 								help_string => "remote url",
@@ -38751,7 +39150,7 @@
 								help_string => "Virtual Service name or default. Please omit virtual service name to clear error pages for all virtual services",
 								optional => "YES",
 								default_value => "\"\"",
-							}, 
+							},
 				   ],
 	},
         {
@@ -38780,7 +39179,7 @@
 								type => "STRING",
 								help_string => "Virtual Service name or default, default can import the error page that can be accessed by all virtual service",
 								optional => "NO",
-							}, 
+							},
 				   ],
 	},
 	{
@@ -38791,7 +39190,7 @@
 		help_string => "    Show HTTP import files",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
-	},        
+	},
         {
 		obj_type => "ITEM",
 		name => "error",
@@ -38811,8 +39210,8 @@
 								help_string => "Virtual Service name or default. Please omit virtual service name to display error pages for all virtual services",
 								optional => "YES",
 								default_value => "\"\"",
-							}, 
-				   
+							},
+
 				    ],
 	},
         {
@@ -38832,7 +39231,7 @@
 								type => "STRING",
 								help_string => "Virtual Service name or default, default can import the error page that can be accessed by all virtual service",
 								optional => "NO",
-							}, 
+							},
 				   ],
 	},
         {
@@ -38854,7 +39253,7 @@
 								help_string =>  "Virtual Service name or default. Please omit virtual service name to clear error pages for all virtual services",
 								optional => "YES",
 								default_value => "\"\"",
-							}, 
+							},
 				   ],
 	},
 	{
@@ -38874,7 +39273,7 @@
 								type => "STRING",
 								help_string => "Virtual Service name or default, default can import the error page that can be accessed by all virtual service",
 								optional => "NO",
-							}, 
+							},
 				   ],
 	},
         {
@@ -38896,8 +39295,8 @@
 								help_string => "Virtual Service name or default. default can import the error page that can be accessed by all virtual service",
 								optional => "YES",
 								default_value => "\"\"",
-							}, 
-				   
+							},
+
 				    ],
 	},
  	{
@@ -39082,7 +39481,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 	},
-	{ 
+	{
 		obj_type => "ITEM",
 		name => "memory",
 		menu => "root_write",
@@ -39209,13 +39608,13 @@
 								},],
 	},
 	{
-		obj_type => "MENU", 
-		name => "segment", 
-		parent_menu => "root_write", 
-		uniq_name => "root_write_segment", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		help_string => "write running segment config", 
+		obj_type => "MENU",
+		name => "segment",
+		parent_menu => "root_write",
+		uniq_name => "root_write_segment",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "write running segment config",
 	},
 	{
 		obj_type => "ITEM",
@@ -39243,22 +39642,22 @@
 		}, ],
 	},
 	{
-		obj_type => "MENU", 
-		name => "mode", 
-		parent_menu => "root_system", 
-		uniq_name => "root_system_mode", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		help_string => "Mode of operation", 
-	}, 
-	{
-		obj_type => "MENU", 
-		name => "patch", 
-		parent_menu => "root_system", 
-		uniq_name => "root_system_patch", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		help_string => "Patch operation", 
+		obj_type => "MENU",
+		name => "mode",
+		parent_menu => "root_system",
+		uniq_name => "root_system_mode",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Mode of operation",
+	},
+	{
+		obj_type => "MENU",
+		name => "patch",
+		parent_menu => "root_system",
+		uniq_name => "root_system_patch",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Patch operation",
 	},
 	{
 		obj_type => "ITEM",
@@ -39274,58 +39673,58 @@
 									optional => "NO",
 								},],
 	},
-	{ 
-		obj_type => "ITEM", 
-		name => "rollback", 
-		menu => "root_system_patch", 
-		help_string => "Roll back the system to the original version", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_SPROXY", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "ui_patch_rollback", 
-		function_args => [], 
-	}, 
-	{ 
-		obj_type => "ITEM", 
-		name => "reverse", 
-		menu => "root_system_mode", 
-		help_string => "operate as reverse proxy", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "proxy_system_mode_reverse", 
-		function_args => [], 
-	}, 
-	{ 
-		obj_type => "ITEM", 
-		name => "transparent", 
-		menu => "root_system_mode", 
-		help_string => "operate as transparent proxy", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "proxy_system_mode_transparent", 
-		function_args => [], 
-	}, 
-	{ 
-		obj_type => "ITEM", 
-		name => "triangle", 
-		menu => "root_system_mode", 
-		help_string => "operate as triangle mode", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "proxy_system_mode_triangle", 
+	{
+		obj_type => "ITEM",
+		name => "rollback",
+		menu => "root_system_patch",
+		help_string => "Roll back the system to the original version",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_SPROXY",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "ui_patch_rollback",
+		function_args => [],
+	},
+	{
+		obj_type => "ITEM",
+		name => "reverse",
+		menu => "root_system_mode",
+		help_string => "operate as reverse proxy",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "proxy_system_mode_reverse",
+		function_args => [],
+	},
+	{
+		obj_type => "ITEM",
+		name => "transparent",
+		menu => "root_system_mode",
+		help_string => "operate as transparent proxy",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "proxy_system_mode_transparent",
+		function_args => [],
+	},
+	{
+		obj_type => "ITEM",
+		name => "triangle",
+		menu => "root_system_mode",
+		help_string => "operate as triangle mode",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "proxy_system_mode_triangle",
 		function_args => [
 							{
 								type => "STRING",
-								help_string => "Virtual service name or all",   
+								help_string => "Virtual service name or all",
 								optional => "YES",
 								default_value => "\"all\"",
 							},
 							{
 								type => "STRING",
-								help_string => "Triangle mode(must be \\\"direct\\\" or \\\"route\\\")",   
+								help_string => "Triangle mode(must be \\\"direct\\\" or \\\"route\\\")",
 								optional => "YES",
 								default_value => "\"direct\"",
-							},], 
-	}, 
+							},],
+	},
 # bug 11021, zhangwy, 2005/10/10
 #	{
 #		obj_type => "ITEM",
@@ -39363,12 +39762,12 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_NON_SERIAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "ui_tune_segment_iprange",
-		function_args => [ 
+		function_args => [
 		{
 				type => "IPADDR",
 				help_string => "network IP address",
 				optional => "NO",
-		}, 
+		},
 		{
 				type => "IPMASK",
 				help_string => "subnet mask length",
@@ -39619,7 +40018,7 @@
 		function_args => [ {
 					type => "U32",
 					help_string => "Maximum receive buffer size in bytes. Default value is 131072",
-					optional => "YES", 
+					optional => "YES",
 					default_value => "131072",
 		}, ],
 	},
@@ -39653,7 +40052,7 @@
 		function_args => [ {
 					type => "U16",
 					help_string => "Windows scale shift count. Default value is 3",
-					optional => "YES", 
+					optional => "YES",
 					default_value => "3",
 		}, ],
 	},
@@ -39820,7 +40219,7 @@
 								{
 									type => "U16",
 									help_string => "Set Virtual Service mss size (optional, the range is 536~1460 or 0, default = 0 means off)",
-									optional => "YES", 
+									optional => "YES",
 									default_value => "0",
 								}, ],
 	},
@@ -39866,7 +40265,7 @@
 								{
 									type => "U16",
 									help_string => "Window scale shift count for virtual service, default value is 3",
-									optional => "YES", 
+									optional => "YES",
 									default_value => "3",
 								}, ],
 
@@ -39903,7 +40302,7 @@
 						],
 
 	},
-	
+
 	{
 		obj_type => "MENU",
 		name => "retransmit",
@@ -40182,7 +40581,7 @@
  									type => "U32",
  									help_string => "idle cache replacement threshold",
  									optional => "NO",
- 									}, 
+ 									},
  				   {
  									type => "U32",
  									help_string => "cache miss splice threshold",
@@ -40199,7 +40598,7 @@
  									optional => "NO",
  									},],
  	},
-	# bug 16003, lingx, 20070420 
+	# bug 16003, lingx, 20070420
 	{
 		obj_type => "ITEM",
 		name => "attackfilter",
@@ -40440,12 +40839,12 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "ui_tune_no_segment_iprange",
-		function_args => [ 
+		function_args => [
 		{
 				type => "IPADDR",
 				help_string => "network IP address",
 				optional => "NO",
-		}, 
+		},
 		{
 				type => "IPMASK",
 				help_string => "subnet mask length",
@@ -40501,7 +40900,7 @@
 		function_name => "ui_tune_no_packfilter",
 		function_args => [],
 	},
-	# bug 16003, end 
+	# bug 16003, end
 	{
 		obj_type => "ITEM",
 		name => "hwcksum",
@@ -40758,7 +41157,7 @@
 		function_name => "ui_tune_no_tcp_syntimeout",
 		function_args => [],
 	},
-	{   
+	{
 		obj_type => "ITEM",
 		name => "timewait",
 		menu => "root_no_system_tune_tcp",
@@ -40767,7 +41166,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "ui_tune_no_tcp_time_wait",
 		function_args => [],
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "verifycert",
@@ -40965,7 +41364,7 @@
 		obj_type => "ITEM",
 		name => "watch",
 		menu => "root_debug",
-		help_string => "Watching system status", 
+		help_string => "Watching system status",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KILLABLE|CMD_NON_MORE",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "ui_monitor",
@@ -40988,12 +41387,12 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENGINEER",
 		function_name => "englog_subsystem_disable",
-		function_args => [ 
+		function_args => [
 						{
 								type => "STRING",
 								help_string => "Subsystem name to stop debugging",
 								optional => "NO",
-							}, 
+							},
 							{
 								type => "STRING",
 								help_string => "Messages class name to stop displaying (optional, default is no_englog)",
@@ -41168,12 +41567,12 @@
 		                     type => "STRING",
 				     help_string => "VXLAN interface name",
 				     optional => "NO",
-				 }, 
+				 },
 				 {
 		                     type => "U32",
 				     help_string => "VNI number",
 				     optional => "NO",
-				 }, 
+				 },
 			 ],
 	},
 	{
@@ -41253,17 +41652,17 @@
 							type => "STRING",
 							help_string => "Tunnel name",
 							optional => "NO",
-						},  
+						},
 						{
 							type => "IPADDR",
 							help_string => "Local VTEP IP",
 							optional => "NO",
-						}, 
+						},
 						{
 							type => "IPADDR",
 							help_string => "Remote VTEP IP",
 							optional => "NO",
-						}, 
+						},
 					  ],
 	},
 	{
@@ -41279,12 +41678,12 @@
 							type => "STRING",
 							help_string => "VXLAN interface name",
 							optional => "NO",
-						},  
+						},
 						{
 							type => "STRING",
 							help_string => "Tunnel name",
 							optional => "NO",
-						},  
+						},
 					  ],
 	},
 	{
@@ -41300,12 +41699,12 @@
 							type => "STRING",
 							help_string => "VXLAN interface name",
 							optional => "NO",
-						},  
+						},
 						{
 							type => "STRING",
 							help_string => "VLAN interface name",
 							optional => "NO",
-						},  
+						},
 					  ],
 	},
 	{
@@ -41330,17 +41729,17 @@
 							type => "U32",
 							help_string => "VNI number",
 							optional => "NO",
-						},  
+						},
 						{
 							type => "STRING",
 							help_string => "Destination MAC address (x:x:x:x:x:x)",
 							optional => "NO",
-						},  
+						},
 						{
 							type => "IPADDR",
 							help_string => "Remote VTEP IP address",
 							optional => "NO",
-						},  
+						},
 					  ],
 	},
 	{
@@ -41356,12 +41755,12 @@
 							type => "U32",
 							help_string => "VNI number",
 							optional => "NO",
-						},  
+						},
 						{
 							type => "STRING",
 							help_string => "Destination MAC address (x:x:x:x:x:x)",
 							optional => "NO",
-						},  
+						},
 					  ],
 	},
 	{
@@ -41372,7 +41771,7 @@
 		help_string => "Remove VXLAN settings",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_ENABLE",
-	},   
+	},
 	{
 		obj_type => "ITEM",
 		name => "interface",
@@ -41385,7 +41784,7 @@
 		                     type => "STRING",
 				     help_string => "VXLAN interface name",
 				     optional => "NO",
-				 }, 
+				 },
 			 ],
 	},
 	{
@@ -41401,7 +41800,7 @@
 							type => "STRING",
 							help_string => "Tunnel name",
 							optional => "NO",
-						},  
+						},
 					  ],
 	},
 	{
@@ -41417,12 +41816,12 @@
 							type => "STRING",
 							help_string => "VXLAN interface name",
 							optional => "NO",
-						},  
+						},
 						{
 							type => "STRING",
 							help_string => "Tunnel name",
 							optional => "NO",
-						},  
+						},
 					  ],
 	},
 	{
@@ -41438,7 +41837,7 @@
 							type => "STRING",
 							help_string => "VXLAN interface name",
 							optional => "NO",
-						},  
+						},
 					  ],
 	},
 	{
@@ -41449,7 +41848,7 @@
 		help_string => "Delete VXLAN forwarding entries",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_ENABLE",
-	},  
+	},
 	{
 		obj_type => "ITEM",
 		name => "remote",
@@ -41463,12 +41862,12 @@
 							type => "U32",
 							help_string => "VNI number",
 							optional => "NO",
-						},  
+						},
 						{
 							type => "STRING",
 							help_string => "Destination MAC address (x:x:x:x:x:x)",
 							optional => "NO",
-						},  
+						},
 					  ],
 	},
 	{
@@ -41484,12 +41883,12 @@
 							type => "U32",
 							help_string => "VNI number",
 							optional => "NO",
-						},  
+						},
 						{
 							type => "STRING",
 							help_string => "Destination MAC address (x:x:x:x:x:x)",
 							optional => "NO",
-						},  
+						},
 					  ],
 	},
 	{
@@ -41554,7 +41953,7 @@
 				     help_string => "VXLAN interface name",
 				     optional => "YES",
 				     default_value => "\"\"",
-				 }, 
+				 },
 			 ],
 	},
 	{
@@ -41570,7 +41969,7 @@
 				     help_string => "VXLAN interface name",
 				     optional => "YES",
 				     default_value => "\"\"",
-				 }, 
+				 },
 			 ],
 	},
 	{
@@ -41586,7 +41985,7 @@
 				     help_string => "VXLAN tunnel name",
 				     optional => "YES",
 				     default_value => "\"\"",
-				 }, 
+				 },
 			 ],
 	},
 	{
@@ -41601,7 +42000,7 @@
 		                     type => "U32",
 				     help_string => "VNI number",
 				     optional => "NO",
-				 }, 
+				 },
 				 {
 		                     type => "STRING",
 				     help_string => "MAC address",
@@ -41642,7 +42041,7 @@
 				     help_string => "VXLAN interface name",
 				     optional => "YES",
 				     default_value => "\"\"",
-				 }, 
+				 },
 			 ],
 	},
 	{
@@ -41706,7 +42105,7 @@
 		                     type => "U32",
 				     help_string => "VNI number",
 				     optional => "NO",
-				 }, 
+				 },
 			 ],
 	},
 	{
@@ -41721,12 +42120,12 @@
 		                     type => "U32",
 				     help_string => "VNI number",
 				     optional => "NO",
-				 }, 
+				 },
 			 ],
 	},
-	
+
 # vxlan end
-	
+
 
 # Begin - XMLRPC Commands
 	{
@@ -41747,14 +42146,14 @@
 		help_string => "   Turn XMLRPC On",
 		function_name => "xmlrpc_on",
 		function_args => [
-		
+
 #panzj, 2004-08-26, add a protocol parameter
 						{
 							type => "STRING",
 							help_string => "[https | http], default value is https",
 							optional => "YES",
 							default_value => "\"https\"",
-						},  
+						},
 #END of adding a protocol parameter
 						 ],
 	},
@@ -41794,12 +42193,12 @@
                 type => "IPADDR",
                 help_string => "Source IP (ipv4 in 10.0.0.0 format or IPv6 in ff:fe::0 format)",
                 optional => "NO",
-            }, 
+            },
             {
                 type => "IPMASK",
                 help_string => "Netmask for IPv4(e.g. 255.255.255.0), or prefix length for IPv6, in range [1,128]",
                 optional => "NO",
-            },          
+            },
             {
                 type => "STRING",
                 help_string => "The action of this rule (permit or deny. default is permit)",
@@ -41858,7 +42257,7 @@
         help_string => "Delete XMLRPC settings",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
         user_level => "CLI_LEVEL_CONFIG",
-    },   
+    },
     {
         obj_type => "ITEM",
         name => "source",
@@ -41871,7 +42270,7 @@
                 type => "IPADDR",
                 help_string => "Source IP (ipv4 in 10.0.0.0 format or IPv6 in ff:fe::0 format)",
                 optional => "NO",
-            }, 
+            },
             {
                 type => "IPMASK",
                 help_string => "Netmask for IPv4(e.g. 255.255.255.0), or prefix length for IPv6, in range [1,128]",
@@ -41994,7 +42393,7 @@
 #	},
 # End - SOAP Commands
 
-	{ 
+	{
 		obj_type => "ITEM",
 		name => "engineering",
 		menu => ".",
@@ -42293,12 +42692,12 @@
 				     optional => "NO",
 				   },
 				   # Bug 24350, chenhb, 20091118
-				   { 
+				   {
 				     type => "STRING",
 		                     help_string => "argument to ssldump (Example: port 443)",
 				     optional => "NO",
-			   	   }, 
-				   # Bug 24350, end 
+			   	   },
+				   # Bug 24350, end
 				   ],
 	},
 	{
@@ -42396,8 +42795,8 @@
 				      type => "STRING",
 			              help_string => "argument to ssldump (Example: port 443)",
 		                      optional => "NO",
-		                   },   
-		                   # Bug 24350, end 
+		                   },
+		                   # Bug 24350, end
 				   ],
 	},
 	{
@@ -42484,7 +42883,7 @@
 				     optional => "YES",
 				     default_value => "\"\"",
 				   }, ],
-	},	
+	},
 	#end of bug 22903
 	{
 		obj_type => "MENU",
@@ -42574,7 +42973,7 @@
 		function_name => "debug_snapshot_system",
 		function_args => [],
 	},
-	
+
 	{
 		obj_type => "ITEM",
 		name => "scp",
@@ -42587,7 +42986,7 @@
 							type => "STRING",
 							help_string => "\\\"user\@host:\\\" of the receiving side (such as \\\"root\@192.168.1.1:\\\")",
 							optional => "NO",
-							}, 
+							},
 							{
 								type => "STRING",
 								help_string => "local file name without suffix \\\"tar.gz\\\", default is \\\"all\\\"",
@@ -42725,7 +43124,7 @@
                 user_level => "CLI_LEVEL_CONFIG",
                 function_name => "debug_monitor_off",
                 function_args => [],
-        },	
+        },
 	{
 		obj_type => "MENU",
 		name => "import",
@@ -42734,7 +43133,7 @@
 		help_string => "Import debug cli config file",
 		parent_menu => "root_debug_monitor",
 		uniq_name => "root_debug_monitor_import",
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "ftp",
@@ -42784,7 +43183,7 @@
 		help_string => "Export debug output file",
 		parent_menu => "root_debug_monitor",
 		uniq_name => "root_debug_monitor_export",
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "ftp",
@@ -42821,7 +43220,7 @@
 							},
 				 		 ],
 	},
-	
+
 	{
 		obj_type => "MENU",
 		name => "usage",
@@ -42885,7 +43284,7 @@
 		parent_menu => "root_debug",
 		uniq_name => "root_debug_hardware",
 	},
-	
+
 	{
 		obj_type => "ITEM",
 				name => "diagnostics",
@@ -42914,37 +43313,37 @@
 							default_value => "300",
 						}],
 	},
-	{	
+	{
 		obj_type => "ITEM",
                 name => "cpu",
                 menu => "root_show_debug_usage",
                 help_string => "Show cpu usage information",
                 cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
-                user_level =>"CLI_LEVEL_ENABLE", 
+                user_level =>"CLI_LEVEL_ENABLE",
                 function_name => "show_debug_usage_cpu",
                 function_args => [],
-	
+
 	},
-	{	
+	{
 		obj_type => "ITEM",
                 name => "exception",
                 menu => "root_show_debug",
                 help_string => "Show debug exception information",
                 cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
-                user_level =>"CLI_LEVEL_ENABLE", 
+                user_level =>"CLI_LEVEL_ENABLE",
                 function_name => "show_debug_exception",
                 function_args => [],
-	
+
 	},
-	{ 
-                   obj_type => "ITEM", 
-                   name => "system", 
-                   menu => "root_show_statistics", 
-                   help_string => "  Show CPU statistics", 
-                   cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_MONITOR", 
-                   user_level => "CLI_LEVEL_ENABLE", 
-                   function_name => "kernel_statistic", 
-                   function_args => [], 
+	{
+                   obj_type => "ITEM",
+                   name => "system",
+                   menu => "root_show_statistics",
+                   help_string => "  Show CPU statistics",
+                   cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_MONITOR",
+                   user_level => "CLI_LEVEL_ENABLE",
+                   function_name => "kernel_statistic",
+                   function_args => [],
 	},
  	{
                    obj_type => "ITEM",
@@ -42959,7 +43358,7 @@
                                             type => "STRING",
                                             help_string => "Virtual service name, global or all (value \\\"all\\\" means \\\"virtual services + global\\\" statistics, default=global )",
                                             optional => "YES",
-                                            default_value => "\"\"",    
+                                            default_value => "\"\"",
                                         },
                                     ],
         },
@@ -43547,7 +43946,7 @@
 # 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 # 		user_level => "CLI_LEVEL_CONFIG",
 # 		function_name => "no_rip_version",
-# 		function_args => [], 
+# 		function_args => [],
 # 	},
 # 	{
 # 		obj_type => "MENU",
@@ -43607,7 +44006,7 @@
 # 		function_args => [],
 # 	},
 # # End RIP commands
-		
+
 # # End Volubill specific commands
 
 # Ticket: Ticket-SmartDNS
@@ -43703,7 +44102,7 @@
 									type => "STRING",
 									help_string => "Configuration file name",
 									optional => "NO",
-								}, ],	
+								}, ],
 	},
 	{
 		obj_type => "ITEM",
@@ -43727,7 +44126,7 @@
 					type => "STRING",
 					help_string => "Remote sdns file path",
 					optional => "NO",
-				},],	
+				},],
 	},
 	{
 		obj_type => "MENU",
@@ -43750,7 +44149,7 @@
 									type => "STRING",
 									help_string => "Configuration file name",
 									optional => "NO",
-								}, ],	
+								}, ],
 	},
 	{
 		obj_type => "ITEM",
@@ -43793,14 +44192,14 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "sdns_iana_load",
-		function_args => [ 
+		function_args => [
 			     {
 				      type => "STRING",
 				      help_string => "HTTP/FTP URL for IANA file",
 				      optional => "NO",
 				 },],
 	},
-	
+
 	#End Bug9281
 	{
 		obj_type => "MENU",
@@ -43829,7 +44228,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "monitor_icmp",
-		function_args => [ 
+		function_args => [
 				  {
 				      type => "STRING",
 				      help_string => "monitor name(a string of 1 to 30 characters)",
@@ -43881,7 +44280,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "monitor_tcp",
-		function_args => [ 
+		function_args => [
 				  {
 				      type => "STRING",
 				      help_string => "monitor name(a string of 1 to 30 characters)",
@@ -43895,7 +44294,7 @@
 				  },
 				  {
 				      type => "U32",
-				      help_string => "timeout in seconds(Optional. It should not be greater than the interval value and the default value is 5.)", 
+				      help_string => "timeout in seconds(Optional. It should not be greater than the interval value and the default value is 5.)",
 				      optional => "YES",
 					  default_value => "5",
 				  },
@@ -43949,12 +44348,12 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "monitor_snmp_collector",
 		function_args => [
-				{	
+				{
 					type => "STRING",
 					help_string => "collector name(a string of 1 to 30 characters)",
 					optional => "NO",
 				},
-				{	
+				{
 					type => "STRING",
 					help_string => "oid name",
 					optional => "NO",
@@ -44012,29 +44411,29 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "monitor_http",
-		function_args => [ 
+		function_args => [
 			{
 				type => "STRING",
 				help_string => "monitor name(a string of 1 to 30 characters)",
 				optional => "NO",
 			},
 			{
-				type => "STRING", 
-				help_string => "The HTTP request line, including the request method, URL path and HTTP version. It must be enclosed by double quotes. If it is not specified, the default value is \\\"HEAD / HTTP/1.0\\\\r\\\\n\\\\r\\\\n\\\".", 
+				type => "STRING",
+				help_string => "The HTTP request line, including the request method, URL path and HTTP version. It must be enclosed by double quotes. If it is not specified, the default value is \\\"HEAD / HTTP/1.0\\\\r\\\\n\\\\r\\\\n\\\".",
 				optional => "YES",
 				default_value => "\"\"",
 			},
 			{
 				type => "STRING",
-				help_string => "Expected response, default is \\\"200 OK\\\"", 
+				help_string => "Expected response, default is \\\"200 OK\\\"",
 				optional => "YES",
 				default_value => "\"200 OK\"",
 			},
 			{
-				type => "STRING", 
+				type => "STRING",
 				help_string => "Checker success/fail flag(optional, the value is up or down, default value is up)",
-				optional => "YES", 
-				default_value => "\"up\"", 
+				optional => "YES",
+				default_value => "\"up\"",
 			},
 			{
 				type => "U32",
@@ -44044,7 +44443,7 @@
 			},
 			{
 				type => "U32",
-				help_string => "timeout in seconds(Optional. It should not be greater than the interval value and the default value is 5.)", 
+				help_string => "timeout in seconds(Optional. It should not be greater than the interval value and the default value is 5.)",
 				optional => "YES",
 				default_value => "5",
 			},
@@ -44078,7 +44477,7 @@
 				optional => "YES",
 				default_value => "\"\"",
 			}, ],
-       	}, 
+       	},
 	{
 		obj_type => "ITEM",
 		name => "https",
@@ -44087,29 +44486,29 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "monitor_https",
-		function_args => [ 
+		function_args => [
 			{
 				type => "STRING",
 				help_string => "monitor name(a string of 1 to 30 characters)",
 				optional => "NO",
 			},
 			{
-				type => "STRING", 
-				help_string => "The HTTP request line, including the request method, URL path and HTTP version. It must be enclosed by double quotes. If it is not specified, the default value is \\\"HEAD / HTTP/1.0\\\\r\\\\n\\\\r\\\\n\\\".", 
+				type => "STRING",
+				help_string => "The HTTP request line, including the request method, URL path and HTTP version. It must be enclosed by double quotes. If it is not specified, the default value is \\\"HEAD / HTTP/1.0\\\\r\\\\n\\\\r\\\\n\\\".",
 				optional => "YES",
 				default_value => "\"\"",
 			},
 			{
 				type => "STRING",
-				help_string => "Expected response, default is \\\"200 OK\\\"", 
+				help_string => "Expected response, default is \\\"200 OK\\\"",
 				optional => "YES",
 				default_value => "\"200 OK\"",
 			},
 			{
-				type => "STRING", 
+				type => "STRING",
 				help_string => "Checker success/fail flag(optional, the value is up or down, default value is up)",
-				optional => "YES", 
-				default_value => "\"up\"", 
+				optional => "YES",
+				default_value => "\"up\"",
 			},
 			{
 				type => "U32",
@@ -44119,7 +44518,7 @@
 			},
 			{
 				type => "U32",
-				help_string => "timeout in seconds(Optional. It should not be greater than the interval value and the default value is 5.)", 
+				help_string => "timeout in seconds(Optional. It should not be greater than the interval value and the default value is 5.)",
 				optional => "YES",
 				default_value => "5",
 			},
@@ -44153,7 +44552,7 @@
 				optional => "YES",
 				default_value => "\"\"",
 			}, ],
-       	}, 
+       	},
 	{
 		obj_type => "MENU",
 		name => "service",
@@ -44172,7 +44571,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Set SDNS service monitor",
 	},
-        {     
+        {
 		obj_type => "MENU",
 		name => "health",
 		parent_menu => "root_sdns_service",
@@ -44211,7 +44610,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "sdns_service_monitor_apply",
-		function_args => [ 
+		function_args => [
 				{
 					type => "STRING",
 					help_string => "Service name",
@@ -44232,7 +44631,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "sdns_service_ip",
-		function_args => [ 
+		function_args => [
 				{
 					type => "STRING",
 					help_string => "Service name(a string of 1 to 50 characters)",
@@ -44313,7 +44712,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "sdns_dc_add",
-		function_args => [ 
+		function_args => [
 				{
 					type => "STRING",
 					help_string => "Data center name(a string of 1 to 50 characters)",
@@ -44355,7 +44754,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "sdns_sync_status_kern",
-		function_args => [ 
+		function_args => [
 				  {
 				      type => "U32",
 				      help_string => "interval in seconds(Optional. The range is [1, 86400] and the default value is 3.).",
@@ -44459,7 +44858,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "sdns_host_name",
-		function_args => [ 
+		function_args => [
 				{
 					type => "STRING",
 					help_string => "Host name(a string of 1 to 128 characters in the  format of www.xyz.com)",
@@ -44536,27 +44935,27 @@
 	user_level => "CLI_LEVEL_ENGINEER",
 	function_name => "sdns_dnssec_fullsign",
 	function_args => [
-	{     
+	{
 		type => "STRING",
 		help_string => "Host name",
-		optional => "NO", 
-	},    
-	{     
+		optional => "NO",
+	},
+	{
 		type => "STRING",
 		help_string => "KSK file",
-		optional => "NO", 
-	},    
-	{     
+		optional => "NO",
+	},
+	{
 		type => "STRING",
 		help_string => "ZSK file",
-		optional => "NO", 
-	},    
-	{     
+		optional => "NO",
+	},
+	{
 		type => "STRING",
 		help_string => "zone file name(must in the format of db.xxxx.0, xxxx means host name)",
-		optional => "NO", 
-	},    
-	],    
+		optional => "NO",
+	},
+	],
 },
 
 
@@ -44635,7 +45034,7 @@
 		help_string => "Key size(Optional. The value must be [512-2048]. The default value is 1024).",
 		optional => "YES",
 		default_value => "1024",
-	}, 
+	},
 	],
 },
 
@@ -45023,9 +45422,9 @@
 },
 
 
-	
 
-	
+
+
 
 	{
 		obj_type => "MENU",
@@ -45152,7 +45551,7 @@
 				optional => "NO",
 			},
 		],
-	}, 
+	},
 	{
 		obj_type => "MENU",
 		name => "monitor",
@@ -45387,7 +45786,7 @@
 				{
 					type => "STRING",
 					help_string => "Pool name",
-					optional => "NO", 
+					optional => "NO",
 				},
 				{
 					type => "STRING",
@@ -45437,7 +45836,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "sdns_policy_default",
-		function_args => [ 
+		function_args => [
 				  {
 				      type => "STRING",
 				      help_string => "Host name",
@@ -45458,7 +45857,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "sdns_policy_resort",
-		function_args => [ 
+		function_args => [
 				  {
 				      type => "STRING",
 				      help_string => "Host name",
@@ -45480,7 +45879,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "sdns_policy_region",
-		function_args => [ 
+		function_args => [
 				  {
 				      type => "STRING",
 				      help_string => "Policy name(a string of 1 to 40 characters)",
@@ -45538,12 +45937,12 @@
 				      type => "IPADDR",
 				      help_string => "Source IP",
 				      optional => "NO",
-				  }, 
+				  },
 				  {
 				      type => "IPMASK",
 				      help_string => "Netmask/PrefixLength",
 				      optional => "NO",
-				  }, 
+				  },
 				  {
 				      type => "STRING",
 				      help_string => "Region name",
@@ -45577,7 +45976,7 @@
 				{
 					type => "STRING",
 					help_string => "Oid number(a string of 2 to 1407 characters)",
-					optional => "NO", 
+					optional => "NO",
 				},
 				],
 	},
@@ -45602,7 +46001,7 @@
 				{
 					type => "STRING",
 					help_string => "Expression name(a string of 1 to 20 characters)",
-					optional => "NO",                                                          
+					optional => "NO",
 				},
 				{
 					type => "STRING",
@@ -45690,7 +46089,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "sdns_dynamic_detector",
-		function_args => [ 
+		function_args => [
 				{
 					type => "STRING",
 					help_string => "Existing region name(a string of 1 to 30 characters)",
@@ -45729,7 +46128,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "set_sdns_dynamic_method",
-		function_args => [ 
+		function_args => [
 				  {
 				      type => "STRING",
 				      help_string => "Methods: rtt, plr, hops, mix",
@@ -45763,8 +46162,8 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		function_name => "sdns_local_detector",
-		function_args => [ 
-			{    
+		function_args => [
+			{
 				type => "STRING",
 				help_string => "Detector name(a string of 1 to 30 characters)",
 				optional => "NO",
@@ -45776,7 +46175,7 @@
 			},
 			{
 				type => "U16",
-				help_string => "Listen port for local DNS detect packets(Optional. The range is [1025, 65535] and the default value is 53455.)", 
+				help_string => "Listen port for local DNS detect packets(Optional. The range is [1025, 65535] and the default value is 53455.)",
 				optional => "YES",
 				default_value => "53455",
 			},
@@ -45803,7 +46202,7 @@
 				help_string => "IP address for communicating with SDNS DPS(if not set, use the IP address for detecting)",
 				optional => "YES",
 				default_value => "\"\"",
-			} 
+			}
 		],
 	},
 	{
@@ -45853,7 +46252,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "set_sdns_dynamic_send_interval",
-		function_args => [ 
+		function_args => [
 				  {
 				      type => "U32",
 				      help_string => "Interval in seconds(The range is [1, 2147483647] and the default value is 120.)",
@@ -45870,7 +46269,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "set_sdns_dynamic_query_interval",
-		function_args => [ 
+		function_args => [
 				  {
 				      type => "U32",
 				      help_string => "Interval in seconds(The range is [1, 2147483647] and the default value is 1200.)",
@@ -45887,7 +46286,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "set_sdns_dynamic_expire",
-		function_args => [ 
+		function_args => [
 				{
 					type => "U32",
 					help_string => "Expiration time of dynamic proximity rules in seconds(The range is [5, 2147483647] and the default value is 1500.)",
@@ -46179,7 +46578,7 @@
 				},
 				],
 	},
-    {     
+    {
 		obj_type => "ITEM",
 		name => "cname",
 		menu => "root_no_sdns_pool",
@@ -46188,14 +46587,14 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "no_sdns_pool_cname",
 		function_args => [
-				{     
+				{
 					type => "STRING",
 					help_string => "Cname pool name",
-					optional => "NO", 
+					optional => "NO",
 				},
-				],     
+				],
 	},
-	{     
+	{
 		obj_type => "ITEM",
 		name => "service",
 		menu => "root_no_sdns_pool",
@@ -46205,10 +46604,10 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "no_sdns_pool_service",
 		function_args => [
-				{     
+				{
 					type => "STRING",
 					help_string => "Pool name",
-					optional => "NO", 
+					optional => "NO",
 				},
 				{
 					type => "STRING",
@@ -46217,7 +46616,7 @@
 				},
 				],
 	},
-        {     
+        {
 		obj_type => "ITEM",
 		name => "fallback",
 		menu => "root_no_sdns_pool",
@@ -46227,14 +46626,14 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "no_sdns_pool_fallback",
 		function_args => [
-				{     
+				{
 					type => "STRING",
 					help_string => "Pool name",
-					optional => "NO", 
-				},    
-				],    
+					optional => "NO",
+				},
+				],
 	},
-	{     
+	{
 		obj_type => "MENU",
 		name => "method",
 		parent_menu => "root_no_sdns_pool",
@@ -46252,12 +46651,12 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "no_sdns_pool_method_secondary",
 		function_args => [
-				{     
+				{
 					type => "STRING",
 					help_string => "Pool name",
-					optional => "NO", 
+					optional => "NO",
 				},
-				],    
+				],
 	},
 	{
 		obj_type => "MENU",
@@ -46268,7 +46667,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove SDNS pool monitor configuration",
 	},
-	{     
+	{
 		obj_type => "ITEM",
 		name => "apply",
 		menu => "root_no_sdns_pool_monitor",
@@ -46277,17 +46676,17 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "no_sdns_pool_monitor_apply",
 		function_args => [
-		{     
+		{
 			type => "STRING",
 			help_string => "Pool name",
-			optional => "NO", 
-		},    
-		{     
+			optional => "NO",
+		},
+		{
 			type => "STRING",
 			help_string => "Monitor name",
-			optional => "NO", 
-		},    
-		],    
+			optional => "NO",
+		},
+		],
 	},
 	{
 		obj_type => "MENU",
@@ -46298,7 +46697,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove SDNS pool member health mixrelation",
 	},
-	{     
+	{
 		obj_type => "ITEM",
 		name => "mixrelation",
 		menu => "root_no_sdns_pool_health",
@@ -46307,13 +46706,13 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "no_sdns_pool_health_mixrelation",
 		function_args => [
-		{     
+		{
 			type => "STRING",
 			help_string => "Pool name",
-			optional => "NO", 
-		},    
-		],    
-	}, 
+			optional => "NO",
+		},
+		],
+	},
 	{
 		obj_type => "MENU",
 		name => "policy",
@@ -46333,7 +46732,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "no_sdns_policy_default",
 		function_args => [
-				{	 
+				{
 					type => "STRING",
 					help_string => "Host name",
 					optional => "NO",
@@ -46349,7 +46748,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "no_sdns_policy_resort",
 		function_args => [
-				{	 
+				{
 					type => "STRING",
 					help_string => "Host name",
 					optional => "NO",
@@ -46386,18 +46785,18 @@
 				      type => "IPADDR",
 				      help_string => "Source IP",
 				      optional => "NO",
-				  }, 
+				  },
 				  {
 				      type => "IPMASK",
 				      help_string => "Netmask/PrefixLength",
 				      optional => "NO",
-				  }, 
+				  },
 				  {
 				      type => "STRING",
 				      help_string => "Region name",
 				      optional => "NO",
 				  },
-				  ], 
+				  ],
 	},
 	{
 		obj_type => "ITEM",
@@ -46407,7 +46806,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "no_sdns_region_userland",
-		function_args => [ 
+		function_args => [
 				{
 					type => "STRING",
 					help_string => "region name",
@@ -46643,7 +47042,7 @@
 #	cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 #	user_level => "CLI_LEVEL_CONFIG",
 #	function_name => "clear_sdns_dnssec_publish",
-#	function_args => [ 
+#	function_args => [
 #	{
 #		type => "STRING",
 #		help_string => "Domain name",
@@ -46651,7 +47050,7 @@
 #		default_value => "\"\"",
 #	},
 #	],
-#},	
+#},
 {
 	obj_type => "ITEM",
 	name => "all",
@@ -46660,7 +47059,7 @@
 	cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 	user_level => "CLI_LEVEL_CONFIG",
 	function_name => "clear_sdns_dnssec_all",
-	function_args => [ 
+	function_args => [
 	],
 },
 	{
@@ -46718,7 +47117,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "clear_sdns_zone_record",
-		function_args => [ 
+		function_args => [
 				{
 					type => "STRING",
 					help_string => "Zone name or all",
@@ -46755,7 +47154,7 @@
 		function_name => "clear_sdns_pool_name",
 		function_args => [ ],
 	},
-	{     
+	{
 		obj_type => "ITEM",
 		name => "cname",
 		menu => "root_clear_sdns_pool",
@@ -46765,7 +47164,7 @@
 		function_name => "clear_sdns_pool_cname",
 		function_args => [ ],
 	},
-        {     
+        {
 		obj_type => "ITEM",
 		name => "fallback",
 		menu => "root_clear_sdns_pool",
@@ -46785,7 +47184,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "clear_sdns_pool_service",
-		function_args => [ 
+		function_args => [
 				{
 					type => "STRING",
 					help_string => "Pool name",
@@ -46802,7 +47201,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear the pool monitor configuration",
 	},
-	{     
+	{
 		obj_type => "ITEM",
 		name => "apply",
 		menu => "root_clear_sdns_pool_monitor",
@@ -46828,7 +47227,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear the pool member configuration",
 	},
-	{     
+	{
 		obj_type => "ITEM",
 		name => "priority",
 		menu => "root_clear_sdns_pool_member",
@@ -46844,7 +47243,7 @@
 				},
 				],
 	},
-	{     
+	{
 		obj_type => "ITEM",
 		name => "weight",
 		menu => "root_clear_sdns_pool_member",
@@ -46891,7 +47290,7 @@
 		function_name => "clear_sdns_policy_resort",
 		function_args => [ ],
 	},
-        {     
+        {
 		obj_type => "ITEM",
 		name => "region",
 		menu => "root_clear_sdns_policy",
@@ -46942,23 +47341,23 @@
 		function_args => [ ],
 	},
 	{
-		obj_type => "MENU", 
+		obj_type => "MENU",
 		name => "exp",
 		parent_menu => "root_clear_sdns_snmp",
 		uniq_name => "root_clear_sdns_snmp_exp",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",               
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear all the SDNS SNMP expression configuration",
 	},
 	{
-		obj_type => "ITEM", 
+		obj_type => "ITEM",
 		name => "weight",
 		menu => "root_clear_sdns_snmp_exp",
 		help_string => "Remove all the SDNS SNMP weight expression settings",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
-		user_level => "CLI_LEVEL_CONFIG",               
+		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "clear_sdns_snmp_exp_weight",
-		function_args => [ ],                                           
+		function_args => [ ],
 	},
 	{
                 obj_type => "MENU",
@@ -47019,7 +47418,7 @@
 				 	optional => "YES",
 				 	default_value => "0",
 				},],
-		
+
 	},
 	{
 		obj_type => "ITEM",
@@ -47129,7 +47528,7 @@
 		function_name => "show_monitor_all",
 		function_args => [ ],
 	},
-	{ 
+	{
 		obj_type => "ITEM",
 		name => "instance",
 		menu => "root_show_sdns_monitor",
@@ -47208,7 +47607,7 @@
 						help_string => "SDNS service name",
 						optional => "YES",
 						default_value => "\"\"",
-					},			
+					},
 				],
 	},
 	{
@@ -47315,7 +47714,7 @@
 					default_value => "\"\"",
 				},
 				],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "listener",
@@ -47372,7 +47771,7 @@
 				},
 				],
 	},
-	{     
+	{
 		obj_type => "ITEM",
 		name => "fallback",
 		menu => "root_show_sdns_pool",
@@ -47390,13 +47789,13 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_sdns_pool_status",
-		function_args => [ 
+		function_args => [
 						{
 							type => "STRING",
 							help_string => "Pool name",
 							optional => "YES",
 							default_value => "\"\"",
-						},			
+						},
 						],
 	},
 	{
@@ -47416,32 +47815,32 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_sdns_pool_health_relation",
-		function_args => [ 
+		function_args => [
 						{
 							type => "STRING",
 							help_string => "SDNS pool name",
 							optional => "YES",
 							default_value => "\"\"",
-						},			
+						},
 				],
 	},
-	{ 
-		obj_type => "ITEM", 
-		name => "mixrelation", 
-		menu => "root_show_sdns_pool_health", 
-		help_string => "Show SDNS pool health mixrelation", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API", 
-		user_level => "CLI_LEVEL_ENABLE", 
-		function_name => "show_sdns_pool_health_mixrelation", 
-		function_args => [  
-		{ 
-				type => "STRING", 
-				help_string => "SDNS pool name", 
-				optional => "YES", 
-				default_value => "\"\"", 
-		},                       
-		], 
-	},  
+	{
+		obj_type => "ITEM",
+		name => "mixrelation",
+		menu => "root_show_sdns_pool_health",
+		help_string => "Show SDNS pool health mixrelation",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_ENABLE",
+		function_name => "show_sdns_pool_health_mixrelation",
+		function_args => [
+		{
+				type => "STRING",
+				help_string => "SDNS pool name",
+				optional => "YES",
+				default_value => "\"\"",
+		},
+		],
+	},
 
 	{
 		obj_type => "MENU",
@@ -47479,12 +47878,12 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_sdns_proximity_match",
-		function_args => [ 
+		function_args => [
 				  {
 				      type => "IPADDR",
 				      help_string => "Local DNS source ip",
 				      optional => "NO",
-				  }, 
+				  },
 				  ],
 	},
 	{
@@ -47578,10 +47977,10 @@
 					help_string => "Expression name(Optional)",
 					optional => "YES",
 					default_value => "\"\"",
-				},	
+				},
 				],
 	},
-    {     
+    {
 		obj_type => "MENU",
 		name => "query",
 		parent_menu => "root_show_sdns",
@@ -47598,8 +47997,8 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_sdns_query_match",
-		function_args => [  
-				{     
+		function_args => [
+				{
 					type => "IPADDR",
 					help_string => "Source ip",
 					optional => "NO",
@@ -47616,7 +48015,7 @@
 					default_value => "\"A\"",
 				},
 				],
-	},	
+	},
 
 {
 	obj_type => "MENU",
@@ -47647,7 +48046,7 @@
 	cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 	user_level => "CLI_LEVEL_ENABLE",
 	function_name => "show_sdns_dnssec_keygen",
-	function_args => [ 
+	function_args => [
 	{
 		type => "STRING",
 		help_string => "Host name",
@@ -47664,7 +48063,7 @@
 	cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 	user_level => "CLI_LEVEL_ENABLE",
 	function_name => "show_sdns_dnssec_keypub",
-	function_args => [ 
+	function_args => [
 	{
 		type => "STRING",
 		help_string => "Host name",
@@ -47681,7 +48080,7 @@
 	cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 	user_level => "CLI_LEVEL_ENABLE",
 	function_name => "show_sdns_dnssec_zonesig",
-	function_args => [ 
+	function_args => [
 	{
 		type => "STRING",
 		help_string => "Host name",
@@ -47698,7 +48097,7 @@
 	cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 	user_level => "CLI_LEVEL_ENABLE",
 	function_name => "show_sdns_dnssec_status",
-	function_args => [ 
+	function_args => [
 	{
 		type => "STRING",
 		help_string => "Host name",
@@ -47716,7 +48115,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_sdns_dnssec_ds",
-		function_args => [ 
+		function_args => [
 				{
 					type => "STRING",
 					help_string => "Two type ds files: generate | import",
@@ -47740,7 +48139,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KILLABLE",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_sdns_dps_path",
-		function_args => [ 
+		function_args => [
 				{
 					type => "IPADDR",
 					help_string => "LocalDNS IP address(Display all dps paths on default. 0.0.0.0 will display all ipv4 dps paths, and :: will display all ipv6 dps paths).",
@@ -47749,7 +48148,7 @@
 				},
 			  	],
 	},
-    {     
+    {
 		obj_type => "MENU",
 		name => "statistics",
 		parent_menu => "root_show_sdns",
@@ -47888,7 +48287,7 @@
 					help_string => "Service name",
 					optional => "YES",
 					default_value => "\"\"",
-				}, 
+				},
 				],
 	},
 		{
@@ -47914,7 +48313,7 @@
 					help_string => "Data center name",
 					optional => "YES",
 					default_value => "\"\"",
-				}, 
+				},
 				],
 	},
 	{
@@ -47926,13 +48325,13 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_statistics_sdns_pool",
 		function_args => [
-				{	
+				{
 					type => "STRING",
 					help_string => "Pool Name",
 					optional => "YES",
 					default_value => "\"\"",
 				},
-				],		
+				],
 	},
 	{
 		obj_type => "ITEM",
@@ -47975,7 +48374,7 @@
 		uniq_name => "root_show_statistics_sdns_policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
-		help_string => "Display SDNS policy statistics",		
+		help_string => "Display SDNS policy statistics",
 	},
 	{
 		obj_type => "ITEM",
@@ -48028,7 +48427,7 @@
 				},
 				],
 	},
-	{     
+	{
 		obj_type => "ITEM",
 		name => "byhost",
 		menu => "root_show_statistics_sdns_policy",
@@ -48037,15 +48436,15 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_statistics_sdns_policy_by_host",
 		function_args => [
-				{     
+				{
 					type => "STRING",
 					help_string => "Host Name",
 					optional => "YES",
 					default_value =>"\"\"",
-				},    
-				],    
-	}, 
-	{     
+				},
+				],
+	},
+	{
 		obj_type => "ITEM",
 		name => "bypool",
 		menu => "root_show_statistics_sdns_policy",
@@ -48054,15 +48453,15 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_statistics_sdns_policy_by_pool",
 		function_args => [
-				{     
+				{
 					type => "STRING",
 					help_string => " Pool Name",
 					optional => "YES",
 					default_value =>"\"\"",
-				},    
-				],    
+				},
+				],
 	},
-	{     
+	{
 		obj_type => "ITEM",
 		name => "byregion",
 		menu => "root_show_statistics_sdns_policy",
@@ -48071,13 +48470,13 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_statistics_sdns_policy_by_region",
 		function_args => [
-				{     
+				{
 					type => "STRING",
 					help_string => "Region Name",
 					optional => "YES",
 					default_value =>"\"\"",
-				},    
-				],    
+				},
+				],
 	},
 #sdns ipregion proximity
 	{
@@ -48088,7 +48487,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Configure SDNS proximity for ip region",
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "proximity",
@@ -48102,14 +48501,14 @@
 				      type => "STRING",
 				      help_string => "ip region name",
 				      optional => "NO",
-				  },		
+				  },
 				  {
 				      type => "STRING",
 				      help_string => "region name",
 				      optional => "NO",
 				  },
 				  ],
-	},	
+	},
 	{
 		obj_type => "MENU",
 		name => "ipregion",
@@ -48118,7 +48517,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display SDNS configuration for ip region",
-	},		
+	},
 	{
 		obj_type => "ITEM",
 		name => "proximity",
@@ -48128,7 +48527,7 @@
 		menu => "root_show_sdns_ipregion",
 		function_name => "show_sdns_ipregion_proximity",
 		function_args => [],
-	},	
+	},
 	{
 		obj_type => "MENU",
 		name => "ipregion",
@@ -48137,7 +48536,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove SDNS configuration for ip region",
-	},		
+	},
 	{
 		obj_type => "ITEM",
 		name => "proximity",
@@ -48158,7 +48557,7 @@
 							optional => "NO",
 						},
 		],
-	},	
+	},
 	{
 		obj_type => "MENU",
 		name => "ipregion",
@@ -48167,7 +48566,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear SDNS configuration for ip region",
-	},		
+	},
 	{
 		obj_type => "ITEM",
 		name => "proximity",
@@ -48177,7 +48576,7 @@
 		menu => "root_clear_sdns_ipregion",
 		function_name => "clear_sdns_ipregion_proximity",
 		function_args => [],
-	},		
+	},
 #end new SDNS
 	{
 		obj_type => "ITEM",
@@ -48219,7 +48618,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 	},
-	{ 
+	{
 		obj_type => "ITEM",
 		name => "file",
 		menu => "root_sdns_dps_write_proximity",
@@ -48292,7 +48691,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "sdns_iana_ip",
-		function_args => [ 
+		function_args => [
 				  {
 				      type => "DOTTEDIP",
 				      help_string => "Ip address",
@@ -48353,7 +48752,7 @@
 		function_name => "show_sdns_local_detector",
 		function_args => [],
 	},
-        #bug 16876, end 
+        #bug 16876, end
         #bug 17884, huangyf, 20071207
 	{
 		obj_type => "ITEM",
@@ -48403,7 +48802,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_ENGINEER",
 		function_name => "show_sdns_bind9_zone_file",
-		function_args => [ 
+		function_args => [
 				  {
 				      type => "STRING",
 				      help_string => "filename",
@@ -48456,7 +48855,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_ENGINEER",
 		function_name => "sdns_bind9_zone_file_import",
-		function_args => [ 
+		function_args => [
 				  {
 				      type => "STRING",
 				      help_string => "zonename",
@@ -48494,7 +48893,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_ENGINEER",
 		function_name => "no_sdns_bind9_zone_file",
-		function_args => [ 
+		function_args => [
 				  {
 				      type => "STRING",
 				      help_string => "filename",
@@ -48509,7 +48908,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_ENGINEER",
 		function_name => "sdns_bind9_conf_file_import",
-		function_args => [],				  
+		function_args => [],
 	},
 	# Bind9 Integration, end
 	{
@@ -48731,7 +49130,7 @@
 								type => "STRING",
 								help_string => "Host name or ip address",
 								optional => "NO",
-							}, 
+							},
 							{
 								type => "U16",
 								help_string => "Port",
@@ -49222,7 +49621,7 @@
 #END of Show HTTP keepalive
 # End http modify header, panzj, 2004-07-30
 
-# Beginning of Cache filter commands; zhangjz 
+# Beginning of Cache filter commands; zhangjz
 {
         obj_type => "MENU",
         name => "filter",
@@ -49232,23 +49631,23 @@
         uniq_name => "root_cache_filter",
         help_string => "Config cache filter",
     },
-{    
+{
         obj_type => "ITEM",
         name => "on",
         help_string => "Enable cache filter",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API|CMD_GLOBAL",
         user_level => "CLI_LEVEL_CONFIG",
-        menu => "root_cache_filter",            
+        menu => "root_cache_filter",
         function_name => "cache_filter_on",
         function_args => [],
 },
-{    
+{
         obj_type => "ITEM",
         name => "off",
         help_string => "Disable cache filter",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API|CMD_GLOBAL",
         user_level => "CLI_LEVEL_CONFIG",
-        menu => "root_cache_filter",            
+        menu => "root_cache_filter",
         function_name => "cache_filter_off",
         function_args => [],
 },
@@ -49265,8 +49664,8 @@
                                     type => "STRING",,
                                     help_string => "Hostname or hostname:port to be matched in the request",
                                     optional => "NO",
-                                },                
-                                {        
+                                },
+                                {
                                     type => "STRING",
                                     help_string => "String of the path to be matched in the request (full RegEx match is supported)",
                                     optional => "NO",
@@ -49274,26 +49673,26 @@
                                                 {
                                     type => "STRING",
                                     help_string => "cache control keyword, cache|urlquery = yes|no,ttl = xxx\\noverride = nsreq|nsresp|ncreq|ncresp|au|co|pr|sc|va|ttl|all|none\\n     nsreq: no-store in request\\n    nsresp: no-store in response\\n     ncreq: no-cache in request\\n    ncresp: no-cache in response\\n        au: authorization\\n        co: cookie\\n        pr: private\\n        sc: set-cookie\\n        va: vary\\n       ttl: TTL\\n       all: all of the above items\\n      none: none of the above items",
-                                    optional => "NO", 
-                                },       
-                                {                         
-                                    type => "STRING",           
-                                    help_string => "cache control keyword, cache|urlquery = yes|no,ttl = xxx\\noverride = nsreq|nsresp|ncreq|ncresp|au|co|pr|sc|va|ttl|all|none\\n     nsreq: no-store in request\\n    nsresp: no-store in response\\n     ncreq: no-cache in request\\n    ncresp: no-cache in response\\n        au: authorization\\n        co: cookie\\n        pr: private\\n        sc: set-cookie\\n        va: vary\\n       ttl: TTL\\n       all: all of the above items\\n      none: none of the above items",             
+                                    optional => "NO",
+                                },
+                                {
+                                    type => "STRING",
+                                    help_string => "cache control keyword, cache|urlquery = yes|no,ttl = xxx\\noverride = nsreq|nsresp|ncreq|ncresp|au|co|pr|sc|va|ttl|all|none\\n     nsreq: no-store in request\\n    nsresp: no-store in response\\n     ncreq: no-cache in request\\n    ncresp: no-cache in response\\n        au: authorization\\n        co: cookie\\n        pr: private\\n        sc: set-cookie\\n        va: vary\\n       ttl: TTL\\n       all: all of the above items\\n      none: none of the above items",
                                     optional => "YES",
                                     default_value =>"\"NULL\"",
                                 },
-                                                {                         
-                                    type => "STRING",           
-                                    help_string => "cache control keyword, cache|urlquery = yes|no,ttl = xxx\\noverride = nsreq|nsresp|ncreq|ncresp|au|co|pr|sc|va|ttl|all|none\\n     nsreq: no-store in request\\n    nsresp: no-store in response\\n     ncreq: no-cache in request\\n    ncresp: no-cache in response\\n        au: authorization\\n        co: cookie\\n        pr: private\\n        sc: set-cookie\\n        va: vary\\n       ttl: TTL\\n       all: all of the above items\\n      none: none of the above items",            
+                                                {
+                                    type => "STRING",
+                                    help_string => "cache control keyword, cache|urlquery = yes|no,ttl = xxx\\noverride = nsreq|nsresp|ncreq|ncresp|au|co|pr|sc|va|ttl|all|none\\n     nsreq: no-store in request\\n    nsresp: no-store in response\\n     ncreq: no-cache in request\\n    ncresp: no-cache in response\\n        au: authorization\\n        co: cookie\\n        pr: private\\n        sc: set-cookie\\n        va: vary\\n       ttl: TTL\\n       all: all of the above items\\n      none: none of the above items",
                                     optional => "YES",
                                     default_value =>"\"NULL\"",
                                 },
-                                {                         
-                                    type => "STRING",           
-                                    help_string => "cache control keyword, cache|urlquery = yes|no,ttl = xxx\\noverride = nsreq|nsresp|ncreq|ncresp|au|co|pr|sc|va|ttl|all|none\\n     nsreq: no-store in request\\n    nsresp: no-store in response\\n     ncreq: no-cache in request\\n    ncresp: no-cache in response\\n        au: authorization\\n        co: cookie\\n        pr: private\\n        sc: set-cookie\\n        va: vary\\n       ttl: TTL\\n       all: all of the above items\\n      none: none of the above items",           
+                                {
+                                    type => "STRING",
+                                    help_string => "cache control keyword, cache|urlquery = yes|no,ttl = xxx\\noverride = nsreq|nsresp|ncreq|ncresp|au|co|pr|sc|va|ttl|all|none\\n     nsreq: no-store in request\\n    nsresp: no-store in response\\n     ncreq: no-cache in request\\n    ncresp: no-cache in response\\n        au: authorization\\n        co: cookie\\n        pr: private\\n        sc: set-cookie\\n        va: vary\\n       ttl: TTL\\n       all: all of the above items\\n      none: none of the above items",
                                     optional => "YES",
                                     default_value =>"\"NULL\"",
-                                },                                                    
+                                },
                                 ],
 },
 {
@@ -49321,7 +49720,7 @@
         name => "match",
         help_string => "match url against filter for testing",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API|CMD_GLOBAL",
-        user_level => "CLI_LEVEL_CONFIG", 
+        user_level => "CLI_LEVEL_CONFIG",
         menu => "root_cache_filter",
         function_name => "cache_filter_match_cli",
         function_args => [ {
@@ -49334,7 +49733,7 @@
                                     help_string => "Regular expression",
                                     optional => "NO",
                                 },
-                                 
+
                                 ],
 },
 
@@ -49351,7 +49750,7 @@
     },
 
    {
-        obj_type => "ITEM",      
+        obj_type => "ITEM",
         name => "status",
         help_string => "Display cache filter configuration",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API|CMD_GLOBAL",
@@ -49365,7 +49764,7 @@
    {
         obj_type => "ITEM",
         name => "all",
-        help_string => "Display all http cache filter",   
+        help_string => "Display all http cache filter",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API|CMD_GLOBAL",
         user_level => "CLI_LEVEL_ENABLE",
         menu => "root_show_cache_filter",
@@ -49376,7 +49775,7 @@
    {
         obj_type => "ITEM",
         name => "hostname",
-        help_string => "Display http cache filter related to this hostname",   
+        help_string => "Display http cache filter related to this hostname",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API|CMD_GLOBAL",
         user_level => "CLI_LEVEL_ENABLE",
         menu => "root_show_cache_filter",
@@ -49385,7 +49784,7 @@
                                     type => "STRING",
                                     help_string => "hostname",
                                     optional => "NO",
-                                    
+
                                 }, ],
     },
 #clear commands for cache filter
@@ -49400,33 +49799,33 @@
     },
         {
         obj_type => "ITEM",
-        name => "all", 
+        name => "all",
         menu => "root_clear_cache_filter",
         help_string => "Remove all cache filter rules",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
         user_level => "CLI_LEVEL_CONFIG",
-        function_name => "clear_cache_filter_all",  
+        function_name => "clear_cache_filter_all",
         function_args => [],
     },
     {
         obj_type => "ITEM",
-        name => "hostname", 
+        name => "hostname",
         menu => "root_clear_cache_filter",
         help_string => "Remove cache filter related to specific hostname",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
         user_level => "CLI_LEVEL_CONFIG",
-        function_name => "clear_cache_filter_host",  
+        function_name => "clear_cache_filter_host",
         function_args => [{
                                     type => "STRING",
                                     help_string => "hostname",
                                     optional => "NO",
-                                    
+
                                 },],
     },
 
 
 # no commands for cache filter
-    {      
+    {
         obj_type => "MENU",
         name => "filter",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
@@ -49439,7 +49838,7 @@
     {
         obj_type => "ITEM",
         name => "rule",
-        help_string => "Remove cache filter rule",   
+        help_string => "Remove cache filter rule",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API|CMD_GLOBAL",
         user_level => "CLI_LEVEL_CONFIG",
         menu => "root_no_cache_filter",
@@ -49448,13 +49847,13 @@
                                     type => "STRING",
                                     help_string => "hostname",
                                     optional => "NO",
-                                    
-                                }, 
+
+                                },
                              {
                                     type => "STRING",
                                     help_string => "url regular expression",
                                     optional => "NO",
-                                    
+
                                 },],
     },
 #end of cache filter commands;
@@ -49481,7 +49880,7 @@
 						type => "STRING",
 						help_string => "Group name",
 						optional => "NO",
-					   }, 
+					   },
 					   {
 						type => "STRING",
 						help_string => "File type (filename extension)",
@@ -49527,7 +49926,7 @@
 		function_name => "clear_slb_policy_filetype",
 		function_args =>  [],
    },
-  
+
     {
 		obj_type => "ITEM",
 		name => "raduname",
@@ -49654,7 +50053,7 @@
 		function_name => "clear_slb_policy_radsid",
 		function_args =>  [],
    },
-	#bug 7879, slb redirect 
+	#bug 7879, slb redirect
 	#zhangwenyu, July 28 2004
 	#slb policy redirect <policy name> <virtual service name> <group name> <redirect-from-host>
 	{
@@ -49679,7 +50078,7 @@
 									type => "STRING",
 									help_string => "Group name",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "STRING",
 									help_string => "String of the host to be matched in the request (both exact match and full RegEx match are supported)",
@@ -49717,7 +50116,7 @@
 									default_value => "\"\"",
 								}, ],
 	},
-	#clear slb policy redirect 
+	#clear slb policy redirect
 	{
 		obj_type => "ITEM",
 		name => "redirect",
@@ -49728,7 +50127,7 @@
 		function_name => "clear_slb_policy_redirect",
 		function_args =>  [],
 	},
-	#show statistics slb policy redirect [<policy name>] 
+	#show statistics slb policy redirect [<policy name>]
 	{
 		obj_type => "ITEM",
 		name => "redirect",
@@ -49744,10 +50143,10 @@
 									default_value => "\"\"",
 								}, ],
 	},
-	#clear statistics slb policy redirect [<policy name>] 	
+	#clear statistics slb policy redirect [<policy name>]
 	{
 		obj_type => "ITEM",
-		name => "redirect",  
+		name => "redirect",
 		menu => "root_clear_statistics_slb_policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -49755,7 +50154,7 @@
 		function_name => "clear_statistics_slb_policy_redirect",
 		function_args => [ {
 									type => "STRING",
-									help_string => "Policy name (optional)",  
+									help_string => "Policy name (optional)",
 									optional => "YES",
 									default_value => "\"\"",
 								}, ],
@@ -49783,7 +50182,7 @@
 									type => "STRING",
 									help_string => "Group name",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "STRING",
 									help_string => "String of the domain to be matched in the request",
@@ -49856,7 +50255,7 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "sipdomain",  
+		name => "sipdomain",
 		menu => "root_clear_statistics_slb_policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -49864,7 +50263,7 @@
 		function_name => "clear_statistics_slb_policy_sipdomain",
 		function_args => [ {
 									type => "STRING",
-									help_string => "Policy name (optional)",  
+									help_string => "Policy name (optional)",
 									optional => "YES",
 									default_value => "\"\"",
 								}, ],
@@ -49891,7 +50290,7 @@
 									type => "STRING",
 									help_string => "Group name",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "STRING",
 									help_string => "String of the domain to be matched in the request",
@@ -49976,7 +50375,7 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "sipcall",  
+		name => "sipcall",
 		menu => "root_clear_statistics_slb_policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -49984,12 +50383,12 @@
 		function_name => "clear_statistics_slb_policy_sipcall",
 		function_args => [ {
 									type => "STRING",
-									help_string => "Policy name (optional)",  
+									help_string => "Policy name (optional)",
 									optional => "YES",
 									default_value => "\"\"",
 								}, ],
 	},
-	{      
+	{
         obj_type => "MENU",
         name => "sip",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
@@ -49998,7 +50397,7 @@
         parent_menu => "root_slb",
         uniq_name => "root_slb_sip",
     },
-    {      
+    {
         obj_type => "MENU",
         name => "sip",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
@@ -50007,7 +50406,7 @@
         parent_menu => "root_no_slb",
         uniq_name => "root_no_slb_sip",
     },
-    {      
+    {
         obj_type => "MENU",
         name => "sip",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
@@ -50016,7 +50415,7 @@
         parent_menu => "root_clear_slb",
         uniq_name => "root_clear_slb_sip",
     },
-    {      
+    {
         obj_type => "MENU",
         name => "sip",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
@@ -50043,7 +50442,7 @@
         parent_menu => "root_slb_sip",
         uniq_name => "root_slb_sip_callnum",
     },
-    {      
+    {
         obj_type => "MENU",
         name => "callnum",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
@@ -50052,7 +50451,7 @@
         parent_menu => "root_no_slb_sip",
         uniq_name => "root_no_slb_sip_callnum",
     },
-    {      
+    {
         obj_type => "MENU",
         name => "callnum",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
@@ -50061,7 +50460,7 @@
         parent_menu => "root_clear_slb_sip",
         uniq_name => "root_clear_slb_sip_callnum",
     },
-    {      
+    {
         obj_type => "MENU",
         name => "callnum",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
@@ -50070,7 +50469,7 @@
         parent_menu => "root_show_slb_sip",
         uniq_name => "root_show_slb_sip_callnum",
     },
-    {      
+    {
         obj_type => "MENU",
         name => "persistence",
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
@@ -50271,7 +50670,7 @@
 									optional => "NO",
 								},],
 	},
-	
+
 # begin dns commands
 	{
 		obj_type => "MENU",
@@ -50560,12 +50959,12 @@
 		menu => "root_dns_cache",
 		function_name => "ui_dns_cache_expire",
 		function_args => [{
-							type => "U32",   
+							type => "U32",
 							help_string => "Minimum cache expiration in seconds ",
 							optional => "NO",
 						},
 						{
-							type => "U32",   
+							type => "U32",
 							help_string => "Maximum cache expiration in seconds (0 for no limit)",
 							optional => "NO",
 						},],
@@ -50579,7 +50978,7 @@
 		menu => "root_dns_domain",
 		function_name => "ui_dns_domain_updateinterval",
 		function_args => [{
-							type => "U32",   
+							type => "U32",
 							help_string => "Update interval of domain name in seconds (60 to 86400).",
 							optional => "NO",
 							min => "60",
@@ -50795,7 +51194,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Enable DNS64 function",
 		function_name => "dns64_on",
-		function_args => [ 
+		function_args => [
 			{
                     		type => "STRING",
 				help_string => "DNS virtual service name",
@@ -51431,7 +51830,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_nat_port",
 		function_args => [],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "table",
@@ -51446,7 +51845,7 @@
 				optional => "YES",
 				default_value => "\"\"",
 				},],
-		
+
 	},
 
         {
@@ -51532,7 +51931,7 @@
 		obj_type => "MENU",
 		name => "lldp",
 		parent_menu => "root_clear",
-		uniq_name => "root_clear_lldp",				   
+		uniq_name => "root_clear_lldp",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear LLDP configurations",
@@ -51670,7 +52069,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Define SLB real service health check",
 		function_name => "slb_real_hc",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Additional health check name",
@@ -51703,7 +52102,7 @@
 									optional => "YES",
 									default_value => "\"tcp\"",
 									# bug 12073, end
-								}, 
+								},
 								{
 									type => "U32",
 									# bug 12264, zhangzh, 20060111
@@ -51721,15 +52120,15 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "health",   
+		name => "health",
 		menu => "root_no_slb_real",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove an health check for an real service ",
-		function_name => "no_slb_real_hc_kern",  
+		function_name => "no_slb_real_hc_kern",
 		function_args => [ {
 									type => "STRING",
-									help_string => "Additional health check name",   
+									help_string => "Additional health check name",
 									optional => "NO",
 								},],
 	},
@@ -51743,7 +52142,7 @@
 		function_name => "clear_slb_real_hc_kern",
 		function_args => [{
 									type => "STRING",
-									help_string => "Real service name",   
+									help_string => "Real service name",
 									optional => "YES",
 									default_value => "\"\"",
 								}, ],
@@ -51761,7 +52160,7 @@
 									help_string => "Real service name (optional)",
 									optional => "YES",
 									default_value => "\"\"",
-									
+
 								}, ],
 	},
 
@@ -51813,7 +52212,7 @@
 						optional => "YES",
 						default_value => "\"\"",
 					},
-				  ],	
+				  ],
 	},
 	{
 		obj_type => "ITEM",
@@ -51826,9 +52225,9 @@
 		function_args => [ {
 						type => "STRING",
 						help_string => "Order template name",	# bug 12612, zhangwy, 2006/02/20
-						optional => "NO",						
+						optional => "NO",
 					},
-				],	
+				],
 	},
 	{
 		obj_type => "ITEM",
@@ -51838,7 +52237,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		menu => "root_clear_slb_policy",
 		function_name => "clear_slb_policy_order",
-		function_args => [ ],	
+		function_args => [ ],
 	},
 	{
 		obj_type => "ITEM",
@@ -51873,8 +52272,8 @@
 						help_string => "Order template name",	# bug 12612, zhangwy, 2006/02/20
 						optional => "YES",
 						default_value => "\"\"",
-					},					
-				  ],	
+					},
+				  ],
 	},
 	{
 		obj_type => "ITEM",
@@ -51887,14 +52286,14 @@
 		function_args => [ {
 						type => "STRING",
 						help_string => "Virtual Service name",
-						optional => "NO",						
+						optional => "NO",
 					},
 					{
 						type => "STRING",
 						help_string => "Order template name",	# bug 12612, zhangwy, 2006/02/20
-						optional => "NO",						
+						optional => "NO",
 					},
-				],	
+				],
 	},
 	{
 		obj_type => "ITEM",
@@ -51908,9 +52307,9 @@
 						type => "STRING",
 						help_string => "Order template name",	# bug 12612, zhangwy, 2006/02/20
 						optional => "YES",
-						default_value => "\"\"",						
+						default_value => "\"\"",
 					},
-				],	
+				],
 	},
 # end of bug 10392
         # Bug 24576, huangyf, 20091230
@@ -51937,7 +52336,7 @@
 			help_string => "Interface name (all|[system]|[vlan]|[mnet]|[bond]), default is \\\"all\\\"",
 			optional => "YES",
 			default_value => "\"all\"",
-		    }, 
+		    },
 
 		    {
 			type => "U32",
@@ -51981,40 +52380,40 @@
 # bug of 10530, zhangzh, 2005/06/16
 # new health check enhancement
 	{
-		obj_type => "ITEM", 
-		name => "checker", 
-		menu => "root_health", 
+		obj_type => "ITEM",
+		name => "checker",
+		menu => "root_health",
 		help_string => "Config health checker (add a checker)",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "add_health_checker", 
-		function_args => [ { 
-				type => "STRING", 
-				help_string => "Checker name(the limited of name is 128, if the name begin with a number, please add quotation mark)", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "add_health_checker",
+		function_args => [ {
+				type => "STRING",
+				help_string => "Checker name(the limited of name is 128, if the name begin with a number, please add quotation mark)",
 				optional => "NO",
 			},
 			{
-				type => "U32", 
-				help_string => "Request index(the range is 0~999)", 
+				type => "U32",
+				help_string => "Request index(the range is 0~999)",
 				optional => "NO",
 			},
 			{
 				type => "U32",
-				help_string => "Response index(the range is 0~999)", 
+				help_string => "Response index(the range is 0~999)",
 				optional => "NO",
 			},
-			{ 
-				type => "U16", 
-				help_string => "Checker time out seconds(optional, the value should larger than 0\\nthe range is 1~3600, default value is 3 seconds)", 
-				optional => "YES", 
+			{
+				type => "U16",
+				help_string => "Checker time out seconds(optional, the value should larger than 0\\nthe range is 1~3600, default value is 3 seconds)",
+				optional => "YES",
 				default_value => "3",
 			},
 			{
-				type => "U16", 
+				type => "U16",
 				# bug 16428, zhangzh, 20070511
 				help_string => "Checker success/fail flag(optional, the range is 0~3, default value is 1)\\n0:when the response contains the string predefined from 'health response' command,\\n  HC will mark the server as DOWN. Both request and response must be in ASCII.\\n1:when the response contains the string predefined from 'health response' command,\\n  HC will mark the server as UP. Both request and response must be in ASCII.\\n2:when the response contains the string predefined from 'health response' command,\\n  HC will mark the server as DOWN. Both request and response must be in HEX.\\n3:when the response contains the string predefined from 'health response' command,\\n  HC will mark the server as UP. Both request and response must be in HEX.",
 				# bug 16428, end
-				optional => "YES", 
+				optional => "YES",
 				default_value => "1",
 			},
 		],
@@ -52035,7 +52434,7 @@
 						# end of bug 11030
 						optional => "NO",
 					},
-					
+
 		],
 	},
 	{
@@ -52241,7 +52640,7 @@
 					},
 		],
     },
-    # bug 12517 zhangzh, 20060302 
+    # bug 12517 zhangzh, 20060302
     {
 	        obj_type => "ITEM",
 		name => "template",
@@ -52258,7 +52657,7 @@
 		    },
 		],
     },
-    # bug 12517, end 
+    # bug 12517, end
     {
 		obj_type => "ITEM",
 		name => "checker",
@@ -52391,7 +52790,7 @@
 		obj_type => "MENU",
 		name => "persistence",
 		parent_menu => "root_slb",
-		uniq_name => "root_slb_persistence",				   
+		uniq_name => "root_slb_persistence",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Define SLB persistence options",
@@ -52404,11 +52803,11 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Define SLB persistence timeout minutes",
 		function_name => "slb_persistence_timeout_kern",
-		function_args => [ 
+		function_args => [
 						{
 							type => "U32",
 							help_string => "SLB persistence timeout value in minutes(0-50000, default=0)",
-							optional => "NO",							
+							optional => "NO",
 						},
 						{
 							type => "STRING",
@@ -52428,7 +52827,7 @@
 		obj_type => "MENU",
 		name => "persistence",
 		parent_menu => "root_no_slb",
-		uniq_name => "root_no_slb_persistence",				   
+		uniq_name => "root_no_slb_persistence",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove SLB persistence options",
@@ -52453,7 +52852,7 @@
 		obj_type => "MENU",
 		name => "persistence",
 		parent_menu => "root_show_slb",
-		uniq_name => "root_show_slb_persistence",				   
+		uniq_name => "root_show_slb_persistence",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display SLB persistence options",
@@ -52548,7 +52947,7 @@
                                    help_string => "interval (seconds, 1 ~ 65535, default = 5)",
                                    optional => "YES",
                                    default_value => "5",
-								}, 
+								},
 								{
                                    type => "U16",
                                    help_string => "timeout (seconds, 1 ~ 65535, default = 3)",
@@ -52569,7 +52968,7 @@
                                    help_string => "Gateway address (Optional. Only used when destination address isn't in the same subnet as this bond interface, default = 0.0.0.0 or ::)",
                                    optional => "YES",
                                    default_value => "\"\"",
-								}, 
+								},
 								],
 	},
 	{
@@ -52587,7 +52986,7 @@
 		name => "interface",
 		help_string => "Remove system interface from bond interface",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
-		user_level => "CLI_LEVEL_CONFIG", 
+		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "bond_interface_remove",
 		function_args => [ {
 									type => "STRING",
@@ -52606,7 +53005,7 @@
 		name => "health",
 		help_string => "Stop bond health check",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
-		user_level => "CLI_LEVEL_CONFIG", 
+		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "bond_hc_icmp_off",
 		function_args => [ {
 									type => "STRING",
@@ -52652,7 +53051,7 @@
 		name => "name",
 		help_string => "Assign a name to the specified bond interface",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
-		user_level => "CLI_LEVEL_CONFIG", 
+		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "bond_if_name",
 		function_args => [ {
 									type => "STRING",
@@ -52668,49 +53067,49 @@
 	#Link Aggregation, end
 
 # bug 11021, zhangwy, 2005/10/18
-	{ 
-		obj_type => "ITEM", 
-		name => "reverse", 
-		menu => "root_system_mode", 
-		help_string => "operate as reverse proxy for a virtual service", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "proxy_mode_reverse_virtual", 
-		function_args => [{
-									type => "STRING",
-									help_string => "Virtual service name",   
-									optional => "NO",									
-								},], 
-	}, 
-	{ 
-		obj_type => "ITEM", 
-		name => "transparent", 
-		menu => "root_system_mode", 
-		help_string => "operate as transparent proxy for a virtual service", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "proxy_mode_transparent_virtual", 
-		function_args => [{
-									type => "STRING",
-									help_string => "Virtual service name",   
-									optional => "NO",									
-								},], 
-	}, 
+	{
+		obj_type => "ITEM",
+		name => "reverse",
+		menu => "root_system_mode",
+		help_string => "operate as reverse proxy for a virtual service",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "proxy_mode_reverse_virtual",
+		function_args => [{
+									type => "STRING",
+									help_string => "Virtual service name",
+									optional => "NO",
+								},],
+	},
+	{
+		obj_type => "ITEM",
+		name => "transparent",
+		menu => "root_system_mode",
+		help_string => "operate as transparent proxy for a virtual service",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "proxy_mode_transparent_virtual",
+		function_args => [{
+									type => "STRING",
+									help_string => "Virtual service name",
+									optional => "NO",
+								},],
+	},
 #bug 17186, kouhb, 20070918
-#	{ 
-#		obj_type => "ITEM", 
-#		name => "triangle", 
-#		menu => "root_system_mode", 
-#		help_string => "do triangle transmission for a virtual service", 
-#		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API", 
-#		user_level => "CLI_LEVEL_CONFIG", 
-#		function_name => "proxy_mode_triangle_virtual", 
+#	{
+#		obj_type => "ITEM",
+#		name => "triangle",
+#		menu => "root_system_mode",
+#		help_string => "do triangle transmission for a virtual service",
+#		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+#		user_level => "CLI_LEVEL_CONFIG",
+#		function_name => "proxy_mode_triangle_virtual",
 #		function_args => [{
 #									type => "STRING",
-#									help_string => "Virtual service name",   
-#									optional => "NO",									
-#								},], 
-#	}, 
+#									help_string => "Virtual service name",
+#									optional => "NO",
+#								},],
+#	},
 #bug 17186, end
 	{
 		obj_type => "ITEM",
@@ -52722,9 +53121,9 @@
 		function_name => "proxy_mode_show_virtual",
 		function_args => [{
 									type => "STRING",
-									help_string => "Virtual service name",   
-									optional => "YES",	
-									default_value => "\"\"",								
+									help_string => "Virtual service name",
+									optional => "YES",
+									default_value => "\"\"",
 								},],
 	},
 	{
@@ -52737,8 +53136,8 @@
 		function_name => "no_proxy_mode_virtual",
 		function_args => [{
 									type => "STRING",
-									help_string => "Virtual service name",   
-									optional => "NO",									
+									help_string => "Virtual service name",
+									optional => "NO",
 								},],
 	},
 	{
@@ -52818,7 +53217,7 @@
                                         optional => "NO",
                                 },],
         },
-	
+
         {
                 obj_type => "ITEM",
                 name => "group",
@@ -52912,35 +53311,35 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Set SLB overload",
 	},
-	{ 
-		obj_type => "MENU", 
-		name => "persistence", 
-		help_string => "Set SLB overload for persistent users protection of cookie method", 
+	{
+		obj_type => "MENU",
+		name => "persistence",
+		help_string => "Set SLB overload for persistent users protection of cookie method",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG", 
+		user_level => "CLI_LEVEL_CONFIG",
 		parent_menu => "root_slb_overload",
 		uniq_name => "root_slb_overload_persistence",
-	}, 
-	{ 
-		obj_type => "ITEM", 
-		name => "on", 
-		menu => "root_slb_overload_persistence", 
-		help_string => "Set SLB overload for persistent users protection on", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "persistence_prior_on", 
-		function_args => [], 
-	}, 
-	{ 
-		obj_type => "ITEM", 
-		name => "off", 
-		menu => "root_slb_overload_persistence", 
-		help_string => "Set SLB overload for persistent users protection off", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "persistence_prior_off", 
-		function_args => [], 
-	}, 
+	},
+	{
+		obj_type => "ITEM",
+		name => "on",
+		menu => "root_slb_overload_persistence",
+		help_string => "Set SLB overload for persistent users protection on",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "persistence_prior_on",
+		function_args => [],
+	},
+	{
+		obj_type => "ITEM",
+		name => "off",
+		menu => "root_slb_overload_persistence",
+		help_string => "Set SLB overload for persistent users protection off",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "persistence_prior_off",
+		function_args => [],
+	},
 #Bug44186
 	{
 		obj_type => "MENU",
@@ -52959,7 +53358,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display the persistence status of cookie method",
 		function_name => "show_persistence_prior_status",
-		function_args => [],		
+		function_args => [],
 	},
 # bug 10879, zhangwy, 2005/09/30
 	{
@@ -52971,102 +53370,102 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Set SLB mode",
 	},
-	{ 
-		obj_type => "ITEM", 
-		name => "ircookie", 
-		menu => "root_slb_mode", 
-		help_string => "Set SLB insert/rewrite cookie mode", 
+	{
+		obj_type => "ITEM",
+		name => "ircookie",
+		menu => "root_slb_mode",
+		help_string => "Set SLB insert/rewrite cookie mode",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API|CMD_KAPI_LOCK|CMD_KAPI_LOCK_UPROXY|CMD_SPECIAL_LOG",
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "slb_set_mode_ircookie_kern", 
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "slb_set_mode_ircookie_kern",
 		function_args => [{
 					type => "STRING",
-					help_string => "Insert/Rewrite cookie mode : plainname|hexname|ip|enc_name|enc_ip",   
-					optional => "NO",									
+					help_string => "Insert/Rewrite cookie mode : plainname|hexname|ip|enc_name|enc_ip",
+					optional => "NO",
 				},
 				{
 					type => "STRING",
-					help_string => "group name(default is global)",   
+					help_string => "group name(default is global)",
 					optional => "YES",
-					default_value => "\"global\"",								
+					default_value => "\"global\"",
 				},
 				{
 					type => "STRING",
-					help_string => "aes passwd",   
+					help_string => "aes passwd",
 					optional => "YES",
-					default_value => "\"\"",							
+					default_value => "\"\"",
 				},
-				], 
-	}, 
-#end of bug 10879	
-	{ 
-		obj_type => "MENU", 
-		name => "regexcase", 
-		help_string => "Set SLB RegEx case mode", 
+				],
+	},
+#end of bug 10879
+	{
+		obj_type => "MENU",
+		name => "regexcase",
+		help_string => "Set SLB RegEx case mode",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG", 
+		user_level => "CLI_LEVEL_CONFIG",
 		parent_menu => "root_slb_mode",
 		uniq_name => "root_slb_mode_regexcase",
-	}, 
-	{ 
-		obj_type => "ITEM", 
-		name => "on", 
-		menu => "root_slb_mode_regexcase", 
-		help_string => "Set SLB regexcase mode on(case insensitive)", 
+	},
+	{
+		obj_type => "ITEM",
+		name => "on",
+		menu => "root_slb_mode_regexcase",
+		help_string => "Set SLB regexcase mode on(case insensitive)",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API|CMD_KAPI_LOCK|CMD_KAPI_LOCK_UPROXY",
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "slb_set_mode_regexcase_on", 
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "slb_set_mode_regexcase_on",
 		function_args => [{
 					type => "STRING",
-					help_string => "virtual service name or vlink name",   
+					help_string => "virtual service name or vlink name",
 					optional => "YES",
 					default_value => "\"\"",
-				},], 
-	}, 
-	{ 
-		obj_type => "ITEM", 
-		name => "off", 
-		menu => "root_slb_mode_regexcase", 
-		help_string => "Set SLB regexcase mode off(case sensitive)", 
+				},],
+	},
+	{
+		obj_type => "ITEM",
+		name => "off",
+		menu => "root_slb_mode_regexcase",
+		help_string => "Set SLB regexcase mode off(case sensitive)",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API|CMD_KAPI_LOCK|CMD_KAPI_LOCK_UPROXY",
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "slb_set_mode_regexcase_off", 
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "slb_set_mode_regexcase_off",
 		function_args => [{
 					type => "STRING",
-					help_string => "virtual service name or vlink name",   
+					help_string => "virtual service name or vlink name",
 					optional => "YES",
 					default_value => "\"\"",
-				},], 
-	}, 
-	{ 
-		obj_type => "MENU", 
-		name => "keepport", 
-		help_string => "Set SLB port keeping mode", 
+				},],
+	},
+	{
+		obj_type => "MENU",
+		name => "keepport",
+		help_string => "Set SLB port keeping mode",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG", 
+		user_level => "CLI_LEVEL_CONFIG",
 		parent_menu => "root_slb_mode",
 		uniq_name => "root_slb_mode_keepport",
-	}, 
-	{ 
-		obj_type => "ITEM", 
-		name => "on", 
-		menu => "root_slb_mode_keepport", 
-		help_string => "Enable SLB port keeping mode", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "slb_mode_keepport_on", 
-		function_args => [], 
-	}, 
-	{ 
-		obj_type => "ITEM", 
-		name => "off", 
-		menu => "root_slb_mode_keepport", 
-		help_string => "Disable SLB port keeping mode", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "slb_mode_keepport_off", 
-		function_args => [], 
-	}, 
+	},
+	{
+		obj_type => "ITEM",
+		name => "on",
+		menu => "root_slb_mode_keepport",
+		help_string => "Enable SLB port keeping mode",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "slb_mode_keepport_on",
+		function_args => [],
+	},
+	{
+		obj_type => "ITEM",
+		name => "off",
+		menu => "root_slb_mode_keepport",
+		help_string => "Disable SLB port keeping mode",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "slb_mode_keepport_off",
+		function_args => [],
+	},
 	{
 		obj_type => "ITEM",
 		name => "keepport",
@@ -53077,26 +53476,26 @@
 		function_name => "show_slb_mode_keepport",
 		function_args => [],
 	},
-	{ 
-		obj_type => "MENU", 
-		name => "lineup", 
-		help_string => "Set SLB lineup mode", 
+	{
+		obj_type => "MENU",
+		name => "lineup",
+		help_string => "Set SLB lineup mode",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG", 
+		user_level => "CLI_LEVEL_CONFIG",
 		parent_menu => "root_slb_mode",
 		uniq_name => "root_slb_mode_lineup",
-	}, 
-	{ 
-		obj_type => "ITEM", 
-		name => "on", 
-		menu => "root_slb_mode_lineup", 
-		help_string => "Enable SLB lineup mode", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "slb_mode_lineup_on", 
+	},
+	{
+		obj_type => "ITEM",
+		name => "on",
+		menu => "root_slb_mode_lineup",
+		help_string => "Enable SLB lineup mode",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "slb_mode_lineup_on",
 		function_args => [{
 									type => "STRING",
-									help_string => "virtual service name",   
+									help_string => "virtual service name",
 									optional => "NO",
 						  },
 					      {
@@ -53111,22 +53510,22 @@
 									optional => "YES",
 									default_value => "5",
 						  },
-				], 
-	}, 
-	{ 
-		obj_type => "ITEM", 
-		name => "off", 
-		menu => "root_slb_mode_lineup", 
-		help_string => "Disable SLB lineup mode", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "slb_mode_lineup_off", 
+				],
+	},
+	{
+		obj_type => "ITEM",
+		name => "off",
+		menu => "root_slb_mode_lineup",
+		help_string => "Disable SLB lineup mode",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "slb_mode_lineup_off",
 		function_args => [{
 					type => "STRING",
-					help_string => "virtual service name",   
+					help_string => "virtual service name",
 					optional => "NO",
-				},], 
-	}, 
+				},],
+	},
 	{
 		obj_type => "ITEM",
 		name => "lineup",
@@ -53137,7 +53536,7 @@
 		function_name => "show_slb_mode_lineup",
 		function_args => [{
 					type => "STRING",
-					help_string => "Optional. Virtual service name",   
+					help_string => "Optional. Virtual service name",
 					optional => "YES",
 					default_value => "\"\"",
 				},],
@@ -53151,12 +53550,12 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Set SLB SNMP",
 	},
-	{ 
-		obj_type => "MENU", 
-		name => "oid", 
-		help_string => "Set SLB SNMP OID", 
+	{
+		obj_type => "MENU",
+		name => "oid",
+		help_string => "Set SLB SNMP OID",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG", 
+		user_level => "CLI_LEVEL_CONFIG",
 		parent_menu => "root_slb_snmp",
 		uniq_name => "root_slb_snmp_oid",
 	},
@@ -53198,21 +53597,21 @@
 									optional => "NO",
 								},],
 	},
-	{ 
-		obj_type => "MENU", 
-		name => "snmp", 
-		help_string => "Remove SLB SNMP setting", 
+	{
+		obj_type => "MENU",
+		name => "snmp",
+		help_string => "Remove SLB SNMP setting",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG", 
+		user_level => "CLI_LEVEL_CONFIG",
 		parent_menu => "root_no_slb",
 		uniq_name => "root_no_slb_snmp",
-	}, 
-	{ 
-		obj_type => "MENU", 
-		name => "oid", 
-		help_string => "Remove SLB SNMP OID setting", 
+	},
+	{
+		obj_type => "MENU",
+		name => "oid",
+		help_string => "Remove SLB SNMP OID setting",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG", 
+		user_level => "CLI_LEVEL_CONFIG",
 		parent_menu => "root_no_slb_snmp",
 		uniq_name => "root_no_slb_snmp_oid",
 	},
@@ -53292,7 +53691,7 @@
 	        	function_name => "show_slb_virtual_health",
 	        	function_args => [ ],
 	    },
-#end of bug 18097	   
+#end of bug 18097
     #L2 IP/MAC based SLB,beisf,20060313
    	{
 		obj_type => "ITEM",
@@ -53342,7 +53741,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "clear_slb_virtual_l2ip",
 		function_args => [],
-	},	
+	},
    	{
 		obj_type => "ITEM",
 		name => "portrange",
@@ -53468,7 +53867,7 @@
 		function_name => "no_slb_real_l2ip",
 		function_args => [ {
 									type => "STRING",
-									help_string => "Real service name",   
+									help_string => "Real service name",
 									optional => "NO",
 								}, ],
 	},
@@ -53508,7 +53907,7 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "l2mac",   
+		name => "l2mac",
 		menu => "root_no_slb_real",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -53516,7 +53915,7 @@
 		function_name => "no_slb_real_l2mac",
 		function_args => [ {
 									type => "STRING",
-									help_string => "Real service name",   
+									help_string => "Real service name",
 									optional => "NO",
 								}, ],
 	},
@@ -53542,29 +53941,29 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "Real service name",
-				optional => "NO", 
-			},    
-			{     
+				optional => "NO",
+			},
+			{
 				type => "STRING",
 				help_string => "Output interface name(<system_ifname>|<vlan_ifname>|<bond_ifname>)",
 				optional => "NO",
-			}, 
-			{     
+			},
+			{
 				type => "STRING",
 				help_string => "Real service MAC address (in 01:23:45:67:89:AB format)",
-				optional => "NO", 
-			},    
-			{     
+				optional => "NO",
+			},
+			{
 				type => "U16",
 				help_string => "Real service port",
-				optional => "NO", 
-			}, 
+				optional => "NO",
+			},
 			{
 				type => "U32",
 				help_string => "Real service maximum connections, from 0 to 4294967295 (optional, default = 0, unlimited)",
 				optional => "YES",
 				default_value => "0",
-			},], 
+			},],
 	},
 	{
 		obj_type => "ITEM",
@@ -53604,7 +54003,7 @@
 		help_string => "Clear all FWDMAC real services",
 		function_name => "clear_slb_real_fwdmac",
 		function_args => [],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "fwdip",
@@ -53616,19 +54015,19 @@
 		function_args => [ {
 				type => "STRING",
 				help_string => "Real service name",
-				optional => "NO", 
-			},    
+				optional => "NO",
+			},
 			{
 				type => "IPADDR",
 				help_string => "Real service IP",
-				optional => "NO", 
-			},    
-			{     
+				optional => "NO",
+			},
+			{
 				type => "U16",
 				help_string => "Real service port",
-				optional => "NO", 
-			},    
-			{     
+				optional => "NO",
+			},
+			{
 				type => "U32",
 				help_string => "Real service maximum connections, from 0 to 4294967295 (optional, default = 0, unlimited)",
 				optional => "YES",
@@ -53886,7 +54285,7 @@
 		obj_type => "MENU",
 		name => "radius",
 		parent_menu => "root_health",
-		uniq_name => "root_health_radius",				   
+		uniq_name => "root_health_radius",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Define RADIUS server's healthcheck configuration",
@@ -53965,7 +54364,7 @@
 		obj_type => "MENU",
 		name => "radius",
 		parent_menu => "root_no_health",
-		uniq_name => "root_no_health_radius",				   
+		uniq_name => "root_no_health_radius",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove RADIUS server's healthcheck configuration",
@@ -54006,7 +54405,7 @@
 		obj_type => "MENU",
 		name => "radius",
 		parent_menu => "root_clear_health",
-		uniq_name => "root_clear_health_radius",				   
+		uniq_name => "root_clear_health_radius",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove all the RADIUS server's healthcheck configuration(s)",
@@ -54097,7 +54496,7 @@
 		obj_type => "MENU",
 		name => "radius",
 		parent_menu => "root_show_health",
-		uniq_name => "root_show_health_radius",				   
+		uniq_name => "root_show_health_radius",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show the RADIUS server's healthcheck configuration(s)",
@@ -54184,7 +54583,7 @@
 						type => "IPADDR",
 						help_string => "The server's ip address ",
 						optional => "NO",
-						
+
 					},
 					{
 						type => "U16",
@@ -54199,7 +54598,7 @@
 					}, ],
 	},
 	#End of bug 12230
-	
+
  	{
  		obj_type => "ITEM",
  		name => "rdp",
@@ -54235,7 +54634,7 @@
  						help_string => "Check type (icmp/tcp/script-tcp/snmp/none) performed to determine real service\\nviability (optional, default is icmp)\\nOnly icmp or none can be used if port is 0",
  						optional => "YES",
  						default_value => "\"icmp\"",
- 					}, 
+ 					},
  					{
  						type => "U32",
  					    help_string => "Consecutive healthcheck successes before this real service\\nmarked up (optional, default = 3)",
@@ -54248,7 +54647,7 @@
                          optional => "YES",
                          default_value => "3",
                      }, ],
- 	},	
+ 	},
  	{
  		obj_type => "ITEM",
  		name => "rdp",
@@ -54287,7 +54686,7 @@
  		help_string => "Clear all RDP real services",
  		function_name => "clear_slb_real_rdp_kern",
  		function_args => [],
- 	}, 	
+ 	},
  	{
  		obj_type => "ITEM",
  		name => "rdp",
@@ -54317,11 +54716,11 @@
  									optional => "YES",
  									default_value => "\"\"",
  								}, ],
- 	}, 
+ 	},
  	{
  		obj_type => "ITEM",
  		name => "rdp",
- 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",    
+ 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
  		user_level => "CLI_LEVEL_CONFIG",
  		menu => "root_slb_virtual",
  		help_string => "Define SLB RDP virtual service",
@@ -54357,12 +54756,12 @@
  	},
  	{
  		obj_type => "ITEM",
- 		name => "rdp",   
+ 		name => "rdp",
  		menu => "root_no_slb_virtual",
  		help_string => "Remove RDP virtual service",
  		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
  		user_level => "CLI_LEVEL_CONFIG",
- 		function_name => "no_slb_virtual_rdp",      
+ 		function_name => "no_slb_virtual_rdp",
  		function_args => [ {
  									type => "STRING",
  									help_string => "Virtual service name",
@@ -54408,7 +54807,7 @@
  									optional => "YES",
  									default_value => "\"\"",
  								}, ],
- 	}, 
+ 	},
  	{
  		obj_type => "ITEM",
  		name => "rdp",
@@ -54423,7 +54822,7 @@
  									optional => "YES",
  									default_value => "\"\"",
  								}, ],
- 	}, 			
+ 	},
 # bug 12684, SIP SLB, zhangwy, 2006/08/09
 	{
 		obj_type => "ITEM",
@@ -54511,7 +54910,7 @@
 						help_string => "Check type (icmp/udp/sip-udp/script-udp/snmp/none) performed to determine real service\\nviability (optional, default is sip-udp)\\nOnly icmp or none can be used if port is 0",
 						optional => "YES",
 						default_value => "\"sip-udp\"",
-					}, 
+					},
 					{
 	                                    type => "U32",
 					    help_string => "Consecutive healthcheck successes before this real service\\nmarked up (optional, default = 3)",
@@ -54522,10 +54921,10 @@
 	                                    type => "U32",
 	                                    help_string => "Consecutive healthcheck failures before this service\\nmarked down (optional, default = 3)",
 	                                    optional => "YES",
-	                                    default_value => "3",					  
+	                                    default_value => "3",
 	                                },
 					{
-						type => "U32",   
+						type => "U32",
 						help_string => "Real service session timeout (seconds, optional, default = 60)",
 						optional => "YES",
 						default_value => "60",
@@ -54549,7 +54948,7 @@
 		obj_type => "ITEM",
 		name => "sipudp",
 		menu => "root_no_slb_real",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL | CMD_KERN_API",    
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove a SIP udp real service",
 		function_name => "no_slb_real_sipudp_kern",
@@ -54588,7 +54987,7 @@
 									optional => "YES",
 									default_value => "\"\"",
 								}, ],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "siptcp",
@@ -54672,7 +55071,7 @@
 	{
 		obj_type => "ITEM",
 		name => "siptcp",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",    
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		menu => "root_slb_virtual",
 		help_string => "Define SLB SIP TCP virtual service",
@@ -54746,12 +55145,12 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "siptcp",   
+		name => "siptcp",
 		menu => "root_no_slb_virtual",
 		help_string => "Remove SIP TCP virtual service",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "no_slb_virtual_siptcp",      
+		function_name => "no_slb_virtual_siptcp",
 		function_args => [ {
 									type => "STRING",
 									help_string => "Virtual service name",
@@ -54760,18 +55159,18 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "sipudp",   
+		name => "sipudp",
 		menu => "root_no_slb_virtual",
 		help_string => "Remove SIP UDP virtual service",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "no_slb_virtual_sipudp",      
+		function_name => "no_slb_virtual_sipudp",
 		function_args => [ {
 									type => "STRING",
 									help_string => "Virtual service name",
 									optional => "NO",
 								}, ],
-	},		
+	},
 	{
 		obj_type => "ITEM",
 		name => "siptcp",
@@ -54851,7 +55250,7 @@
 									optional => "YES",
 									default_value => "\"\"",
 								}, ],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "siptcp",
@@ -54887,7 +55286,7 @@
 		obj_type => "MENU",
 		parent_menu => ".",
 		name => "sip" ,
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Sip commands",
 		uniq_name => "root_sip",
@@ -54896,7 +55295,7 @@
 		obj_type => "MENU",
 		name => "multireg",
 		parent_menu => "root_sip",
-		uniq_name => "root_sip_multireg",				   
+		uniq_name => "root_sip_multireg",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "sip multi-registration support",
@@ -55034,7 +55433,7 @@
 				},],
 	},
 	# bug 14846, end
-	
+
 # Bug 14073, zhangwy, 2006/08/31
 	{
 		obj_type => "MENU",
@@ -55044,7 +55443,7 @@
 		help_string => "Define filter request url",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-	},		
+	},
 	{
 		obj_type => "MENU",
 		name => "controlchar",
@@ -55053,7 +55452,7 @@
 		help_string => "Define filter request url escaped control char",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "on",
@@ -55073,7 +55472,7 @@
 		help_string => "Turn off request url escaped control char filter",
 		function_name => "urlfilter_request_controlchar_off_amp",
 		function_args => [  ],
-	},	
+	},
 	{
 		obj_type => "MENU",
 		name => "request",
@@ -55095,7 +55494,7 @@
 	},
 # End of bug 14073
 
-#bug 14484, zhangwy, 2006/12/06 
+#bug 14484, zhangwy, 2006/12/06
 #bug 14484, zhangwy, 2007/03/27
 	{
 		obj_type => "ITEM",
@@ -55113,8 +55512,8 @@
 				{
 					type => "U16",
 					help_string => "Virtual service port to be masquerade as ",
-					optional => "NO",					
-				}, 
+					optional => "NO",
+				},
 				{
 					type => "IPADDR",
 					help_string => "Real service IP to be translated",
@@ -55123,7 +55522,7 @@
 				{
 					type => "U16",
 					help_string => "Real service port to be translated ",
-					optional => "NO",										
+					optional => "NO",
 				},
 				{
 					type => "STRING",
@@ -55140,10 +55539,10 @@
 					type => "STRING",
 					help_string => "Session persistence mode (callid or userid, default is callid)",
 					optional => "YES",
-					default_value => "\"callid\"",					
+					default_value => "\"callid\"",
 				}, ],
-	
-	},	
+
+	},
 	{
 				obj_type => "ITEM",
 				name => "nat",
@@ -55206,7 +55605,7 @@
 							optional => "YES",
 							default_value => "\"udp\"",
 				},],
-	},	
+	},
 	{
 		obj_type => "MENU",
 		name => "sip",
@@ -55225,7 +55624,7 @@
                 user_level => "CLI_LEVEL_ENABLE",
                 function_name => "show_stat_sip_nat",
                 function_args => [],
-        },	
+        },
         {
 		obj_type => "MENU",
 		name => "sip",
@@ -55261,7 +55660,7 @@
 				},],
         },
 #end of bug 14484
-	# Bug 15664, LiBo, 20070302 
+	# Bug 15664, LiBo, 20070302
 	{
 		obj_type => "MENU",
 		name => "switch",
@@ -55283,7 +55682,7 @@
 					type => "STRING",
 					help_string => "switch web link url",
 					optional => "NO",
-				    }, 
+				    },
 				  ],
 	},
 	{
@@ -55324,7 +55723,7 @@
                 function_name => "show_switch_weblink",
                 function_args => [],
         },
-	# no weblink URL 
+	# no weblink URL
 	{
 		obj_type => "MENU",
 		name => "switch",
@@ -55493,8 +55892,8 @@
 	},
 
 	#-------------------------END ACL----------------------------------------------
-	## begin acl dns 
-	{     
+	## begin acl dns
+	{
 		obj_type => "MENU",
 		name => "dns",
 		parent_menu => "root_acl",
@@ -55502,7 +55901,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Configure dns acl",
-	},  
+	},
 	{
 		obj_type => "ITEM",
 		name => "rule",
@@ -55534,7 +55933,7 @@
 							},
 							{
 								type => "STRING",
-								help_string => "DNS type. It can be \\\"A\\\" \\\"NS\\\" \\\"MD\\\" \\\"MF\\\" \\\"CNAME\\\" \\\"SOA\\\" \\\"MB\\\" \\\"MG\\\" \\\"MR\\\" \\\"NULL\\\" \\\"WKS\\\" \\\"PTR\\\" \\\"HINFO\\\" \\\"MINFO\\\" \\\"MX\\\" \\\"TXT\\\" \\\"AAAA\\\" \\\"ANY\\\" \\\"ALL\\\"", 
+								help_string => "DNS type. It can be \\\"A\\\" \\\"NS\\\" \\\"MD\\\" \\\"MF\\\" \\\"CNAME\\\" \\\"SOA\\\" \\\"MB\\\" \\\"MG\\\" \\\"MR\\\" \\\"NULL\\\" \\\"WKS\\\" \\\"PTR\\\" \\\"HINFO\\\" \\\"MINFO\\\" \\\"MX\\\" \\\"TXT\\\" \\\"AAAA\\\" \\\"ANY\\\" \\\"ALL\\\"",
 								optional => "NO",
 							},
 							{
@@ -55561,7 +55960,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Apply a rule",
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "virtual",
@@ -55761,7 +56160,7 @@
 		function_name => "dns_acl_apply_rule_virtual_clear_sdns",
 		function_args => [ ],
 	},
-	{     
+	{
 		obj_type => "MENU",
 		name => "dns",
 		parent_menu => "root_show_acl",
@@ -55769,8 +56168,8 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show configurations of DNS ACL",
-	},    
-	{     
+	},
+	{
 		obj_type => "ITEM",
 		name => "all",
 		menu => "root_show_acl_dns",
@@ -55779,8 +56178,8 @@
 		help_string => "Show all dns acl configurations",
 		function_name => "dns_acl_all_show",
 		function_args => [],
-	},   
-	{     
+	},
+	{
 		obj_type => "ITEM",
 		name => "rule",
 		menu => "root_show_acl_dns",
@@ -55849,7 +56248,7 @@
 						optional => "NO",
 					},
 				],
-	}, 
+	},
 	{
 		obj_type => "MENU",
 		name => "dns",
@@ -55887,9 +56286,9 @@
 		function_args => [ ],
 	},
 
-	## end acl dns 
+	## end acl dns
 	# begin acl http
-	{     
+	{
 		obj_type => "MENU",
 		name => "http",
 		parent_menu => "root_acl",
@@ -55897,7 +56296,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Configure http acl",
-	},    
+	},
 	{
 		obj_type => "ITEM",
 		name => "rule",
@@ -56094,7 +56493,7 @@
 				],
 	},
 	#end no acl http rule
-	#no acl http apply 
+	#no acl http apply
 	{
 		obj_type => "MENU",
 		name => "apply",
@@ -56240,7 +56639,7 @@
 	},
 	#end clear acl http
 	#show acl rule
-	{     
+	{
 		obj_type => "MENU",
 		name => "http",
 		parent_menu => "root_show_acl",
@@ -56248,8 +56647,8 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show configurations of Http ACL",
-	},    
-	{     
+	},
+	{
 		obj_type => "ITEM",
 		name => "all",
 		menu => "root_show_acl_http",
@@ -56258,8 +56657,8 @@
 		help_string => "Show all http acl configurations",
 		function_name => "http_acl_all_show",
 		function_args => [],
-	},   
-	{     
+	},
+	{
 		obj_type => "ITEM",
 		name => "rule",
 		menu => "root_show_acl_http",
@@ -56319,7 +56718,7 @@
 					},
 				],
 	},
-	#end show acl http apply 
+	#end show acl http apply
 	# end acl http
 	# begin topn
 	{
@@ -56342,11 +56741,11 @@
 		function_args => [
 			{
 				type => "STRING",
-				help_string => "TopN type. The value is ip|tcp|udp|icmp", 
+				help_string => "TopN type. The value is ip|tcp|udp|icmp",
 				optional => "NO",
 			},
 		],
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "on",
@@ -56358,7 +56757,7 @@
 		function_args => [
 			{
 				type => "STRING",
-				help_string => "TopN type. The value is ip|tcp|udp|icmp", 
+				help_string => "TopN type. The value is ip|tcp|udp|icmp",
 				optional => "NO",
 			},
 		],
@@ -56372,7 +56771,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear configuration of TopN",
 	},
-	{     
+	{
 		obj_type => "ITEM",
 		name => "settings",
 		menu => "root_clear_topn",
@@ -56381,7 +56780,7 @@
 		help_string => "Clear configuration of TopN",
 		function_name => "clear_topn_kern",
 		function_args => [],
-	}, 
+	},
 	{
 		obj_type => "MENU",
 		name => "topn",
@@ -56676,7 +57075,7 @@
 		help_string => "Enable ddos tcp",
 		function_name => "ddos_tcp_on",
 		function_args => [],
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "off",
@@ -56686,7 +57085,7 @@
 		help_string => "Disable ddos tcp",
 		function_name => "ddos_tcp_off",
 		function_args => [],
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "on",
@@ -56696,7 +57095,7 @@
 		help_string => "Enable ddos udp",
 		function_name => "ddos_udp_on",
 		function_args => [],
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "off",
@@ -56706,7 +57105,7 @@
 		help_string => "Disable ddos udp",
 		function_name => "ddos_udp_off",
 		function_args => [],
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "on",
@@ -56716,7 +57115,7 @@
 		help_string => "Enable ddos dns",
 		function_name => "ddos_dns_on",
 		function_args => [],
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "off",
@@ -56726,7 +57125,7 @@
 		help_string => "Disable ddos dns",
 		function_name => "ddos_dns_off",
 		function_args => [],
-	}, 
+	},
 	{
 		obj_type => "MENU",
 		name => "renegotiation",
@@ -56904,7 +57303,7 @@
 	},
 	# end no ddos
 	# begin clear ddos
-	{     
+	{
 		obj_type => "MENU",
 		name => "ddos",
 		parent_menu => "root_clear",
@@ -56912,8 +57311,8 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear configuration or blacklist of ddos",
-	},    
-	{     
+	},
+	{
 		obj_type => "ITEM",
 		name => "settings",
 		menu => "root_clear_ddos",
@@ -56932,7 +57331,7 @@
 		help_string => "Clear blacklist buffer of ddos",
 		function_name => "clear_blacklist_buffer",
 		function_args => [],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "record",
@@ -56943,7 +57342,7 @@
 		function_name => "clear_ddos_record",
 		function_args => [],
 	},
-	{     
+	{
 		obj_type => "MENU",
 		name => "threshold",
 		parent_menu => "root_clear_ddos",
@@ -56962,7 +57361,7 @@
 		function_name => "ddos_ssl_threshhold_clear",
 		function_args => [],
 	},
-	{     
+	{
 		obj_type => "ITEM",
 		name => "http",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
@@ -56981,7 +57380,7 @@
 	},
 	# end clear ddos
 	# begin show ddos
-	{     
+	{
 		obj_type => "MENU",
 		name => "ddos",
 		parent_menu => "root_show",
@@ -56989,7 +57388,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show configuration or blacklist of ddos",
-	},    
+	},
 	{
 		obj_type => "ITEM",
 		name => "settings",
@@ -57008,7 +57407,7 @@
 		menu => "root_show_ddos",
 		help_string => "Show record of ddos in disks",
 		function_name => "ddos_record_show",
-		function_args => [  
+		function_args => [
 					{
 						type => "STRING",
 						help_string => "Regular expression to match (optional)",
@@ -57046,8 +57445,8 @@
 						default_value => "0",
 					},
 				],
-	}, 
-	{     
+	},
+	{
 		obj_type => "MENU",
 		name => "running",
 		parent_menu => "root_show_ddos",
@@ -57055,7 +57454,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENGINEER",
 		help_string => "Show running base line information of ddos",
-	},  
+	},
 	{
 		obj_type => "ITEM",
 		name => "ssl",
@@ -57066,7 +57465,7 @@
 		function_name => "ddos_ssl_running_show",
 		function_args => [],
 	},
-	{     
+	{
 		obj_type => "ITEM",
 		name => "http",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
@@ -57082,8 +57481,8 @@
     					default_value => "\"all\"",
     				},
 				],
-	}, 
-	{     
+	},
+	{
 		obj_type => "MENU",
 		name => "threshold",
 		parent_menu => "root_show_ddos",
@@ -57091,7 +57490,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show auto threshold information of ddos",
-	},  
+	},
 	{
 		obj_type => "ITEM",
 		name => "ssl",
@@ -57102,7 +57501,7 @@
 		function_name => "ddos_ssl_threshhold_show",
 		function_args => [],
 	},
-	{     
+	{
 		obj_type => "ITEM",
 		name => "http",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
@@ -57118,8 +57517,8 @@
     					default_value => "\"all\"",
     				},
 				],
-	}, 
-	{     
+	},
+	{
 		obj_type => "MENU",
 		name => "http",
 		parent_menu => "root_show_ddos",
@@ -57127,8 +57526,8 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show http information of ddos",
-	}, 
-	{     
+	},
+	{
 		obj_type => "MENU",
 		name => "verification",
 		parent_menu => "root_show_ddos_http",
@@ -57137,7 +57536,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "  Show http verification mechanism information of ddos",
 	},
-	{     
+	{
 		obj_type => "ITEM",
 		name => "status",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
@@ -57391,7 +57790,7 @@
 							},
 						],
 	},
-	{     
+	{
 		obj_type => "MENU",
 		name => "blacklist",
 		parent_menu => "root_acl",
@@ -57440,7 +57839,7 @@
 						optional => "NO",
 					},
 					{
-						type => "U32",   
+						type => "U32",
 						help_string => "Acl blacklist rule timeout (minutes, optional, default = 0, max = 1440)",
 						optional => "YES",
 						default_value => "0",
@@ -57467,7 +57866,7 @@
 						optional => "NO",
 					},
 					{
-						type => "U32",   
+						type => "U32",
 						help_string => "Acl blacklist rule timeout (minutes, optional, default = 0)",
 						optional => "YES",
 						default_value => "0",
@@ -57562,7 +57961,7 @@
 							optional => "NO",
 					},
 					{
-						type => "U32",   
+						type => "U32",
 						help_string => "Acl blacklist file timeout (minutes, optional, default = 0)",
 						optional => "YES",
 						default_value => "0",
@@ -57604,7 +58003,7 @@
 					},
 		],
 	},
-	
+
 	#------------Advanced ACL end----------------------------------
 	{
 		obj_type => "MENU",
@@ -57894,7 +58293,7 @@
 								default_value => "\"OUT\"",
 							},
 						],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "enable",
@@ -57962,7 +58361,7 @@
 									type => "DOTTEDIP",
 									help_string => "Source IP",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "DOTTEDIP",
 									help_string => "Netmask for source IP",
@@ -57977,7 +58376,7 @@
 									type => "DOTTEDIP",
 									help_string => "Destination IP",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "DOTTEDIP",
 									help_string => "Netmask for destination IP",
@@ -58253,7 +58652,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show acl blacklist rule",
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "manual",
@@ -58510,7 +58909,7 @@
 							default_value => "\"\"",
 						},
 						],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "dd",
@@ -58520,7 +58919,7 @@
 		help_string => "Show all llb dd statistics",
 		function_name => "show_stat_llb_dd_kern",
 		function_args => [ ],
-	},	
+	},
 	#wangjx: DNS proxy
 	{
            	obj_type => "ITEM",
@@ -58591,8 +58990,8 @@
 						],
 	},
 	# Bug 14949(QoS), end
-	# Bug 16763, chenyl, 20070925 
-	{       
+	# Bug 16763, chenyl, 20070925
+	{
 		obj_type => "MENU",
 		name => "rip",
 		parent_menu => ".",
@@ -58601,22 +59000,22 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 	},
-	{       
+	{
 		obj_type => "ITEM",
 		name => "on",
 		menu => "root_rip",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",                       
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Enable RIP",
 		function_name => "rip_enable",
                 function_args => [ ],
 	},
-	{       
+	{
 		obj_type => "ITEM",
 		name => "off",
 		menu => "root_rip",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",                       
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Disable RIP",
 		function_name => "rip_disable",
                 function_args => [ ],
@@ -58633,7 +59032,7 @@
 						type => "U32",
 						help_string => "1 or 2",
 						optional => "NO",
-					}, 
+					},
 				],
 	},
 	{
@@ -58653,7 +59052,7 @@
 						type => "DOTTEDIP",
 						help_string => "Mask",
 						optional => "NO",
-					}, 
+					},
 				],
 	},
 	{
@@ -58685,7 +59084,7 @@
 		function_name => "show_rip_settings",
                 function_args => [],
         },
-    {       
+    {
 		obj_type => "MENU",
 		name => "ripng",
 		parent_menu => ".",
@@ -58694,22 +59093,22 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 	},
-	{       
+	{
 		obj_type => "ITEM",
 		name => "on",
 		menu => "root_ripng",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",                       
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Enable RIPng",
 		function_name => "ripng_enable",
                 function_args => [ ],
 	},
-	{       
+	{
 		obj_type => "ITEM",
 		name => "off",
 		menu => "root_ripng",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",                       
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Disable RIPng",
 		function_name => "ripng_disable",
                 function_args => [ ],
@@ -59351,7 +59750,7 @@
 		function_name => "rhi_on",
 		function_args => [],
 	},
-        {      
+        {
 		obj_type => "ITEM",
 		name => "off",
 		menu => "root_ospf_rhi",
@@ -59408,8 +59807,8 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "clear_rhi_stat",
 		function_args => [],
-	},	
-	{       
+	},
+	{
 		obj_type => "MENU",
 		name => "ospf",
 		parent_menu => ".",
@@ -59418,22 +59817,22 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 	},
-	{       
+	{
 		obj_type => "ITEM",
 		name => "on",
 		menu => "root_ospf",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",                       
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Enable OSPF",
 		function_name => "ospf_on",
                 function_args => [ ],
 	},
-	{       
+	{
 		obj_type => "ITEM",
 		name => "off",
 		menu => "root_ospf",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",                       
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Disable OSPF",
 		function_name => "ospf_off",
                 function_args => [ ],
@@ -59455,12 +59854,12 @@
 						type => "DOTTEDIP",
 						help_string => "Mask",
 						optional => "NO",
-					}, 
+					},
 					{
 						type => "U32",
 						help_string => "area id",
 						optional => "NO",
-					}, 
+					},
 				],
 	},
 	{
@@ -59491,7 +59890,7 @@
                                                 optional => "NO",
                                         },
                                 ],
-        },     
+        },
         {
                 obj_type => "ITEM",
                 name => "router",
@@ -59618,7 +60017,7 @@
                                                 optional => "NO",
                                         },
                                 ],
-        },     
+        },
         {
                 obj_type => "ITEM",
                 name => "router",
@@ -59629,9 +60028,9 @@
                 function_name => "no_ospf_router_id",
                 function_args => [],
         },
-	# Bug 16763, end	      
+	# Bug 16763, end
 
-	{       
+	{
 		obj_type => "MENU",
 		name => "ipv6",
 		parent_menu => ".",
@@ -59640,7 +60039,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 	},
-	{       
+	{
 		obj_type => "MENU",
 		name => "route",
 		parent_menu => "root_ipv6",
@@ -59649,7 +60048,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENGINEER",
 	},
-	{       
+	{
 		obj_type => "MENU",
 		name => "route",
 		parent_menu => "root_no_ipv6",
@@ -59658,7 +60057,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENGINEER",
 	},
-	{       
+	{
 		obj_type => "ITEM",
 		name => "default",
 		menu => "root_ipv6_route",
@@ -59674,7 +60073,7 @@
                             },
 						],
 	},
-	{       
+	{
 		obj_type => "ITEM",
 		name => "default",
 		menu => "root_no_ipv6_route",
@@ -59684,7 +60083,7 @@
 		function_name => "no_ipv6_default_route",
 		function_args => [],
 	},
-	{       
+	{
 		obj_type => "ITEM",
 		name => "static",
 		menu => "root_ipv6_route",
@@ -59706,10 +60105,10 @@
                                     type => "STRING",
                                     help_string => "Gateway IP",
                                     optional => "NO",
-                                }, 
+                                },
 							],
 	},
-	{       
+	{
 		obj_type => "ITEM",
 		name => "static",
 		menu => "root_no_ipv6_route",
@@ -59731,10 +60130,10 @@
                                     type => "STRING",
                                     help_string => "Gateway IP",
                                     optional => "NO",
-                                }, 
+                                },
 							],
 	},
-	{       
+	{
 		obj_type => "ITEM",
 		name => "route",
 		menu => "root_clear_ipv6",
@@ -59753,7 +60152,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display IPv6 configuration",
 	},
-	{       
+	{
 		obj_type => "ITEM",
 		name => "address",
 		menu => "root_show_ipv6",
@@ -59763,7 +60162,7 @@
 		function_name => "show_ipv6_address",
 		function_args => [],
 	},
-	
+
 	{
 		obj_type => "ITEM",
 		name => "address",
@@ -59781,11 +60180,11 @@
 									type => "IPADDR",
 									help_string => "Global unicast IPv6 address",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "IPMASK",
 									help_string => "Prefix length, the range is [1, 128], default is 64",
-									optional => "YES",	
+									optional => "YES",
 									default_value => "64",
 								}, ],
 	},
@@ -59851,7 +60250,7 @@
 		function_name => "clear_ospf_conf",
 		function_args => [],
 	},
-	#Bug 17823, end 	
+	#Bug 17823, end
 	# http qos, qiuzj, 20070906
 	{
 		obj_type => "MENU",
@@ -59862,7 +60261,7 @@
 		user_level => "CLI_LEVEL_ENGINEER",
 		help_string => "Configure HTTP QoS",
     },
-    
+
     {
 		obj_type => "ITEM",
 		name => "url",
@@ -59871,7 +60270,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Configure HTTP QoS filter based on URL information",
 		function_name => "qos_http_url",
-		function_args => [ 
+		function_args => [
 				   {
 					type => "STRING",
 					help_string => "Filter name of HTTP QoS",
@@ -59911,7 +60310,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove HTTP QoS filter that is based on URL information",
 		function_name => "no_qos_http_url",
-		function_args => [ 
+		function_args => [
 				   {
 					type => "STRING",
 					help_string => "Filter name of HTTP QoS",
@@ -59919,7 +60318,7 @@
 				   },
 				          ],
 	},
-	
+
 	{
 		obj_type => "MENU",
 		name => "http",
@@ -59929,7 +60328,7 @@
 		user_level => "CLI_LEVEL_ENGINEER",
 		help_string => "Show configuration about HTTP QoS",
     },
-    
+
     {
 		obj_type => "ITEM",
 		name => "url",
@@ -59940,7 +60339,7 @@
 		function_name => "show_qos_http_url",
 		function_args => [ ],
 	},
-	
+
 	{
 		obj_type => "MENU",
 		name => "http",
@@ -59950,7 +60349,7 @@
 		user_level => "CLI_LEVEL_ENGINEER",
 		help_string => "Clear configuration about HTTP QoS",
     },
-    
+
     {
 		obj_type => "ITEM",
 		name => "url",
@@ -59962,34 +60361,34 @@
 		function_args => [ ],
 	},
 # bug 17591, zhangwy, 2007/10/08
-	{ 
-		obj_type => "ITEM", 
-		name => "icookie", 
-		menu => "root_slb_mode", 
-		help_string => "Set SLB  insert cookie mode", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "slb_mode_ic_kern", 
-		function_args => [{
-					type => "STRING",
-					help_string => "Insert cookie mode: always|onlyone",   
-					optional => "NO",		
-				},], 
-	}, 
-	{ 
-		obj_type => "ITEM", 
-		name => "packetbased", 
-		menu => "root_slb_mode", 
-		help_string => "Set SLB packetbased mode", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "slb_mode_packetbased", 
-		function_args => [{
-					type => "STRING",
-					help_string => "Virtual service name",   
-					optional => "NO",		
-				},], 
-	}, 
+	{
+		obj_type => "ITEM",
+		name => "icookie",
+		menu => "root_slb_mode",
+		help_string => "Set SLB  insert cookie mode",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "slb_mode_ic_kern",
+		function_args => [{
+					type => "STRING",
+					help_string => "Insert cookie mode: always|onlyone",
+					optional => "NO",
+				},],
+	},
+	{
+		obj_type => "ITEM",
+		name => "packetbased",
+		menu => "root_slb_mode",
+		help_string => "Set SLB packetbased mode",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "slb_mode_packetbased",
+		function_args => [{
+					type => "STRING",
+					help_string => "Virtual service name",
+					optional => "NO",
+				},],
+	},
 	{
 		obj_type => "MENU",
 		name => "mode",
@@ -60007,7 +60406,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_slb_mode_regexcase",
-		function_args => [], 
+		function_args => [],
 	},
 	{
 		obj_type => "ITEM",
@@ -60141,12 +60540,12 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "hashurl",  
-		help_string => "Show hash url policies",    
+		name => "hashurl",
+		help_string => "Show hash url policies",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		menu => "root_show_slb_policy",
-		function_name => "show_slb_policy_hashurl", 
+		function_name => "show_slb_policy_hashurl",
 		function_args => [ {
 					type => "STRING",
 					help_string => "Policy name (optional)",
@@ -60156,7 +60555,7 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "hashurl",  
+		name => "hashurl",
 		help_string => "Delete all hash url policies",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -60166,7 +60565,7 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "hashurl",  
+		name => "hashurl",
 		menu => "root_show_statistics_slb_policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_KERN_API | CMD_MONITOR",
 		user_level => "CLI_LEVEL_ENABLE",
@@ -60174,14 +60573,14 @@
 		function_name => "show_statistics_slb_policy_hashurl",
 		function_args => [ {
 					type => "STRING",
-					help_string => "Policy name (optional)", 
+					help_string => "Policy name (optional)",
 					optional => "YES",
 					default_value => "\"\"",
 				}, ],
 	},
 	{
 		obj_type => "ITEM",
-		name => "hashurl",  
+		name => "hashurl",
 		menu => "root_clear_statistics_slb_policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL | CMD_GLOBAL | CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -60189,7 +60588,7 @@
 		function_name => "clear_statistics_slb_policy_hashurl",
 		function_args => [ {
 					type => "STRING",
-					help_string => "Policy name (optional)",  
+					help_string => "Policy name (optional)",
 					optional => "YES",
 					default_value => "\"\"",
 				}, ],
@@ -60394,47 +60793,47 @@
 					default_value => "\"\"",
 				 },],
 	},
-# slb mode activeclose	
-	{ 
-		obj_type => "MENU", 
-		name => "activeclose", 
-		parent_menu => "root_slb_mode", 
+# slb mode activeclose
+	{
+		obj_type => "MENU",
+		name => "activeclose",
+		parent_menu => "root_slb_mode",
 		uniq_name => "root_slb_mode_activeclose",
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		help_string => "Set SLB L4 TCP connection active close mode", 
-		
-	}, 
-	{ 
-		obj_type => "ITEM", 
-		name => "on", 
-		menu => "root_slb_mode_activeclose", 
-		help_string => "SLB L4 TCP connection active close mode enabled", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "slb_mode_activeclose_on", 
-		function_args => [{					
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Set SLB L4 TCP connection active close mode",
+
+	},
+	{
+		obj_type => "ITEM",
+		name => "on",
+		menu => "root_slb_mode_activeclose",
+		help_string => "SLB L4 TCP connection active close mode enabled",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "slb_mode_activeclose_on",
+		function_args => [{
 					type => "STRING",
 					help_string => "Real service name",
 					optional => "YES",
 					default_value => "\"\"",
-				},], 
-	}, 
-	{ 
-		obj_type => "ITEM", 
-		name => "off", 
-		menu => "root_slb_mode_activeclose", 
-		help_string => "SLB L4 TCP connection active close mode disabled", 
-		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API", 
-		user_level => "CLI_LEVEL_CONFIG", 
-		function_name => "slb_mode_activeclose_off", 
-		function_args => [{					
+				},],
+	},
+	{
+		obj_type => "ITEM",
+		name => "off",
+		menu => "root_slb_mode_activeclose",
+		help_string => "SLB L4 TCP connection active close mode disabled",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "slb_mode_activeclose_off",
+		function_args => [{
 					type => "STRING",
 					help_string => "Real service name",
 					optional => "YES",
 					default_value => "\"\"",
 				},],
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "activeclose",
@@ -60467,7 +60866,7 @@
 			type => "IPADDR",
 			help_string => "Starting IP",
 			optional => "NO",
-		}, 
+		},
 		{
 			type => "IPADDR",
 			help_string => "End IP. (default is equal to Start IP)",
@@ -60537,23 +60936,23 @@
 		user_level => "CLI_LEVEL_ENGINEER",
 		help_string => "Set SLB ip pool",
 	},
-	{ 
-		obj_type => "ITEM", 
-		name => "pool", 
-		menu => "root_slb_ip", 
-		help_string => "Set SLB ip pool", 
+	{
+		obj_type => "ITEM",
+		name => "pool",
+		menu => "root_slb_ip",
+		help_string => "Set SLB ip pool",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API|CMD_KAPI_LOCK|CMD_KAPI_LOCK_UPROXY",
-		user_level => "CLI_LEVEL_ENGINEER", 
-		function_name => "slb_ip_pool", 
+		user_level => "CLI_LEVEL_ENGINEER",
+		function_name => "slb_ip_pool",
 		function_args => [{
 					type => "STRING",
-					help_string => "pool name",   
-					optional => "NO",									
-				},], 
-	}, 
+					help_string => "pool name",
+					optional => "NO",
+				},],
+	},
 	{
 		obj_type => "MENU",
-		name => "ip",  
+		name => "ip",
 		parent_menu => "root_no_slb",
 		uniq_name => "root_no_slb_ip",
 		help_string => "Remove slb ip pool",
@@ -60579,23 +60978,23 @@
 	{
 		obj_type => "ITEM",
 		name => "forwardip",
-		menu => "root_show_slb",     
+		menu => "root_show_slb",
 		help_string => "Display the setting of extracting the client IP from the TCP option",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_slb_forwardip_kern",
-		function_args => [ {       
+		function_args => [ {
 									type => "STRING",
 									help_string => "Virtual service name",
 									optional => "YES",
 									default_value => "\"\"",
-							}, 
+							},
 						],
-	},	
+	},
 
 	{
 		obj_type => "MENU",
-		name => "ip",  
+		name => "ip",
 		parent_menu => "root_show_slb",
 		uniq_name => "root_show_slb_ip",
 		help_string => "Show slb ip pool",
@@ -60666,15 +61065,15 @@
 	},
 	{
 		obj_type => "ITEM",
-		name => "vlink",   
+		name => "vlink",
 		menu => "root_no_slb",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL | CMD_KERN_API|CMD_NON_SERIAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove a vlink",
-		function_name => "no_slb_vlink_kern",  
+		function_name => "no_slb_vlink_kern",
 		function_args => [ {
 					type => "STRING",
-					help_string => "Vlink name",   
+					help_string => "Vlink name",
 					optional => "NO",
 				}, ],
 	},
@@ -60865,7 +61264,7 @@
  		obj_type => "MENU",
  		parent_menu => ".",
  		name => "ftp" ,
- 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL", 
+ 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
  		user_level => "CLI_LEVEL_CONFIG",
  		help_string => "FTP commands",
  		uniq_name => "root_ftp",
@@ -60879,7 +61278,7 @@
  		user_level => "CLI_LEVEL_CONFIG",
  		help_string => "Configuration for FTP passive mode"
  	},
- 	
+
  	{
  		obj_type => "ITEM",
  		name => "portrange",
@@ -61055,14 +61454,14 @@
 	{
 		obj_type => "ITEM",
 		name => "resource",
-		menu => "root_clear_system",    
-		help_string => "Clear all the memory resource", 
+		menu => "root_clear_system",
+		help_string => "Clear all the memory resource",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "ui_clear_memory_resource",     
+		function_name => "ui_clear_memory_resource",
 		function_args => [],
 	},
-	{       
+	{
 		obj_type => "MENU",
 		name => "ospf",
 		parent_menu => "root_ipv6",
@@ -61071,7 +61470,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 	},
-	{       
+	{
 		obj_type => "MENU",
 		name => "ospf",
 		parent_menu => "root_no_ipv6",
@@ -61080,7 +61479,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 	},
-	{       
+	{
 		obj_type => "MENU",
 		name => "ospf",
 		parent_menu => "root_show_ipv6",
@@ -61090,22 +61489,22 @@
 		user_level => "CLI_LEVEL_ENABLE",
 	},
 
-	{       
+	{
 		obj_type => "ITEM",
 		name => "on",
 		menu => "root_ipv6_ospf",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",                       
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Enable IPv6 OSPF",
 		function_name => "ipv6_ospf_on",
              function_args => [ ],
 	},
-	{       
+	{
 		obj_type => "ITEM",
 		name => "off",
 		menu => "root_ipv6_ospf",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
-		user_level => "CLI_LEVEL_CONFIG",                       
+		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Disable IPv6 OSPF",
 		function_name => "ipv6_ospf_off",
              function_args => [ ],
@@ -61254,7 +61653,7 @@
 		obj_type => "MENU",
 		name =>"monitor",
 		parent_menu => ".",
-		uniq_name => "root_monitor",				   
+		uniq_name => "root_monitor",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Define monitor feature",
@@ -61263,7 +61662,7 @@
 		obj_type => "MENU",
 		name => "monitor",
 		parent_menu => "root_no",
-		uniq_name => "root_no_monitor",				   
+		uniq_name => "root_no_monitor",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove monitor setting",
@@ -61272,7 +61671,7 @@
 		obj_type => "MENU",
 		name => "monitor",
 		parent_menu => "root_clear",
-		uniq_name => "root_clear_monitor",				   
+		uniq_name => "root_clear_monitor",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear monitor setting",
@@ -61281,7 +61680,7 @@
 		obj_type => "MENU",
 		name => "system",
 		parent_menu => "root_monitor",
-		uniq_name => "root_monitor_system",				   
+		uniq_name => "root_monitor_system",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting system monitor function",
@@ -61290,7 +61689,7 @@
 		obj_type => "MENU",
 		name => "ssl",
 		parent_menu => "root_monitor_system",
-		uniq_name => "root_monitor_system_ssl",                            
+		uniq_name => "root_monitor_system_ssl",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting system SSL monitor function",
@@ -61299,7 +61698,7 @@
 		obj_type => "MENU",
 		name => "system",
 		parent_menu => "root_no_monitor",
-		uniq_name => "root_no_monitor_system",				   
+		uniq_name => "root_no_monitor_system",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove system monitor function",
@@ -61308,7 +61707,7 @@
 		obj_type => "MENU",
 		name => "system",
 		parent_menu => "root_clear_monitor",
-		uniq_name => "root_clear_monitor_system",				   
+		uniq_name => "root_clear_monitor_system",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Reset system monitor configurations",
@@ -61327,7 +61726,7 @@
 		obj_type => "MENU",
 		name => "cpu",
 		parent_menu => "root_monitor_system",
-		uniq_name => "root_monitor_system_cpu",				   
+		uniq_name => "root_monitor_system_cpu",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting system CPU monitor function",
@@ -61336,7 +61735,7 @@
 		obj_type => "MENU",
 		name => "cpu",
 		parent_menu => "root_no_monitor_system",
-		uniq_name => "root_no_monitor_system_cpu",				   
+		uniq_name => "root_no_monitor_system_cpu",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove CPU health check function",
@@ -61345,7 +61744,7 @@
                 obj_type => "MENU",
                 name => "ssl",
                 parent_menu => "root_no_monitor_system",
-                uniq_name => "root_no_monitor_system_ssl",                                 
+                uniq_name => "root_no_monitor_system_ssl",
                 cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
                 user_level => "CLI_LEVEL_CONFIG",
                 help_string => "Remove SSL health check function",
@@ -61370,7 +61769,7 @@
 							help_string => "Interval time: 5000 - 1000000 (ms) (default: 5000)",
 							optional => "YES",
 							default_value =>"5000",
-						}, 
+						},
 						{
 							type => "U32",
 							help_string => "Trigger up status check times: 3 - 10 (default: 3)",
@@ -61405,7 +61804,7 @@
 						help_string => "Interval time: 5000 - 1000000 (ms) (default: 5000)",
 						optional => "YES",
 						default_value =>"5000",
-					}, 
+					},
 					{
 						type => "U32",
 						help_string => "Trigger up status check times: 3 - 10 (default: 3)",
@@ -61440,7 +61839,7 @@
 						help_string => "Interval time: 5000 - 1000000 (ms) (default: 5000)",
 						optional => "YES",
 						default_value =>"5000",
-					}, 
+					},
 					{
 						type => "U32",
 						help_string => "Trigger up status check times: 3 - 10 (default: 3)",
@@ -61486,7 +61885,7 @@
 							help_string => "Interval time: 5000 - 1000000 (ms) (default: 5000)",
 							optional => "YES",
 							default_value =>"5000",
-						}, 
+						},
 						{
 							type => "U32",
 							help_string => "Trigger up status check times: 3 - 10 (default: 3)",
@@ -61548,7 +61947,7 @@
 							help_string => "Interval time: 5000 - 1000000 (ms) (default: 5000)",
 							optional => "YES",
 							default_value =>"5000",
-						}, 
+						},
 						{
 							type => "U32",
 							help_string => "Trigger available status check times: 3 - 10 (default: 3)",
@@ -61577,7 +61976,7 @@
 		obj_type => "MENU",
 		name => "cpu",
 		parent_menu => "root_clear_monitor_system",
-		uniq_name => "root_clear_monitor_system_cpu",				   
+		uniq_name => "root_clear_monitor_system_cpu",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Reset CPU health check function",
@@ -61596,7 +61995,7 @@
 		obj_type => "MENU",
 		name => "bond",
 		parent_menu => "root_clear_monitor_system",
-		uniq_name => "root_clear_monitor_system_bond",				   
+		uniq_name => "root_clear_monitor_system_bond",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Reset Bond health check function",
@@ -61615,7 +62014,7 @@
 		obj_type => "MENU",
 		name => "ssl",
 		parent_menu => "root_clear_monitor_system",
-		uniq_name => "root_clear_monitor_system_ssl",                              
+		uniq_name => "root_clear_monitor_system_ssl",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Reset SSL health check function",
@@ -61644,7 +62043,7 @@
 							help_string => "Interval time: 10000 - 3600000 (ms) (default: 10000)",
 							optional => "YES",
 							default_value =>"10000",
-						}, 
+						},
 						{
 							type => "U32",
 							help_string => "Trigger up status check times: 1 - 10 (default: 3)",
@@ -61711,7 +62110,7 @@
 		obj_type => "MENU",
 		name => "memory",
 		parent_menu => "root_monitor_system",
-		uniq_name => "root_monitor_system_memory",				   
+		uniq_name => "root_monitor_system_memory",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting memory utilization function",
@@ -61720,7 +62119,7 @@
 		obj_type => "MENU",
 		name => "memory",
 		parent_menu => "root_no_monitor_system",
-		uniq_name => "root_no_monitor_system_memory",				   
+		uniq_name => "root_no_monitor_system_memory",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove memory utilization function",
@@ -61765,7 +62164,7 @@
 							help_string => "Interval time: 5000 - 1000000 (ms) (default: 5000)",
 							optional => "YES",
 							default_value =>"5000",
-						}, 
+						},
 						{
 							type => "U32",
 							help_string => "Trigger up status check times: 3 - 10 (default: 3)",
@@ -61800,7 +62199,7 @@
 		obj_type => "MENU",
 		name => "disk",
 		parent_menu => "root_monitor_system",
-		uniq_name => "root_monitor_system_disk",				   
+		uniq_name => "root_monitor_system_disk",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting disk utilization function",
@@ -61809,7 +62208,7 @@
 		obj_type => "MENU",
 		name => "disk",
 		parent_menu => "root_no_monitor_system",
-		uniq_name => "root_no_monitor_system_disk",				   
+		uniq_name => "root_no_monitor_system_disk",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove disk utilization function",
@@ -61818,7 +62217,7 @@
 		obj_type => "MENU",
 		name => "disk",
 		parent_menu => "root_clear_monitor_system",
-		uniq_name => "root_clear_monitor_disk",				   
+		uniq_name => "root_clear_monitor_disk",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Reset Disk health check function",
@@ -61826,7 +62225,7 @@
 	{
 		obj_type => "ITEM",
 		name => "system",
-		menu => "root_monitor_system_disk",			   
+		menu => "root_monitor_system_disk",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting system disk partitiontition health check",
@@ -61843,13 +62242,13 @@
 							help_string => "Interval time: 1 - 300 (min) (default: 60)",
 							optional => "YES",
 							default_value =>"60",
-						}, 
+						},
 		]
 	},
 	{
 		obj_type => "ITEM",
 		name => "data",
-		menu => "root_monitor_system_disk",			   
+		menu => "root_monitor_system_disk",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting data disk partitiontition health check",
@@ -61866,7 +62265,7 @@
 							help_string => "Interval time: 1 - 300 (min) (default: 60)",
 							optional => "YES",
 							default_value =>"60",
-						}, 
+						},
 		]
 	},
 	{
@@ -61904,7 +62303,7 @@
 		obj_type => "MENU",
 		name => "network",
 		parent_menu => "root_monitor",
-		uniq_name => "root_monitor_network",				   
+		uniq_name => "root_monitor_network",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting gateway monitor function",
@@ -61913,7 +62312,7 @@
 		obj_type => "MENU",
 		name => "network",
 		parent_menu => "root_no_monitor",
-		uniq_name => "root_no_monitor_network",				   
+		uniq_name => "root_no_monitor_network",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove gateway monitor function",
@@ -61922,7 +62321,7 @@
 		obj_type => "MENU",
 		name => "network",
 		parent_menu => "root_clear_monitor",
-		uniq_name => "root_clear_monitor_network",				   
+		uniq_name => "root_clear_monitor_network",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear network monitor configurations",
@@ -61956,7 +62355,7 @@
 							help_string => "Interval time: 1000 - 100000 (ms) (default: 1000)",
 							optional => "YES",
 							default_value =>"1000",
-						}, 
+						},
 						{
 							type => "U32",
 							help_string => "Trigger up condition check times: 3 - 10 (default: 3)",
@@ -62011,7 +62410,7 @@
 		obj_type => "MENU",
 		name => "vcondition",
 		parent_menu => "root_monitor",
-		uniq_name => "root_monitor_vcondition",				   
+		uniq_name => "root_monitor_vcondition",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting virtual condition function",
@@ -62020,7 +62419,7 @@
 		obj_type => "MENU",
 		name => "vcondition",
 		parent_menu => "root_no_monitor",
-		uniq_name => "root_no_monitor_vcondition",				   
+		uniq_name => "root_no_monitor_vcondition",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove decision virtual condition function",
@@ -62029,7 +62428,7 @@
 		obj_type => "MENU",
 		name => "vcondition",
 		parent_menu => "root_clear_monitor",
-		uniq_name => "root_clear_monitor_vcondition",				   
+		uniq_name => "root_clear_monitor_vcondition",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear virtual monitor configurations",
@@ -62072,7 +62471,7 @@
 							type => "STRING",
 							help_string =>"Virtual condition name",
 							optional => "NO",
-						}, 
+						},
 						 ],
 	},
 	{
@@ -62144,7 +62543,7 @@
 		obj_type => "MENU",
 		name => "monitor",
 		parent_menu => "root_show",
-		uniq_name => "root_show_monitor",				   
+		uniq_name => "root_show_monitor",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Show monitor configuration",
@@ -62200,7 +62599,7 @@
 		obj_type => "MENU",
 		name => "import",
 		parent_menu => "root_monitor",
-		uniq_name => "root_monitor_import",				   
+		uniq_name => "root_monitor_import",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Monitor configuration import function; Note: Please contact technical support to obtain the script.",
@@ -62218,18 +62617,18 @@
                                     help_string => "IP of remote TFTP server",
                                     optional => "NO",
                             },
-                            {             
+                            {
                                     type => "STRING",
                                     help_string => "Name of local file",
                                     optional => "NO",
-                            },            
+                            },
                             ],
 	},
 	{
 		obj_type => "MENU",
 		name => "export",
 		parent_menu => "root_monitor",
-		uniq_name => "root_monitor_export",				   
+		uniq_name => "root_monitor_export",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Monitor configuration export function",
@@ -62258,7 +62657,7 @@
                 user_level => "CLI_LEVEL_CONFIG",
                 function_name => "monitor_import_scp",
                 function_args => [
-                				 {             
+                				 {
                                         type => "STRING",
                                         help_string => "user\@host of the config file side",
                                         optional => "NO",
@@ -62300,10 +62699,10 @@
                 user_level => "CLI_LEVEL_ENABLE",
                 function_name => "clear_statistics_monitor",
                 function_args => [],
-        },	
-	
+        },
+
 # End - monitor script
-	
+
 
 
 #new ha and connection mirroring feature
@@ -62311,7 +62710,7 @@
 		obj_type => "MENU",
 		name => "ha",
 		parent_menu => ".",
-		uniq_name => "root_ha",				   
+		uniq_name => "root_ha",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Define  HA feature",
@@ -62320,7 +62719,7 @@
 		obj_type => "MENU",
 		name => "ha",
 		parent_menu => "root_no",
-		uniq_name => "root_no_ha",				   
+		uniq_name => "root_no_ha",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove  HA setting",
@@ -62329,7 +62728,7 @@
 		obj_type => "MENU",
 		name => "ha",
 		parent_menu => "root_clear",
-		uniq_name => "root_clear_ha",				   
+		uniq_name => "root_clear_ha",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear  HA setting",
@@ -62411,7 +62810,7 @@
 		obj_type => "MENU",
 		name => "arp",
 		parent_menu => "root_ha",
-		uniq_name => "root_ha_arp",				   
+		uniq_name => "root_ha_arp",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "HA arp setting",
@@ -62420,7 +62819,7 @@
 		obj_type => "MENU",
 		name => "log",
 		parent_menu => "root_ha",
-		uniq_name => "root_ha_log",				   
+		uniq_name => "root_ha_log",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "HA log setting",
@@ -62506,11 +62905,11 @@
 		obj_type => "MENU",
 		name => "ssi",
 		parent_menu => "root_ha",
-		uniq_name => "root_ha_ssi",				   
+		uniq_name => "root_ha_ssi",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting single system image function",
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "on",
@@ -62536,11 +62935,11 @@
 		obj_type => "MENU",
 		name => "ssf",
 		parent_menu => "root_ha",
-		uniq_name => "root_ha_ssf",				   
+		uniq_name => "root_ha_ssf",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting HA stateful session failover",
-	},	
+	},
 	{
 		obj_type => "MENU",
 		name => "ssf",
@@ -62657,7 +63056,7 @@
 		obj_type => "MENU",
 		name => "group",
 		parent_menu => "root_ha",
-		uniq_name => "root_ha_group",				   
+		uniq_name => "root_ha_group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting HA group function",
@@ -62666,7 +63065,7 @@
 		obj_type => "MENU",
 		name => "group",
 		parent_menu => "root_no_ha",
-		uniq_name => "root_no_ha_group",				   
+		uniq_name => "root_no_ha_group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Delete HA group function",
@@ -62675,7 +63074,7 @@
 		obj_type => "MENU",
 		name => "group",
 		parent_menu => "root_clear_ha",
-		uniq_name => "root_clear_ha_group",				   
+		uniq_name => "root_clear_ha_group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear HA group function",
@@ -62684,7 +63083,7 @@
 	{
 		obj_type => "ITEM",
 		name => "switch",
-		menu => "root_ha_group",			   
+		menu => "root_ha_group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Switch a group to a specific unit",
@@ -62972,7 +63371,7 @@
 				help_string => "Group ID (0 to 1023)",
 				optional => "NO",
 			},
-			#should check the ip range before delete 
+			#should check the ip range before delete
 			{
 				type => "IPADDR",
 				help_string => "begin of floating ip",
@@ -63056,7 +63455,7 @@
 		obj_type => "MENU",
 		name => "preempt",
 		parent_menu => "root_ha_group",
-		uniq_name => "root_ha_group_preempt",				   
+		uniq_name => "root_ha_group_preempt",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting HA group preempt",
@@ -63128,7 +63527,7 @@
 		obj_type => "MENU",
 		name => "link",
 		parent_menu => "root_ha",
-		uniq_name => "root_ha_link",				   
+		uniq_name => "root_ha_link",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting link function",
@@ -63137,7 +63536,7 @@
 		obj_type => "MENU",
 		name => "ffo",
 		parent_menu => "root_ha_link",
-		uniq_name => "root_ha_link_ffo",				   
+		uniq_name => "root_ha_link_ffo",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting ffo link option",
@@ -63146,7 +63545,7 @@
 		obj_type => "MENU",
 		name => "network",
 		parent_menu => "root_ha_link",
-		uniq_name => "root_ha_link_network",				   
+		uniq_name => "root_ha_link_network",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting network link option",
@@ -63155,7 +63554,7 @@
 		obj_type => "MENU",
 		name => "heartbeat",
 		parent_menu => "root_ha_link_ffo",
-		uniq_name => "root_ha_link_ffo_heartbeat",				   
+		uniq_name => "root_ha_link_ffo_heartbeat",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting ffo link heartbeat option",
@@ -63256,7 +63655,7 @@
 		obj_type => "MENU",
 		name => "link",
 		parent_menu => "root_no_ha",
-		uniq_name => "root_no_ha_link",				   
+		uniq_name => "root_no_ha_link",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove HA link function",
@@ -63265,7 +63664,7 @@
 		obj_type => "MENU",
 		name => "network",
 		parent_menu => "root_no_ha_link",
-		uniq_name => "root_no_ha_link_network",				   
+		uniq_name => "root_no_ha_link_network",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove HA network link function",
@@ -63295,7 +63694,7 @@
 		obj_type => "MENU",
 		name => "link",
 		parent_menu => "root_clear_ha",
-		uniq_name => "root_clear_ha_link",				   
+		uniq_name => "root_clear_ha_link",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear HA link function",
@@ -63304,7 +63703,7 @@
 		obj_type => "MENU",
 		name => "network",
 		parent_menu => "root_clear_ha_link",
-		uniq_name => "root_clear_ha_link_network",				   
+		uniq_name => "root_clear_ha_link_network",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear HA network link function",
@@ -63324,7 +63723,7 @@
 		obj_type => "MENU",
 		name => "decision",
 		parent_menu => "root_ha",
-		uniq_name => "root_ha_decision",				   
+		uniq_name => "root_ha_decision",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting decision function",
@@ -63333,7 +63732,7 @@
 		obj_type => "MENU",
 		name => "decision",
 		parent_menu => "root_no_ha",
-		uniq_name => "root_no_ha_decision",				   
+		uniq_name => "root_no_ha_decision",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove decision function",
@@ -63342,7 +63741,7 @@
 		obj_type => "MENU",
 		name => "decision",
 		parent_menu => "root_clear_ha",
-		uniq_name => "root_clear_ha_decision",				   
+		uniq_name => "root_clear_ha_decision",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear decision function",
@@ -63396,7 +63795,7 @@
 							help_string => "Group ID: 0 - 1023 (Only Group_Failover action can assign group id)",
 							optional => "YES",
 							default_value =>"9999",
-						}, 
+						},
 
 						],
 	},
@@ -63641,7 +64040,7 @@
 		function_name => "clear_ha_consistency",
 		function_args => [],
 	},
-	#ha check peer 
+	#ha check peer
 	{
 		obj_type => "MENU",
 		name => "checkpeer",
@@ -63686,7 +64085,7 @@
 		obj_type => "MENU",
 		name => "synconfig",
 		parent_menu => "root_ha",
-		uniq_name => "root_ha_synconfig",				   
+		uniq_name => "root_ha_synconfig",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting configuration synchronization function",
@@ -63695,7 +64094,7 @@
 		obj_type => "MENU",
 		name => "bootup",
 		parent_menu => "root_ha_synconfig",
-		uniq_name => "root_ha_synconfig_bootup",				   
+		uniq_name => "root_ha_synconfig_bootup",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting configuration synchronization bootup option",
@@ -63704,7 +64103,7 @@
 		obj_type => "MENU",
 		name => "runtime",
 		parent_menu => "root_ha_synconfig",
-		uniq_name => "root_ha_synconfig_runtime",				   
+		uniq_name => "root_ha_synconfig_runtime",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Setting configuration synchronization runtime option",
@@ -63753,7 +64152,7 @@
 		obj_type => "MENU",
 		name => "floatmac",
 		parent_menu => "root_ha",
-		uniq_name => "root_ha_floatmac",				   
+		uniq_name => "root_ha_floatmac",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "HA float MAC function",
@@ -63792,7 +64191,7 @@
 							help_string => "Interval time: 100 - 10000 (ms) (default: 1000)",
 							optional => "YES",
 							default_value =>"1000",
-						}, 
+						},
 						{
 							type => "U32",
 							help_string => "Check times: 3 - 1000 (default: 15)",
@@ -63823,12 +64222,12 @@
 
 #end new ha
 
-#ePolicy 
+#ePolicy
 	{
 		obj_type => "MENU",
 		name => "epolicy",
 		parent_menu => "root_clear",
-		uniq_name => "root_clear_epolicy",				   
+		uniq_name => "root_clear_epolicy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear epolicy config",
@@ -63844,9 +64243,9 @@
 		function_args => [
 						{
 							type => "STRING",
-							help_string => "Virtual service name", 
+							help_string => "Virtual service name",
 							optional => "YES",
-                                                        default_value => "\"all\"", 
+                                                        default_value => "\"all\"",
 						},],
 	},
 	{
@@ -63989,7 +64388,7 @@
                 function_args => [
                                                 {
                                                         type => "STRING",
-                                                        help_string => "Virtual service name", 
+                                                        help_string => "Virtual service name",
                                                         optional => "YES",
                                                         default_value => "\"all\"",
                                                 },],
@@ -64001,7 +64400,7 @@
 		uniq_name => "root_epolicy_import",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		help_string => "Import a epolicy script file from web server of ftp server",	
+		help_string => "Import a epolicy script file from web server of ftp server",
 	},
 	{
 		obj_type => "ITEM",
@@ -64203,7 +64602,7 @@
 		obj_type => "MENU",
 		parent_menu => ".",
 		name => "webagent" ,
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "webagent commands",
 		# each menu must have a unique name; this is the internal name
@@ -64485,12 +64884,12 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "webagent_dns_cache_expire",
 		function_args => [ {
-						type => "U32",	 
+						type => "U32",
 						help_string => "Minimum expiration for webagent dns cache in seconds",
 						optional => "NO",
 					},
 					{
-						type => "U32",	 
+						type => "U32",
 						help_string => "Maximum expiration for webagent dns cache in seconds. 0 means no limitation on expiration for webagent dns cache.",
 						optional => "NO",
 					},],
@@ -64682,7 +65081,7 @@
 		help_string => "Add a webagent ACL item to be permitted",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-	},	
+	},
 	{
 		obj_type => "MENU",
 		name => "http",
@@ -65009,7 +65408,7 @@
 									default_value => "\"\""
 								}, ],
 	},
-	
+
 #end WebAgent
 
 #start aaa
@@ -65836,7 +66235,7 @@
 					help_string => "Regular expression pattern to filter username",
 					optional => "NO",
 			},
-			
+
 		],
 	},
 	{
@@ -65867,7 +66266,7 @@
 					help_string => "URL of the OAuth server's login page",
 					optional => "NO",
 			},
-			
+
 		],
 	},
 	{
@@ -65889,7 +66288,7 @@
 					help_string => "Registered client ID",
 					optional => "NO",
 			},
-			
+
 		],
 	},
 	{
@@ -65911,7 +66310,7 @@
 					help_string => "Registered client secret",
 					optional => "NO",
 			},
-			
+
 		],
 	},
 	{
@@ -66354,7 +66753,7 @@
 					help_string => "AAA method name",
 					optional => "YES",
 					default_value =>"\"\"",
-			},		
+			},
 		],
 	},
 	{
@@ -66371,7 +66770,7 @@
 					help_string => "AAA method name",
 					optional => "YES",
 					default_value =>"\"\"",
-			},		
+			},
 		],
 	},
 	{
@@ -66388,7 +66787,7 @@
 					help_string => "AAA method name",
 					optional => "YES",
 					default_value =>"\"\"",
-			},		
+			},
 		],
 	},
 	{
@@ -66405,7 +66804,7 @@
 					help_string => "Virutal Service name",
 					optional => "YES",
 					default_value =>"\"\"",
-			},		
+			},
 		],
 	},
 	{
@@ -66431,7 +66830,7 @@
 					help_string => "AAA role name",
 					optional => "YES",
 					default_value =>"\"\"",
-			},		
+			},
 		],
 	},
 	{
@@ -66448,7 +66847,7 @@
 					help_string => "AAA role name",
 					optional => "YES",
 					default_value =>"\"\"",
-			},		
+			},
 		],
 	},
 	{
@@ -66465,7 +66864,7 @@
 					help_string => "AAA role name",
 					optional => "YES",
 					default_value =>"\"\"",
-			},		
+			},
 		],
 	},
 	{
@@ -66482,7 +66881,7 @@
 					help_string => "AAA role name",
 					optional => "YES",
 					default_value =>"\"\"",
-			},		
+			},
 		],
 	},
 	{
@@ -66508,7 +66907,7 @@
 					help_string => "AAA RADIUS server name",
 					optional => "YES",
 					default_value =>"\"\"",
-			},		
+			},
 		],
 	},
 	{
@@ -66534,7 +66933,7 @@
 					help_string => "AAA RADIUS server name",
 					optional => "YES",
 					default_value =>"\"\"",
-			},		
+			},
 		],
 	},
 	{
@@ -66551,7 +66950,7 @@
 					help_string => "AAA RADIUS server name",
 					optional => "YES",
 					default_value =>"\"\"",
-			},		
+			},
 		],
 	},
 	{
@@ -66568,7 +66967,7 @@
 					help_string => "AAA RADIUS server name",
 					optional => "YES",
 					default_value =>"\"\"",
-			},		
+			},
 		],
 	},
 	{
@@ -66594,7 +66993,7 @@
 					help_string => "AAA LDAP server name",
 					optional => "YES",
 					default_value =>"\"\"",
-			},		
+			},
 		],
 	},
 	{
@@ -66611,7 +67010,7 @@
 					help_string => "AAA LDAP server name",
 					optional => "YES",
 					default_value =>"\"\"",
-			},		
+			},
 		],
 	},
 	{
@@ -66628,7 +67027,7 @@
 					help_string => "AAA LDAP server name",
 					optional => "YES",
 					default_value =>"\"\"",
-			},		
+			},
 		],
 	},
 	{
@@ -66654,7 +67053,7 @@
 					help_string => "AAA LDAP server name",
 					optional => "YES",
 					default_value =>"\"\"",
-			},		
+			},
 		],
 	},
 	{
@@ -66671,7 +67070,7 @@
 					help_string => "AAA LDAP server name",
 					optional => "YES",
 					default_value =>"\"\"",
-			},		
+			},
 		],
 	},
 	{
@@ -66688,9 +67087,9 @@
 					help_string => "AAA LDAP server name",
 					optional => "YES",
 					default_value =>"\"\"",
-			},		
+			},
 		],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "aaa",
@@ -67454,14 +67853,14 @@
 		help_string => "  Clear aaa statistics",
 		function_name => "clear_aaa_statistics",
 		function_args => [
-							{					
+							{
 								type => "STRING",
 								help_string => "Virtual service name.",
 								optional => "YES",
 								default_value => "\"\"",
 							},
 						],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "name",
@@ -68098,7 +68497,7 @@
                                     help_string => "HTTPS/HTTP/FTP URL to import the system package",
                                     optional => "NO",
                                     length => ["1","256"],
-                                }, 
+                                },
                                 {
                                     type => "STRING",
                                     name => "md5",
@@ -68117,7 +68516,7 @@
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
         user_level => "CLI_LEVEL_ENABLE",
         function_name => "ui_show_system_package",
-        function_args => [ 
+        function_args => [
                    {
                     name => "package_name",
                     type => "STRING",
@@ -68143,10 +68542,10 @@
                      optional => "NO",
                      length => ["1", "256"],
                        }, ],
-    },  
+    },
 
 #end aaa
-#	
+#
 # bridge start
 #
 	{
@@ -68166,14 +68565,14 @@
 		help_string => "Create a bridge",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "bridge_create",
-		function_args => [ 
+		function_args => [
 		{
 			type => "STRING",
 			help_string => "Bridge name",
 			optional => "NO",
 		},
 		],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "apprule",
@@ -68182,7 +68581,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "bridge_rule_add",
-		function_args => [ 
+		function_args => [
 		{
 			type => "STRING",
 			help_string => "Bridge name",
@@ -68223,7 +68622,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "bridge_member_add",
-		function_args => [ 
+		function_args => [
 		{
 			type => "STRING",
 			help_string => "Bridge name",
@@ -68250,7 +68649,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "bridge_vlan_add",
-		function_args => [ 
+		function_args => [
 		{
 			type => "STRING",
 			help_string => "Bridge name",
@@ -68285,7 +68684,7 @@
 		help_string => "Delete a bridge",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "bridge_delete",
-		function_args => [ 
+		function_args => [
 		{
 			type => "STRING",
 			help_string => "Bridge name",
@@ -68300,7 +68699,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "bridge_rule_delete",
-		function_args => [ 
+		function_args => [
 		{
 			type => "STRING",
 			help_string => "Bridge name",
@@ -68332,7 +68731,7 @@
 			optional => "NO",
 		},
 		],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "member",
@@ -68341,7 +68740,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "bridge_member_delete",
-		function_args => [ 
+		function_args => [
 		{
 			type => "STRING",
 			help_string => "Bridge name",
@@ -68379,7 +68778,7 @@
 			optional => "NO",
 		},
 		],
-	},	
+	},
 	{
 		obj_type => "MENU",
 		name => "bridge",
@@ -68388,7 +68787,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		parent_menu => "root_show",
 		uniq_name => "root_show_bridge",
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "config",
@@ -68397,14 +68796,14 @@
 		help_string => "Display bridge related configurations",
 		menu => "root_show_bridge",
 		function_name => "bridge_show_config",
-		function_args => [ 
-		{ 
+		function_args => [
+		{
 			type => "STRING",
 			help_string => "Bridge name",
 			optional => "YES",
 			default_value => "\"all\"",
 		}, ],
-	},		
+	},
 	{
 		obj_type => "ITEM",
 		name => "mactable",
@@ -68413,14 +68812,14 @@
 		help_string => "Display bridge MAC forward tables",
 		menu => "root_show_bridge",
 		function_name => "bridge_show_mactable",
-		function_args => [ 
-		{ 
+		function_args => [
+		{
 			type => "STRING",
 			help_string => "Bridge name, or string used to filter MAC table entries",
 			optional => "YES",
 			default_value => "\"all\"",
 		},],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "status",
@@ -68429,14 +68828,14 @@
 		help_string => "Display bridge status",
 		menu => "root_show_bridge",
 		function_name => "bridge_show_status",
-		function_args => [ 
-		{ 
+		function_args => [
+		{
 			type => "STRING",
 			help_string => "Bridge name",
 			optional => "YES",
 			default_value => "\"all\"",
 		}, ],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "appflowtable",
@@ -68455,8 +68854,8 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_MONITOR",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "bridge_show_statistic",
-		function_args => [ 
-		{ 
+		function_args => [
+		{
 			type => "STRING",
 			help_string => "Bridge name (Optional. Default: all)",
 			optional => "YES",
@@ -68471,7 +68870,7 @@
 		help_string => "Delete bridge related configuration",
 		parent_menu => "root_clear",
 		uniq_name => "root_clear_bridge",
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "apprule",
@@ -68480,8 +68879,8 @@
 		help_string => "Clear all apprules from bridges",
 		menu => "root_clear_bridge",
 		function_name => "bridge_clear_apprules",
-		function_args => [ 
-		{ 
+		function_args => [
+		{
 			type => "STRING",
 			help_string => "Bridge name",
 			optional => "YES",
@@ -68496,13 +68895,13 @@
 		help_string => "Clear VLAN tags from bridge member interfaces",
 		menu => "root_clear_bridge",
 		function_name => "bridge_clear_vlan",
-		function_args => [ 
-		{ 
+		function_args => [
+		{
 			type => "STRING",
 			help_string => "Bridge name",
 			optional => "NO",
 		}, ],
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "config",
@@ -68511,8 +68910,8 @@
 		help_string => "Clear bridge related configurations",
 		menu => "root_clear_bridge",
 		function_name => "bridge_clear_instances",
-		function_args => [ 
-		{ 
+		function_args => [
+		{
 			type => "STRING",
 			help_string => "Bridge name",
 			optional => "YES",
@@ -68527,14 +68926,14 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "bridge_clear_statistics",
-		function_args => [ 
-		{ 
+		function_args => [
+		{
 			type => "STRING",
 			help_string => "Bridge name",
 			optional => "YES",
 			default_value => "\"all\"",
 		}, ],
-	},	
+	},
 #
 # bridge end
 #
@@ -68740,7 +69139,7 @@
 		parent_menu => "root_no_spanport",
 		uniq_name => "root_no_spanport_devicegroup",
 		help_string => "Delete a group of security devices or a member used to which the picked packets are copied",
-	},	
+	},
 	{
 		obj_type => "ITEM",
 		name => "policy",
@@ -69021,7 +69420,7 @@
                                     help_string => "HTTPS/HTTP/FTP URL to import the system package",
                                     optional => "NO",
                                     length => ["1","256"],
-                                }, 
+                                },
                                 {
                                     type => "STRING",
                                     name => "md5",
@@ -69040,7 +69439,7 @@
         cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
         user_level => "CLI_LEVEL_ENABLE",
         function_name => "ui_show_system_package",
-        function_args => [ 
+        function_args => [
                    {
                     name => "package_name",
                     type => "STRING",
@@ -69066,7 +69465,7 @@
                      optional => "NO",
                      length => ["1", "256"],
                        }, ],
-    },  
+    },
 #spanport end
 #	Start SDF settings
 	{
@@ -69449,7 +69848,7 @@
 		function_args => [
 		],
 	},
-	
+
 	{
 		obj_type => "ITEM",
 		name => "reset",
@@ -69537,7 +69936,7 @@
 		return_result => [
 		],
 	},
-#	End SDF settings	
+#	End SDF settings
 	{
 		obj_type => "MENU",
 		name => "motd",
@@ -69625,7 +70024,7 @@
 		obj_type => "MENU",
 		parent_menu => ".",
 		name => "segment" ,
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Segment management feature commands",
 		uniq_name => "root_segment",
@@ -69995,7 +70394,7 @@
 									type => "IPADDR",
 									help_string => "Segment IP (the IP address needs to be translated)",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "IPMASK",
 									help_string => "Netmask for IPv4 (e.g. 255.255.255.0), or prefix length for IPv6 in the range of 1 to 128",
@@ -70029,7 +70428,7 @@
 				   				},
 								{
 									type => "U16",
-									help_string => "4(IPv4) or 6(IPv6), default is 4", 
+									help_string => "4(IPv4) or 6(IPv6), default is 4",
 									optional => "YES",
 									default_value => "4",
 								},
@@ -70075,7 +70474,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "segment_nat",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Segment name",
@@ -70085,7 +70484,7 @@
 									type => "IPADDR",
 									help_string => "Segment IP (the IP address needs to be translated)",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "IPADDR",
 									help_string => "Internal IP (the IP address after translation)",
@@ -70106,7 +70505,7 @@
 		help_string => "Remove segment NAT rules",
 		menu => "root_no_segment",
 		function_name => "no_segment_nat",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Segment name",
@@ -70116,7 +70515,7 @@
 									type => "IPADDR",
 									help_string => "Segment IP",
 									optional => "NO",
-								}, 
+								},
 								{
 									type => "IPADDR",
 									help_string => "Internal IP",
@@ -70260,14 +70659,14 @@
 							help_string => "New password",
 							optional => "YES",
 							default_value => "\"\"",
-						},],	
+						},],
 	},
 	##segment ha setting begin
 	{
 		obj_type => "MENU",
 		name => "ha",
 		parent_menu => "root_segment",
-		uniq_name => "root_segment_ha",				   
+		uniq_name => "root_segment_ha",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Configure segment HA function",
@@ -70285,7 +70684,7 @@
 		obj_type => "MENU",
 		name => "ha",
 		parent_menu => "root_no_segment",
-		uniq_name => "root_no_segment_ha",				   
+		uniq_name => "root_no_segment_ha",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove segment HA function configurations",
@@ -70294,7 +70693,7 @@
 		obj_type => "MENU",
 		name => "group",
 		parent_menu => "root_segment_ha",
-		uniq_name => "root_segment_ha_group",				   
+		uniq_name => "root_segment_ha_group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Configure segment HA group settings",
@@ -70303,7 +70702,7 @@
 		obj_type => "MENU",
 		name => "group",
 		parent_menu => "root_no_segment_ha",
-		uniq_name => "root_no_segment_ha_group",				   
+		uniq_name => "root_no_segment_ha_group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove segment HA group configurations",
@@ -70312,7 +70711,7 @@
 		obj_type => "MENU",
 		name => "group",
 		parent_menu => "root_clear_segment_ha",
-		uniq_name => "root_clear_segment_ha_group",				   
+		uniq_name => "root_clear_segment_ha_group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear segment HA group configurations",
@@ -70321,7 +70720,7 @@
 		obj_type => "MENU",
 		name => "decision",
 		parent_menu => "root_segment_ha",
-		uniq_name => "root_segment_ha_decision",				   
+		uniq_name => "root_segment_ha_decision",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Configure segment HA decision rule settings",
@@ -70330,7 +70729,7 @@
 		obj_type => "MENU",
 		name => "decision",
 		parent_menu => "root_no_segment_ha",
-		uniq_name => "root_no_segment_ha_decision",				   
+		uniq_name => "root_no_segment_ha_decision",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove segment HA decision rule configurations",
@@ -70339,7 +70738,7 @@
 		obj_type => "MENU",
 		name => "decision",
 		parent_menu => "root_clear_segment_ha",
-		uniq_name => "root_clear_segment_ha_decision",				   
+		uniq_name => "root_clear_segment_ha_decision",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear segment HA decision rule configurations",
@@ -70348,7 +70747,7 @@
 		obj_type => "MENU",
 		name => "preempt",
 		parent_menu => "root_segment_ha_group",
-		uniq_name => "root_segment_ha_group_preempt",				   
+		uniq_name => "root_segment_ha_group_preempt",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Set preemption mode for segment HA groups",
@@ -70357,7 +70756,7 @@
 		obj_type => "MENU",
 		name => "ha",
 		parent_menu => "root_show_segment",
-		uniq_name => "root_show_segment_ha",				   
+		uniq_name => "root_show_segment_ha",
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display segment HA function",
@@ -70703,7 +71102,7 @@
 				help_string => "Group ID (0 to 1023)",
 				optional => "NO",
 			},
-			#should check the ip range before delete 
+			#should check the ip range before delete
 			{
 				type => "IPADDR",
 				help_string => "begin of floating ip",
@@ -70739,7 +71138,7 @@
 							help_string => "What to show, ipv4 or ipv6",
 							optional => "YES",
 							default_value => "\"\"",
-                                                }, 
+                                                },
 						{
 							type => "STRING",
 							help_string => "Optional, all can list all eroutes including generated by ipregion",
@@ -70756,7 +71155,7 @@
 		user_level => "CLI_LEVEL_ENGINEER",
 		menu => "root_show_segment",
 		function_name => "segment_table_show_kern",
-		function_args => [ 
+		function_args => [
 							{
 								type => "STRING",
 								help_string => "Segment name",
@@ -70768,7 +71167,7 @@
 		obj_type => "MENU",
 		parent_menu => "root_show_segment",
 		name => "internalip" ,
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENGINEER",
 		help_string => "Segment internal ip range",
 		uniq_name => "root_show_segment_internal_ip",
@@ -70781,7 +71180,7 @@
 		user_level => "CLI_LEVEL_ENGINEER",
 		menu => "root_show_segment_internal_ip",
 		function_name => "show_segment_ip_auto",
-		function_args => [ 
+		function_args => [
 							{
 								type => "STRING",
 								help_string => "Segment name",
@@ -70794,7 +71193,7 @@
 		obj_type => "MENU",
 		parent_menu => "root_show_segment",
 		name => "id" ,
-		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL", 
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENGINEER",
 		help_string => "Display the segment id table",
 		uniq_name => "root_show_segment_id",
@@ -70831,7 +71230,7 @@
 								type => "IPADDR",
 								help_string => "Gateway IP",
 								optional => "NO",
-							}, 
+							},
 							{
 								type => "STRING",
 								help_string => "Segment name",
@@ -70850,7 +71249,7 @@
 								type => "IPADDR",
 								help_string => "Destination IP",
 								optional => "NO",
-							}, 
+							},
 							{
 								type => "STRING",
 								help_string => "Netmask for IPv4(e.g. 255.255.255.0), or prefix length for IPv6, in range [1,128]",
@@ -70860,7 +71259,7 @@
 								type => "STRING",
 								help_string => "Gateway IP",
 								optional => "NO",
-							}, 
+							},
 							{
 								type => "STRING",
 								help_string => "Segment name",
@@ -71210,7 +71609,7 @@
 		obj_type => "MENU",
 		name => "group",
 		parent_menu => "root_health_passive_apply",
-		uniq_name => "root_health_passive_apply_group",				   
+		uniq_name => "root_health_passive_apply_group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Apply the passive health check template to the SLB group",
@@ -71222,12 +71621,12 @@
 		help_string => "Apply an HTTP passive health check template to the SLB group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "health_passive_http_template_apply_group",		
+		function_name => "health_passive_http_template_apply_group",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing SLB group",
 									optional => "NO",
-								}, 	
+								},
 								{
 									type => "STRING",
 									help_string => "Name of an existing HTTP passive health check template",
@@ -71241,12 +71640,12 @@
 		help_string => "Apply an TCP passive health check template to the SLB group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "health_passive_tcp_template_apply_group",		
+		function_name => "health_passive_tcp_template_apply_group",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing SLB group",
 									optional => "NO",
-								}, 	
+								},
 								{
 									type => "STRING",
 									help_string => "Name of an existing TCP passive health check template",
@@ -71257,7 +71656,7 @@
 		obj_type => "MENU",
 		name => "passive",
 		parent_menu => "root_show_health",
-		uniq_name => "root_show_health_passive",				   
+		uniq_name => "root_show_health_passive",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display passive health check configuration",
@@ -71266,7 +71665,7 @@
 		obj_type => "MENU",
 		name => "urllist",
 		parent_menu => "root_show_health_passive",
-		uniq_name => "root_show_health_passive_urlist",				   
+		uniq_name => "root_show_health_passive_urlist",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display URL list configuration for passive health check",
@@ -71278,13 +71677,13 @@
 		help_string => "Display URL lists configured for passive health check",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
-		function_name => "show_health_passive_urlist_name",		
+		function_name => "show_health_passive_urlist_name",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing URL list",
 									optional => "YES",
 									default_value => "\"\"",
-								},], 	
+								},],
 	},
 	{
 		obj_type => "ITEM",
@@ -71293,13 +71692,13 @@
 		help_string => "Display the members of a URL list for passive health check",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
-		function_name => "show_health_passive_urlist_member",		
+		function_name => "show_health_passive_urlist_member",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing URL list",
 									optional => "YES",
 									default_value => "\"\"",
-								},], 	
+								},],
 	},
 	{
 		obj_type => "ITEM",
@@ -71308,13 +71707,13 @@
 		help_string => "Display the TCP passive health check template configuration",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
-		function_name => "show_health_passive_tcp_template",		
+		function_name => "show_health_passive_tcp_template",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing TCP passive health check template",
 									optional => "YES",
 									default_value => "\"\"",
-								},], 	
+								},],
 	},
 	{
 		obj_type => "ITEM",
@@ -71323,19 +71722,19 @@
 		help_string => "Display the HTTP passive health check template configuration",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
-		function_name => "show_health_passive_http_template",		
+		function_name => "show_health_passive_http_template",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing HTTP passive health check template",
 									optional => "YES",
 									default_value => "\"\"",
-								},], 	
+								},],
 	},
 	{
 		obj_type => "MENU",
 		name => "passivehealth",
 		parent_menu => "root_show_statistics",
-		uniq_name => "root_show_statistics_passivehealth",				   
+		uniq_name => "root_show_statistics_passivehealth",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "  Display the passive health check statistics",
@@ -71344,7 +71743,7 @@
 		obj_type => "MENU",
 		name => "real",
 		parent_menu => "root_show_statistics_passivehealth",
-		uniq_name => "root_show_statistics_passivehealth_real",				   
+		uniq_name => "root_show_statistics_passivehealth_real",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display the passive health check statistics for the real service",
@@ -71356,13 +71755,13 @@
 		help_string => "Display the HTTP passive health check statistics for the real service",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
-		function_name => "show_statistics_passivehealth_real_http",		
+		function_name => "show_statistics_passivehealth_real_http",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing real service to which the HTTP passive health check template has been applied",
 									optional => "YES",
 									default_value => "\"\"",
-								},], 	
+								},],
 	},
 	{
 		obj_type => "ITEM",
@@ -71371,19 +71770,19 @@
 		help_string => "Display the TCP passive health check statistics for the real service",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
-		function_name => "show_statistics_passivehealth_real_tcp",		
+		function_name => "show_statistics_passivehealth_real_tcp",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing real service to which the TCP passive health check template has been applied",
 									optional => "YES",
 									default_value => "\"\"",
-								},], 	
+								},],
 	},
 	{
 		obj_type => "MENU",
 		name => "group",
 		parent_menu => "root_show_statistics_passivehealth",
-		uniq_name => "root_show_statistics_passivehealth_group",				   
+		uniq_name => "root_show_statistics_passivehealth_group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display the passive health check statistics for the group",
@@ -71395,13 +71794,13 @@
 		help_string => "Display the HTTP passive health check statistics for the group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
-		function_name => "show_statistics_passivehealth_group_http",		
+		function_name => "show_statistics_passivehealth_group_http",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing group to which the HTTP passive health check template has been applied",
 									optional => "YES",
 									default_value => "\"\"",
-								},], 	
+								},],
 	},
 	{
 		obj_type => "ITEM",
@@ -71410,19 +71809,19 @@
 		help_string => "Display the TCP passive health check statistics for the group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
-		function_name => "show_statistics_passivehealth_group_tcp",		
+		function_name => "show_statistics_passivehealth_group_tcp",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing group to which the TCP passive health check template has been applied",
 									optional => "YES",
 									default_value => "\"\"",
-								},], 	
+								},],
 	},
 	{
 		obj_type => "MENU",
 		name => "apply",
 		parent_menu => "root_show_health_passive",
-		uniq_name => "root_show_health_passive_apply",				   
+		uniq_name => "root_show_health_passive_apply",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display the application of passive health check template",
@@ -71431,7 +71830,7 @@
 		obj_type => "MENU",
 		name => "real",
 		parent_menu => "root_show_health_passive_apply",
-		uniq_name => "root_show_health_passive_apply_real",				   
+		uniq_name => "root_show_health_passive_apply_real",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display the configuration of applying passive health check templates to the real service",
@@ -71443,7 +71842,7 @@
 		help_string => "Display the configuration of applying HTTP passive health check templates to the real service",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
-		function_name => "show_health_passive_http_real_template_apply",		
+		function_name => "show_health_passive_http_real_template_apply",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing real service",
@@ -71458,7 +71857,7 @@
 		help_string => "Display the configuration of applying TCP passive health check templates to the real service",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
-		function_name => "show_health_passive_tcp_real_template_apply",		
+		function_name => "show_health_passive_tcp_real_template_apply",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing real service",
@@ -71470,7 +71869,7 @@
 		obj_type => "MENU",
 		name => "group",
 		parent_menu => "root_show_health_passive_apply",
-		uniq_name => "root_show_health_passive_apply_group",				   
+		uniq_name => "root_show_health_passive_apply_group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display the configuration of applying passive health check templates to the SLB group",
@@ -71482,7 +71881,7 @@
 		help_string => "Display the configuration of applying HTTP passive health check templates to the SLB group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
-		function_name => "show_health_passive_http_group_template_apply",		
+		function_name => "show_health_passive_http_group_template_apply",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing SLB group",
@@ -71497,7 +71896,7 @@
 		help_string => "Display the configuration of applying TCP passive health check templates to the SLB group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
-		function_name => "show_health_passive_tcp_group_template_apply",		
+		function_name => "show_health_passive_tcp_group_template_apply",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing SLB group",
@@ -71530,12 +71929,12 @@
 		help_string => "Delete a URL list configured for passive health check",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "no_health_passive_urlist_name",		
+		function_name => "no_health_passive_urlist_name",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing URL list",
 									optional => "NO",
-								},], 	
+								},],
 	},
 	{
 		obj_type => "ITEM",
@@ -71544,17 +71943,17 @@
 		help_string => "Delete a member from the URL list configured for passive health check",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "no_health_passive_urlist_member",		
+		function_name => "no_health_passive_urlist_member",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing URL list",
 									optional => "NO",
-								}, 	
+								},
 								{
 									type => "STRING",
 									help_string => "URL to be deleted",
 									optional => "NO",
-								},], 	
+								},],
 	},
 	{
 		obj_type => "ITEM",
@@ -71563,12 +71962,12 @@
 		help_string => "Delete a TCP passive health check template",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "no_health_passive_tcp_template",		
+		function_name => "no_health_passive_tcp_template",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing TCP passive health check template",
 									optional => "NO",
-								},], 	
+								},],
 	},
 	{
 		obj_type => "ITEM",
@@ -71577,12 +71976,12 @@
 		help_string => "Delete a HTTP passive health check template",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "no_health_passive_http_template",		
+		function_name => "no_health_passive_http_template",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an exsting HTTP passive health check template",
 									optional => "NO",
-								},], 	
+								},],
 	},
 	{
 		obj_type => "MENU",
@@ -71609,12 +72008,12 @@
 		help_string => "Delete the configuration of applying HTTP passive health check templates to the real service",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "no_health_passive_http_real_template_apply",		
+		function_name => "no_health_passive_http_real_template_apply",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing real service",
 									optional => "NO",
-								},], 	
+								},],
 	},
 	{
 		obj_type => "ITEM",
@@ -71623,12 +72022,12 @@
 		help_string => "Delete the configuration of applying TCP passive health check templates to the real service",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "no_health_passive_tcp_real_template_apply",		
+		function_name => "no_health_passive_tcp_real_template_apply",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing real service",
 									optional => "NO",
-								},], 	
+								},],
 	},
 	{
 		obj_type => "MENU",
@@ -71646,12 +72045,12 @@
 		help_string => "Delete the configuration of applying HTTP passive health check templates to the SLB group",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "no_health_passive_http_group_template_apply",		
+		function_name => "no_health_passive_http_group_template_apply",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing SLB group",
 									optional => "NO",
-								},], 	
+								},],
 	},
 	{
 		obj_type => "ITEM",
@@ -71660,12 +72059,12 @@
 		help_string => "Delete the configuration of applying TCP passive health check templates to the real service",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "no_health_passive_tcp_group_template_apply",		
+		function_name => "no_health_passive_tcp_group_template_apply",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing SLB group",
 									optional => "NO",
-								},], 	
+								},],
 	},
 	{
 		obj_type => "MENU",
@@ -71692,8 +72091,8 @@
 		help_string => "Clear all URL lists configured for passive health check",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "clear_health_passive_urlist_name",		
-		function_args => [], 	
+		function_name => "clear_health_passive_urlist_name",
+		function_args => [],
 	},
 	{
 		obj_type => "ITEM",
@@ -71702,13 +72101,13 @@
 		help_string => "Clear all members from a URL list configured for passive health check",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "clear_health_passive_urlist_member",		
+		function_name => "clear_health_passive_urlist_member",
 		function_args => [		{
 									type => "STRING",
 									help_string => "Name of an existing URL list",
 									optional => "YES",
 									default_value => "\"\""
-								},], 	
+								},],
 	},
 	{
 		obj_type => "ITEM",
@@ -71717,8 +72116,8 @@
 		help_string => "Clear all TCP passive health check templates",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "clear_health_passive_tcp_template",		
-		function_args => [], 	
+		function_name => "clear_health_passive_tcp_template",
+		function_args => [],
 	},
 	{
 		obj_type => "ITEM",
@@ -71727,8 +72126,8 @@
 		help_string => "Clear all HTTP passive health check templates",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "clear_health_passive_http_template",		
-		function_args => [], 	
+		function_name => "clear_health_passive_http_template",
+		function_args => [],
 	},
 	{
 		obj_type => "MENU",
@@ -71755,8 +72154,8 @@
 		help_string => "Clear the configuration of applying HTTP passive health check templates to the real services",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "clear_health_passive_http_real_template_apply",		
-		function_args => [], 	
+		function_name => "clear_health_passive_http_real_template_apply",
+		function_args => [],
 	},
 	{
 		obj_type => "ITEM",
@@ -71765,8 +72164,8 @@
 		help_string => "Clear the configuration of applying TCP passive health check templates to the real services",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "clear_health_passive_tcp_real_template_apply",		
-		function_args => [], 	
+		function_name => "clear_health_passive_tcp_real_template_apply",
+		function_args => [],
 	},
 	{
 		obj_type => "MENU",
@@ -71784,8 +72183,8 @@
 		help_string => "Clear the configuration of applying HTTP passive health check templates to the SLB groups",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "clear_health_passive_http_group_template_apply",		
-		function_args => [], 	
+		function_name => "clear_health_passive_http_group_template_apply",
+		function_args => [],
 	},
 	{
 		obj_type => "ITEM",
@@ -71794,8 +72193,8 @@
 		help_string => "Clear the configuration of applying TCP passive health check templates to the SLB groups",
 		cmd_attribute => "CMD_ARRAYOS|CMD_KERN_API|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
-		function_name => "clear_health_passive_tcp_group_template_apply",		
-		function_args => [], 	
+		function_name => "clear_health_passive_tcp_group_template_apply",
+		function_args => [],
 	},
 	{
 		obj_type => "MENU",
@@ -71815,12 +72214,12 @@
 		menu => "root_dns_server",
 		function_name => "dns_server_source",
 		function_args => [{
-							type => "IPADDR",   
+							type => "IPADDR",
 							help_string => "Name server IP",
 							optional => "NO",
 						},
 						{
-							type => "IPADDR",   
+							type => "IPADDR",
 							help_string => "Source IP",
 							optional => "NO",
 						},],
@@ -71843,7 +72242,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "no_dns_server_source",
 		function_args => [{
-							type => "IPADDR",   
+							type => "IPADDR",
 							help_string => "Name server IP",
 							optional => "NO",
 						},],
@@ -71885,7 +72284,7 @@
 		menu => "root_show_dns_server",
 		function_name => "show_dns_server_source",
 		function_args => [{
-							type => "IPADDR",   
+							type => "IPADDR",
 							help_string => "Name server IP",
 							optional => "YES",
 							default_value => "\"\"",
@@ -72398,7 +72797,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "orchestrator_device_l4_kern",
-		function_args => [	
+		function_args => [
 					{
 						type => "STRING",
 						help_string => "L4 security device name (must be the name of a TCP-type SLB real service)",
@@ -72514,7 +72913,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "orchestrator_service_l2_kern",
-		function_args => [	
+		function_args => [
 					{
 						type => "STRING",
 						help_string => "Security service name(a string of 1 to 128 bytes)",
@@ -72558,7 +72957,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "clear_orchestrator_service_l2_kern",
-		function_args => [], 	
+		function_args => [],
 	},
 	{
 		obj_type => "ITEM",
@@ -72585,7 +72984,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "orchestrator_service_l3_kern",
-		function_args => [	
+		function_args => [
 					{
 						type => "STRING",
 						help_string => "Security service name(a string of 1 to 128 bytes)",
@@ -72656,7 +73055,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "orchestrator_service_l4_kern",
-		function_args => [	
+		function_args => [
 					{
 						type => "STRING",
 						help_string => "Security service name (must be the name of an existing TCP-type SLB virtual service)",
@@ -72857,7 +73256,7 @@
 						default_value =>"\"\"",
 					},
 		],
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "enable",
@@ -72899,7 +73298,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_orchestrator_service_enable_kern",
 		function_args => [],
-	}, 
+	},
 	{
 		obj_type => "ITEM",
 		name => "disable",
@@ -72909,7 +73308,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_orchestrator_service_disable_kern",
 		function_args => [],
-	}, 
+	},
 	{
 		obj_type => "MENU",
 		name => "chain",
@@ -73078,30 +73477,30 @@
 						default_value =>"\"\"",
 					},
 		],
-	}, 
+	},
 	{
 		obj_type => "MENU",
-		name => "policy", 
+		name => "policy",
 		parent_menu => "root_orchestrator",
-		uniq_name => "root_orchestrator_policy", 
+		uniq_name => "root_orchestrator_policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Configure an orchestration policy",
 	},
 	{
 		obj_type => "MENU",
-		name => "policy", 
+		name => "policy",
 		parent_menu => "root_no_orchestrator",
-		uniq_name => "root_no_orchestrator_policy", 
+		uniq_name => "root_no_orchestrator_policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Delete an orchestration policy",
 	},
 	{
 		obj_type => "MENU",
-		name => "policy", 
+		name => "policy",
 		parent_menu => "root_clear_orchestrator",
-		uniq_name => "root_clear_orchestrator_policy", 
+		uniq_name => "root_clear_orchestrator_policy",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear orchestration policies",
@@ -73181,7 +73580,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "clear_orchestrator_policy_name_kern",
-		function_args => [], 	
+		function_args => [],
 	},
 	{
 		obj_type => "ITEM",
@@ -73208,7 +73607,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "orchestrator_policy_rule_kern",
-		function_args => [	
+		function_args => [
 					{
 						type => "STRING",
 						help_string => "Security policy name",
@@ -73250,7 +73649,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "clear_orchestrator_policy_rule_kern",
-		function_args => [	
+		function_args => [
 					{
 						type => "STRING",
 						help_string => "Orchestration policy name (optional, default value is NULL)",
@@ -73267,7 +73666,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_orchestrator_policy_rule_kern",
-		function_args => [	
+		function_args => [
 					{
 						type => "STRING",
 						help_string => "Orchestration policy name (optional, default value is NULL)",
@@ -73278,27 +73677,27 @@
 	},
 	{
 		obj_type => "MENU",
-		name => "rule", 
+		name => "rule",
 		parent_menu => "root_orchestrator",
-		uniq_name => "root_orchestrator_rule", 
+		uniq_name => "root_orchestrator_rule",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Configure an orchestrator rule",
 	},
 	{
 		obj_type => "MENU",
-		name => "rule", 
+		name => "rule",
 		parent_menu => "root_no_orchestrator",
-		uniq_name => "root_no_orchestrator_rule", 
+		uniq_name => "root_no_orchestrator_rule",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Delete an orchestration rule",
 	},
 	{
 		obj_type => "MENU",
-		name => "rule", 
+		name => "rule",
 		parent_menu => "root_clear_orchestrator",
-		uniq_name => "root_clear_orchestrator_rule", 
+		uniq_name => "root_clear_orchestrator_rule",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear orchestration rules",
@@ -73387,7 +73786,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
 		user_level => "CLI_LEVEL_ENABLE",
 		function_name => "show_orchestrator_rule_network_kern",
-		function_args => [	
+		function_args => [
 					{
 						type => "STRING",
 						help_string => "Rule name(optional, default value is NULL)",
@@ -73433,7 +73832,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_ENABLE",
 	},
-	
+
 	{
 		obj_type => "MENU",
 		name => "attach",
@@ -73540,18 +73939,18 @@
 	},
 	{
 		obj_type => "MENU",
-		name => "health", 
+		name => "health",
 		parent_menu => "root_no_orchestrator",
-		uniq_name => "root_no_orchestrator_health", 
+		uniq_name => "root_no_orchestrator_health",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Delete orchestrator health check configuration",
 	},
 	{
 		obj_type => "MENU",
-		name => "health", 
+		name => "health",
 		parent_menu => "root_clear_orchestrator",
-		uniq_name => "root_clear_orchestrator_health", 
+		uniq_name => "root_clear_orchestrator_health",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear orchestrator health check configuration",
@@ -73605,7 +74004,7 @@
 									type => "U16",
 									help_string => "Table index of the HTTP health check response",
 									optional => "NO",
-								},],	
+								},],
 	},
 	{
 		obj_type => "ITEM",
@@ -73619,7 +74018,7 @@
 									type => "STRING",
 									help_string => "Health check name",
 									optional => "NO",
-								},],	
+								},],
 	},
 	{
 		obj_type => "MENU",
@@ -73665,7 +74064,7 @@
 		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
 		function_name => "orch_clear_hc_bind",
-		function_args => [],	
+		function_args => [],
 	},
 	{
 		obj_type => "MENU",
@@ -73707,7 +74106,7 @@
 									help_string => "Health check name",
 									optional => "YES",
 									default_value => "\"\"",
-								},],	
+								},],
 	},
 	{
 		obj_type => "ITEM",
@@ -73717,7 +74116,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Define a health check for the security service",
 		function_name => "orch_hc_kern",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Health check name",
@@ -73777,7 +74176,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Define a additional health check for the security device",
 		function_name => "orch_hc_device_kern",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Health check name",
@@ -73837,7 +74236,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove orchestrator service health check",
 		function_name => "no_orch_hc_kern",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Health check name",
@@ -73852,7 +74251,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Remove orchestrator additional health check",
 		function_name => "no_orch_add_hc_kern",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Additional health check name",
@@ -73867,7 +74266,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear orchestrator service health check",
 		function_name => "clear_orch_hc_kern",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Security service name",
@@ -73883,7 +74282,7 @@
 		user_level => "CLI_LEVEL_CONFIG",
 		help_string => "Clear orchestrator additional health check",
 		function_name => "clear_orch_add_hc_kern",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Security device name",
@@ -73899,7 +74298,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display the security service's health check",
 		function_name => "show_orch_hc_kern",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Security service name",
@@ -73915,7 +74314,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display the security device's additional health check",
 		function_name => "show_orch_add_hc_kern",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Security device name",
@@ -73931,7 +74330,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display the security device's health status",
 		function_name => "show_orch_hc_device_status_kern",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Security device name",
@@ -73947,7 +74346,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display the security service's health status",
 		function_name => "show_orch_hc_service_status_kern",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Security service name",
@@ -73963,7 +74362,7 @@
 		user_level => "CLI_LEVEL_ENABLE",
 		help_string => "Display the security chain's health status",
 		function_name => "show_orch_hc_chain_status_kern",
-		function_args => [ 
+		function_args => [
 								{
 									type => "STRING",
 									help_string => "Security service chain name",
@@ -74017,7 +74416,7 @@
 		function_name => "orch_hc_kern_off",
 		function_args => [],
 	},
-	
+
 		{
 		obj_type => "MENU",
 		name => "orchestrator",
Index: /branches/rel_apv_10_7/usr/click/lib/libuinet-atcp/lib/libuinet/uinet_if_dpdk_host.c
===================================================================
--- /branches/rel_apv_10_7/usr/click/lib/libuinet-atcp/lib/libuinet/uinet_if_dpdk_host.c	(revision 38507)
+++ /branches/rel_apv_10_7/usr/click/lib/libuinet-atcp/lib/libuinet/uinet_if_dpdk_host.c	(working copy)
@@ -2588,9 +2588,17 @@
 	}
 }
 
+// for azure version
 void
 if_dpdk_get_eth_dev_pci_info (uint8_t port_id, struct uinet_dev_pci_info *info) 
 {
+	struct rte_eth_dev_info dev_info;
+
+	rte_eth_dev_info_get(port_id, &dev_info);
+	if (dev_info.pci_dev == NULL) {
+		return;
+	}
+
 	struct rte_pci_device *nic_dev = NULL;
 
 	nic_dev = RTE_DEV_TO_PCI(rte_eth_devices[port_id].device);
Index: /branches/rel_apv_10_7/usr/click/tools/azure/AZAuthManager.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/AZAuthManager.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/AZAuthManager.py	(working copy)
@@ -0,0 +1,31 @@
+import json
+import os
+import argparse
+from az_auth.AZAuthController import AZAuthController
+from utils.OutputController import OutputController
+class AZAuthManager():
+    def __init__(self) -> None:
+        pass
+    
+if __name__=='__main__':
+    parser = argparse.ArgumentParser(description='Process optional name argument.')
+    parser.add_argument('-mode', type=str, help='Enter [login], [logout], or [show]')
+    args = parser.parse_args()
+
+
+    az_auth_controller = AZAuthController()
+    if args.mode=='login':
+        az_auth_controller.login_az()
+    elif  args.mode=='logout':
+        output_controller = OutputController()
+        output_controller.start_to_file()
+        az_auth_controller.logout_az()
+        output_controller.end_to_file()
+    elif  args.mode=='show':
+        output_controller = OutputController()
+        output_controller.start_to_file()
+        az_auth_controller.show_az()
+        output_controller.end_to_file()
+    else:
+        print(f"Error: mode arugment must be login, logout, and show. mode:[{args.mode}]")
+    
Index: /branches/rel_apv_10_7/usr/click/tools/azure/AZFailoverManager.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/AZFailoverManager.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/AZFailoverManager.py	(working copy)
@@ -0,0 +1,50 @@
+import argparse
+import json
+import os
+from az_nic.NICController import NICController
+from az_route_table.RouteTableFailoverManager import RouteTableFailoverManager
+class AZFailoverManager():
+    '''This class is used while failover happen and failover recover.\n
+    It does two things:
+    1. move ip config from secondary nic to primary nic.
+    2. move routing rules of from primary subnet to secondary subnet. (Due to assumption, the code of this task is commented out.)
+    '''
+    def __init__(self, ip_config_setting) -> None:
+        self.subscription_id = ip_config_setting['subscription_id']
+        self.resource_group_name = ip_config_setting['resource_group_name']
+        self.from_nic_name = ip_config_setting['from_nic_name']
+        # self.from_ip_config_name = ip_config_setting['from_ip_config_name']
+        self.to_nic_name = ip_config_setting['to_nic_name']
+        # self.to_ip_config_name = ip_config_setting['to_ip_config_name']
+    def failover_happen(self):
+        '''two things to do: 1. transfer ip config. 2. transfer UDR'''
+        nicC = NICController(self.subscription_id, self.resource_group_name)
+        # nicC.transfer_ip_config(self.from_nic_name, self.from_ip_config_name, self.to_nic_name, self.to_ip_config_name)
+        nicC.transfer_all_ip_config(from_nic_name=self.from_nic_name, to_nic_name=self.to_nic_name)
+        # Assumption is that two vAPV is within the same subnet. No need to transfer UDR
+        # fm = RouteTableFailoverManager()
+        # fm.handle_failover_happen()
+
+    def failover_recover(self):
+        nicC = NICController(self.subscription_id, self.resource_group_name)
+        # nicC.transfer_ip_config(self.to_nic_name, self.to_ip_config_name, self.from_nic_name, self.to_ip_config_name)
+        nicC.transfer_all_ip_config(from_nic_name=self.to_nic_name, to_nic_name= self.from_nic_name)
+if __name__=="__main__":
+    parser = argparse.ArgumentParser(description='Process optional name argument.')
+    parser.add_argument('-mode', type=str, help='Enter 1 or 2: mode 1 is for failover happen; mode 2 is failover recover')
+    args = parser.parse_args()
+
+    config_dir = '/ca/conf/'
+    ip_config_setting_file_name = 'ip_config_setting.json'
+    setting_file_location = os.path.join(config_dir, ip_config_setting_file_name)
+    with open(setting_file_location, 'r') as file:
+        ip_config_setting = json.load(file)
+    az_failover_manager = AZFailoverManager(ip_config_setting)
+    if args.mode=='1':
+        # print("mode 1")
+        az_failover_manager.failover_happen()
+    elif  args.mode=='2':
+        # print("mode 2")
+        az_failover_manager.failover_recover()
+    else:
+        print(f"Error: mode must arugment must be 1 or 2. mode:[{args.mode}]")
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/tools/azure/AZFailoverPoller.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/AZFailoverPoller.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/AZFailoverPoller.py	(working copy)
@@ -0,0 +1,98 @@
+
+import json
+import os
+import argparse
+from datetime import datetime
+import time
+import psutil
+import os
+from apv_controller.APVController import APVController
+from AZFailoverManager import AZFailoverManager
+# todo put it in APV enviroment, parse heartbeat
+class AZFailoverPoller():
+    def __init__(self) -> None:
+        pass
+    def start(self, setting_file_location):
+        
+        in_failover = False
+        polling_period = 2 #seconds
+        # self.print_current_time(1)
+        apv_contronller = APVController()
+        if apv_contronller.is_primary():
+            print(f"This APV [{apv_contronller.get_apv_name()}] is primary APV in HA.")
+            return
+        print(f"This APV [{apv_contronller.get_apv_name()}] is secondary APV in HA.")
+        print(f'APV [{apv_contronller.get_apv_name()}] start polling')
+        # pooling
+        while True:
+            time.sleep(polling_period)
+            # primary machine doesn't need to do pooling
+            if apv_contronller.is_primary():
+                break
+            if not apv_contronller.is_primary_alive():
+                if not in_failover:
+                    # failover happen
+                    current_time = datetime.now().strftime("%Y-%m-%d %H %M %S")
+                    print(f"Failover happen on {current_time}")
+                    az_failover_manager = AZFailoverManager(setting_file_location)
+                    az_failover_manager.failover_happen()
+                    #todo need to verify that all setting are set, and then set is_failover=True
+                    print("Succeessfully handle failover transition")
+
+                    # set in_failover=True for condition that the primary APV is ON again.
+                    in_failover = True
+                continue
+            elif in_failover:
+                # failover happended before and now the primary APV is ON
+                current_time = datetime.now().strftime("%Y-%m-%d %H %M %S")
+                print(f"Failover recover on {current_time}")
+                az_failover_manager = AZFailoverManager(setting_file_location)
+                az_failover_manager.failover_recover()
+
+                # reset
+                in_failover = False
+
+
+    def kill_poller(self, process_name):
+        for proc in psutil.process_iter(['pid', 'cmdline']):
+            if process_name in proc.info['cmdline']:
+                proc.kill()
+                print('kill ', process_name)
+                return
+        print(f"Didn't stop poller. Cannnot found module name:{process_name}. Please check current module name.", )
+    
+    def stop(self):
+        '''kill poller that is another running process by its filename, a.k.a. this file name.'''
+        # get this module name (filename)
+        module_name = os.path.basename(__file__)
+        self.kill_poller(module_name)
+    
+    def print_current_time(self, interval):
+        pid = os.getpid()
+        try:
+            while True:
+                current_time = datetime.now().strftime("%H:%M:%S")
+                print("pid: ", pid, " Current Time:", current_time)
+                time.sleep(interval)
+        except KeyboardInterrupt:
+            print("\nProcess interrupted. Exiting...")
+if __name__=='__main__':
+    parser = argparse.ArgumentParser(description='Process optional name argument.')
+    parser.add_argument('-mode', type=str, help='Enter 1 or 2: mode 1: start polling; mode 2: stop polling')
+    args = parser.parse_args()
+    az_polloer = AZFailoverPoller()
+    config_dir = '/ca/conf/'
+    ip_config_setting_file_name = 'ip_config_setting.json'
+    setting_file_location = os.path.join(config_dir, ip_config_setting_file_name)
+    with open(setting_file_location, 'r') as f:
+        data = f.read()
+    ip_config_setting_json = json.loads(data)
+
+    if args.mode=='1':
+        print("mode 1")    
+        az_polloer.start(ip_config_setting_json)
+    elif  args.mode=='2':
+        print("mode 2")
+        az_polloer.stop()
+    else:
+        print(f"Error: mode must arugment must be 1 or 2. mode:[{args.mode}]")
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/tools/azure/ConfigManager.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/ConfigManager.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/ConfigManager.py	(working copy)
@@ -0,0 +1,73 @@
+import json
+import os
+import argparse
+
+class IPConfigManager():
+    '''set needed configuration for transferring routing table and network interface'''
+    def __init__(self, ip_config_file_path) -> None:
+        self.ip_config_file_path = ip_config_file_path
+    def show_ip_config(self):
+        try:
+            with open(self.ip_config_file_path, 'r') as f:
+                data = f.read()
+            ip_config_setting_json = json.loads(data)
+
+            print(f"Subscription ID: {ip_config_setting_json['subscription_id']}")
+            print(f"Resource group name: {ip_config_setting_json['resource_group_name']}")
+            print(f"Primary NIC name: {ip_config_setting_json['from_nic_name']}")
+            # print(f"The name of ip configuration: {ip_config_setting_json['from_ip_config_name']}")
+            print(f"Secondary NIC name: {ip_config_setting_json['to_nic_name']}")
+        except Exception:
+            print("Error: No ip configuration found. Set it before examine it.")
+    def clear_ip_config(self):
+        if os.path.exists(self.ip_config_file_path):
+            os.remove(self.ip_config_file_path)
+            print('clear ip configuration')
+
+    def set_ip_config(self, subscription_id, resource_group_name, from_nic_name, to_nic_name):
+        # subscription_id = input("Enter subscription ID: ")
+        # resource_group_name = input("Enter resource group name: ")
+        # from_nic_name = input("Enter NIC name of the primary machine: ")
+        # from_ip_config_name = input("Enter name of ip configuration need to be switch while failover happen: ")
+        # to_nic_name = input("Enter NIC name of the secondary machine: ")
+        data = {
+            "subscription_id": subscription_id,
+            "resource_group_name": resource_group_name,
+            "from_nic_name": from_nic_name,
+            # "from_ip_config_name": from_ip_config_name,
+            "to_nic_name": to_nic_name,
+            # "to_ip_config_name": from_ip_config_name,
+        }
+        # Write the dictionary of setting to a JSON file
+        with open(self.ip_config_file_path, 'w') as json_file:
+            json.dump(data, json_file, indent=4)
+
+if __name__=="__main__":
+    parser = argparse.ArgumentParser(description='Process optional name argument.')
+    parser.add_argument('-mode', type=str, help='Enter [set], [show], or [clear]')
+
+    parser.add_argument('-sub_id', type=str, help='subscription ID')
+    parser.add_argument('-res_grp_name', type=str, help='resource group name')
+    parser.add_argument('-src_nic_name', type=str, help='NIC name of the primary machine')
+    # parser.add_argument('-src_ip_cfg_name', type=str, help='name of ip configuration need to be switch while failover happen')
+    parser.add_argument('-dest_nic_name', type=str, help='NIC name of the secondary machine')
+
+    args = parser.parse_args()
+
+    config_dir = '/ca/conf/'
+    ip_config_setting_file_name = 'ip_config_setting.json'
+    if not os.path.exists(config_dir):
+        os.makedirs(config_dir)
+        print(f"Directory '{config_dir}' created successfully.")
+    setting_file_location = os.path.join(config_dir, ip_config_setting_file_name)
+    
+    ip_config_manager = IPConfigManager(setting_file_location)
+    if args.mode=='set':
+        ip_config_manager.set_ip_config(args.sub_id, args.res_grp_name, args.src_nic_name, args.dest_nic_name)
+    elif  args.mode=='show':
+        ip_config_manager.show_ip_config()
+    elif  args.mode=='clear':
+        ip_config_manager.clear_ip_config()
+
+    else:
+        print(f"Error: mode must arugment must be set, show, and clear. mode:[{args.mode}]")
Index: /branches/rel_apv_10_7/usr/click/tools/azure/RouteConfigManager.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/RouteConfigManager.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/RouteConfigManager.py	(working copy)
@@ -0,0 +1,91 @@
+import json
+import os
+import argparse
+import ipaddress
+
+class RouteConfigManager():
+    '''set needed configuration for transferring routing table and network interface'''
+    def __init__(self, ip_config_file_path) -> None:
+        self.ip_config_file_path = ip_config_file_path
+    def show_UDR_config(self):
+        try:
+            with open(self.ip_config_file_path, 'r') as f:
+                data = f.read()
+            ip_config_setting_json = json.loads(data)
+
+            print(f"Subscription ID: {ip_config_setting_json['subscription_id']}")
+            print(f"Resource group name: {ip_config_setting_json['resource_group_name']}")
+            print(f"Monitored_vm_name: {ip_config_setting_json['monitored_vm_name']}")
+            print(f"The required ip while monitored vm is up: {ip_config_setting_json['target_ip_when_running']}")
+            print(f"The required ip while monitored vm is down: {ip_config_setting_json['target_ip_when_deallocated']}")
+        except Exception:
+            print("Error: No ip configuration found. Set it before examine it.")
+    def clear_UDR_config(self):
+        if os.path.exists(self.ip_config_file_path):
+            os.remove(self.ip_config_file_path)
+            print('clear ip configuration')
+
+    def set_UDR_config(self, subscription_id, resource_group_name, monitored_vm_name, target_ip_when_running, target_ip_when_deallocated):
+        # subscription_id = input("Enter subscription ID: ")
+        # resource_group_name = input("Enter resource group name: ")
+        # from_nic_name = input("Enter NIC name of the primary machine: ")
+        # from_ip_config_name = input("Enter name of ip configuration need to be switch while failover happen: ")
+        # to_nic_name = input("Enter NIC name of the secondary machine: ")
+        data = {
+            "subscription_id": subscription_id,
+            "resource_group_name": resource_group_name,
+            "monitored_vm_name": monitored_vm_name,
+            "target_ip_when_running": target_ip_when_running,
+            "target_ip_when_deallocated": target_ip_when_deallocated,
+        }
+        # Write the dictionary of setting to a JSON file
+        with open(self.ip_config_file_path, 'w') as json_file:
+            json.dump(data, json_file, indent=4)
+
+    def is_valid_ipv4_address(self, address):
+        try:
+            ip = ipaddress.ip_address(address)
+            return isinstance(ip, ipaddress.IPv4Address)
+        except ValueError:
+            return False
+        
+if __name__=="__main__":
+    parser = argparse.ArgumentParser(description='Process optional name argument.')
+    parser.add_argument('-mode', type=str, help='Enter [set], [show], or [clear]')
+
+    parser.add_argument('-sub_id', type=str, help='subscription ID')
+    parser.add_argument('-res_grp_name', type=str, help='resource group name')
+    parser.add_argument('-vm_name', type=str, help='the name of vm will be monitored')
+    parser.add_argument('-ip_running', type=str, help='the ip of set on UDR while monitored vm is up')
+    parser.add_argument('-ip_deallocating', type=str, help='the ip of set on UDR while monitored vm is down')
+
+    args = parser.parse_args()
+
+    config_dir = '/ca/conf/'
+    ip_config_setting_file_name = 'route_table_config_setting.json'
+    if not os.path.exists(config_dir):
+        os.makedirs(config_dir)
+        print(f"Directory '{config_dir}' created successfully.")
+    setting_file_location = os.path.join(config_dir, ip_config_setting_file_name)
+    # print("setting_file_location", setting_file_location)
+    route_config_manager = RouteConfigManager(setting_file_location)
+    if args.mode=='set':
+        is_ip_valid = True
+        is_ip_valid &= route_config_manager.is_valid_ipv4_address(args.ip_running)
+        is_ip_valid &= route_config_manager.is_valid_ipv4_address(args.ip_deallocating)
+        if is_ip_valid:
+            route_config_manager.set_UDR_config(args.sub_id, 
+                                                args.res_grp_name, 
+                                                args.vm_name, 
+                                                args.ip_running,
+                                                args.ip_deallocating
+                                                )
+        else:
+            print("IP4 format is not correct.")
+    elif  args.mode=='show':
+        route_config_manager.show_UDR_config()
+    elif  args.mode=='clear':
+        route_config_manager.clear_UDR_config()
+
+    else:
+        print(f"Error: mode must arugment must be set, show, and clear. mode:[{args.mode}]")
Index: /branches/rel_apv_10_7/usr/click/tools/azure/SystemRun.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/SystemRun.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/SystemRun.py	(working copy)
@@ -0,0 +1,51 @@
+import sys
+import os
+import argparse
+import subprocess
+
+def main():
+    parser = argparse.ArgumentParser(description='Run a command using subprocess.run')
+    parser.add_argument('shell', type=int, help='1 use shell, 0 not use shell')
+    parser.add_argument('path_prfix', type=str, help='Create file path_prfix_0 or path_prfix_1 (include != 0) and path_prfix_output')
+    parser.add_argument('command', type=str, help='The command to run')
+    parser.add_argument('args', nargs=argparse.REMAINDER, help='Arguments for the command')
+
+    args = parser.parse_args()
+    command = [args.command] + args.args
+
+    path0 = args.path_prfix + '_0'
+    path1 = args.path_prfix + '_1'
+    pathOutput = args.path_prfix + '_output'
+
+    if os.path.exists(path0):
+        os.remove(path0)
+
+    if os.path.exists(path1):
+        os.remove(path1)
+
+    if os.path.exists(pathOutput):
+        os.remove(pathOutput)
+
+    shellFlag = args.shell
+    if shellFlag == 1:
+        shellFlag = True
+    else:
+        shellFlag = False
+
+    result = subprocess.run(command, shell=shellFlag, capture_output=True,  text=True)
+
+    if result.returncode == 0:
+        with open(path0, 'w') as file:
+            file.write(str(result.returncode))
+    else:
+        with open(path1, 'w') as file:
+            file.write(str(result.returncode))
+
+    if not shellFlag:
+        with open(pathOutput, 'w') as file:
+            file.write(result.stdout)
+
+    sys.exit(result.returncode)
+
+if __name__ == '__main__':
+    main()
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/tools/azure/UDRPoller.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/UDRPoller.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/UDRPoller.py	(working copy)
@@ -0,0 +1,88 @@
+import argparse
+import time
+import os
+import json
+import psutil
+from az_vm.VMController import VMController
+from az_route_table.RouteTableController import RouteTableController
+
+
+class UDRPoller():
+    def __init__(self, rout_table_config_setting_json) -> None:
+        self.rout_table_config_setting_json = rout_table_config_setting_json
+    def start(self):
+        polling_period = 2 #seconds
+        vm_controller = VMController(
+            self.rout_table_config_setting_json['subscription_id'],
+            self.rout_table_config_setting_json['resource_group_name']
+            )
+        is_target_vm_down = False
+
+        route_table_update_count = 0
+        route_table_controller = RouteTableController(
+            subscription_id=self.rout_table_config_setting_json['subscription_id'],
+            resource_group_name=self.rout_table_config_setting_json['resource_group_name']
+        )
+        while True:
+            time.sleep(polling_period)
+            print("polling...")
+            if not vm_controller.is_VM_alive_by_name(self.rout_table_config_setting_json["monitored_vm_name"]):
+                # target vm is down
+                print("detect target vm is down")
+                route_table_controller.change_all_UDR_routes_by_ip(
+                    ori_next_hop_ip=self.rout_table_config_setting_json["target_ip_when_running"],
+                    modify_next_hop_ip=self.rout_table_config_setting_json["target_ip_when_deallocated"],
+                )
+                # set vm status
+                is_target_vm_down=True
+            else:
+                # target vm is up
+                print("detect target vm is up")
+                route_table_controller.change_all_UDR_routes_by_ip(
+                    ori_next_hop_ip=self.rout_table_config_setting_json["target_ip_when_deallocated"],
+                    modify_next_hop_ip=self.rout_table_config_setting_json["target_ip_when_running"],
+                )
+                # set vm status
+                is_target_vm_down=False
+            
+            route_table_update_count += 1
+            if route_table_update_count >= 60 / polling_period:
+                route_table_controller = RouteTableController(
+                    subscription_id=self.rout_table_config_setting_json['subscription_id'],
+                    resource_group_name=self.rout_table_config_setting_json['resource_group_name']
+                )
+                route_table_update_count = 0
+                
+    def stop(self):
+        '''kill poller that is another running process by its filename, a.k.a. this file name.'''
+        # get this module name (filename)
+        module_name = os.path.basename(__file__)
+        self.kill_poller(module_name)
+    def kill_poller(self, process_name):
+            for proc in psutil.process_iter(['pid', 'cmdline']):
+                if process_name in proc.info['cmdline']:
+                    proc.kill()
+                    print('kill ', process_name)
+                    return
+            print(f"Didn't stop poller. Cannnot found module name:{process_name}. Please check current module name.", )
+if __name__=='__main__':
+    parser = argparse.ArgumentParser(description='Process optional name argument.')
+    parser.add_argument('-mode', type=str, help='Enter 1 or 2: mode 1 is for starting pooling; mode 2 is for stopping pooling')
+    args = parser.parse_args()
+
+    config_dir = '/ca/conf/'
+    route_table_config_setting_file_name = 'route_table_config_setting.json'
+    setting_file_location = os.path.join(config_dir, route_table_config_setting_file_name)
+    with open(setting_file_location, 'r') as f:
+        data = f.read()
+    rout_table_config_setting_json = json.loads(data)
+
+    udr_pooler = UDRPoller(rout_table_config_setting_json)
+    if args.mode=='1':
+        # print("mode 1")
+        udr_pooler.start()
+        pass
+    elif  args.mode=='2':
+        # print("mode 2")
+        udr_pooler.stop()
+        pass
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/tools/azure/__init__.py	(added)
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/__init__.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/__init__.py	(revision 0)
Index: /branches/rel_apv_10_7/usr/click/tools/azure/apv_controller/APVCommander.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/apv_controller/APVCommander.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/apv_controller/APVCommander.py	(working copy)
@@ -0,0 +1,62 @@
+import subprocess
+import argparse
+import sys
+
+class APVCommander():
+    def __init__(self) -> None:
+        pass
+    def launch_apv_command(self, apv_command:str):
+        '''
+        /ca/bin/backend -c "show version"`echo -e "\\0374"`
+        template:
+        /ca/bin/backend -c "APV_COMMAND"`echo -e "\\0374"`
+        example:
+        /ca/bin/backend -c "show ha status domain"`echo -e "\\0374"`
+        /ca/bin/backend -c "show version"`echo -e "\\0374"`
+        '''
+        return self.exec_cli_show(apv_command)
+        # command = "/ca/bin/backend -c \"{}\"`echo -e \"\\0374\"`"
+        # command = ["/ca/bin/backend", "-c", f'\"{apv_command}\"`echo', '-e', '\"\\0374\"`']
+
+        # print("Execute command ", " ".join(command))
+        # # context = subprocess.run(command, capture_output=True, text=True).stdout
+        # result = subprocess.run(command,stdout=sys.stdout, stderr=sys.stderr)
+        # print('result', result)
+        # if result.returncode==0:
+        #     print("Succeefully run", apv_command)
+        #     print("result.stdout", result.stdout)
+        #     print("result.stderr", result.stderr)
+
+        # else:
+        #     print('fail to run ', apv_command)
+        #     print("result.stdout", result.stdout)
+        #     print("result.stderr", result.stderr)
+        # print("return context:\n", context)
+        # return context
+    def exec_cli_show(self, cmd):
+        '''this function is from the Tim'''
+        cmd = "/ca/bin/backend -c \"{}\"`echo -e \"\\0374\"`".format(cmd)
+        # cmd = "/ca/bin/backend -c \"show version\"`echo -e \"\\0374\"`"
+        try:
+            output = subprocess.check_output(cmd, shell=True).strip()
+            print('output', type(output), output.decode('latin-1'))
+            result = output.decode('latin-1')
+            # for char in output:
+            #     try:
+            #         char.encode("utf-8")
+            #         result += char
+            #     except:
+            #         pass
+            # print("result", result)
+            return result[:-1]
+        except Exception as e:
+            print(e)
+            return ""
+if __name__=='__main__':
+    parser = argparse.ArgumentParser(description='Process optional name argument.')
+    parser.add_argument('-c', type=str, help='Enter 1 or 2: mode 1: start polling; mode 2: stop polling')
+    args = parser.parse_args()
+
+    print(f"run command {args.c}")
+    apv_c = APVCommander()
+    apv_c.launch_apv_command("show ha status domain")
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/tools/azure/apv_controller/APVController.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/apv_controller/APVController.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/apv_controller/APVController.py	(working copy)
@@ -0,0 +1,135 @@
+# from apv_controller.APVCommander import APVCommander
+import re
+import subprocess
+import argparse
+
+class APVCommander():
+    def __init__(self) -> None:
+        pass
+    def launch_apv_command(self, apv_command:str):
+        '''
+        /ca/bin/backend -c "show version"`echo -e "\\0374"`
+        template:
+        /ca/bin/backend -c "APV_COMMAND"`echo -e "\\0374"`
+        example:
+        /ca/bin/backend -c "show ha status domain"`echo -e "\\0374"`
+        /ca/bin/backend -c "show version"`echo -e "\\0374"`
+        '''
+        return self.exec_cli_show(apv_command)
+        # command = "/ca/bin/backend -c \"{}\"`echo -e \"\\0374\"`"
+        # command = ["/ca/bin/backend", "-c", f'\"{apv_command}\"`echo', '-e', '\"\\0374\"`']
+
+        # print("Execute command ", " ".join(command))
+        # # context = subprocess.run(command, capture_output=True, text=True).stdout
+        # result = subprocess.run(command,stdout=sys.stdout, stderr=sys.stderr)
+        # print('result', result)
+        # if result.returncode==0:
+        #     print("Succeefully run", apv_command)
+        #     print("result.stdout", result.stdout)
+        #     print("result.stderr", result.stderr)
+
+        # else:
+        #     print('fail to run ', apv_command)
+        #     print("result.stdout", result.stdout)
+        #     print("result.stderr", result.stderr)
+        # print("return context:\n", context)
+        # return context
+    def exec_cli_show(self, cmd):
+        '''this function is from the Tim'''
+        cmd = "/ca/bin/backend -c \"{}\"`echo -e \"\\0374\"`".format(cmd)
+        # cmd = "/ca/bin/backend -c \"show version\"`echo -e \"\\0374\"`"
+        try:
+            output = subprocess.check_output(cmd, shell=True).strip()
+            # print('output', type(output), output.decode('latin-1'))
+            result = output.decode('latin-1')
+            # for char in output:
+            #     try:
+            #         char.encode("utf-8")
+            #         result += char
+            #     except:
+            #         pass
+            # print("result", result)
+            return result[:-1]
+        except Exception as e:
+            print(e)
+
+class APVController():
+    def __init__(self) -> None:
+        self.name = self.get_apv_name()
+    def get_apv_version():
+        commander = APVCommander()
+        res = commander.launch_apv_command("show version")
+        return res
+    
+    def get_apv_name(self)->str:
+        ''' get APV name in HA.
+        Algo:
+        step1. Use 'show ha status domain' Array CLI to get the context.
+        step2. The local unit is the name of this APV.
+        '''
+        if hasattr(self, 'name'):
+            return self.name
+        commander = APVCommander()
+        context = commander.launch_apv_command("show ha status domain")
+        pattern ='Local[\s]+unit:[\s]+(.+)\s(UP|DOWN)\s*'
+        # print('=============================')
+        # print("context", type(context), context)
+        # print("pattern", type(pattern), pattern)
+
+        name_list = re.findall(pattern, context)
+        if not name_list:
+            error_msg = "Error: cannot find APV name in "+context
+            raise Exception(error_msg)
+        return name_list[0][0].strip()
+
+    def is_primary(self)->bool:
+        '''Check if this APV is primary.
+        Algo:
+        The highiest proirity is primary. Check if this APV name is the same with the name of APV that is highiest priority.
+        step1. Use "show ha config" APV command.
+        step2. Parse it by regrex to get ha group prioirty
+        step3. Sort it by prioirty
+        step4. Check if this APV name is same with the name of APV that is highiest priority.
+        '''
+        self.name = self.get_apv_name()
+        commander = APVCommander()
+        context = commander.launch_apv_command("show ha config")
+        pattern ='ha group priority \"(.+)\" [\d]+ (\d+)' # need to be checked
+        group_priority_list = re.findall(pattern, context)
+        if not group_priority_list:
+            error_msg = "Error: cannot find APV group priority in "+context
+            raise Exception(error_msg)
+        
+        group_priority_list = [(item[0], int(item[1])) for item in group_priority_list] # make priority of string to integer
+
+        sorted_group_priority_list = sorted(group_priority_list, key=lambda x: x[1]) #from low priority to heigh priority
+
+        return self.name==sorted_group_priority_list[-1][0]
+    def is_primary_alive(self)->bool:
+        '''This function is to check if the primary APV is alive or not.
+        return True: primary APV is alive
+        return False: Primary APV is not alive.
+        This must be called in secondary APV.
+        Algo:
+        step1. Use APV CLI "show ha status domain to check if peer(primary APV) is UP or DOWN".
+        step2. if peer(primary APV) is "DOWN", it means primary is dead, aka not alive. 
+        '''
+        commander = APVCommander()
+        context = commander.launch_apv_command("show ha status domain")
+        pattern ='Peer[\s]+unit:[\s]+(.+)\s(UP|DOWN)\s*'
+        peer_up_or_down_list = re.findall(pattern, context)
+        # print("peer_up_or_down_list", peer_up_or_down_list)
+        if not peer_up_or_down_list:
+            error_msg = "Error: cannot parse peer status in "+ context
+            raise Exception(error_msg)
+        return peer_up_or_down_list[0][1] not in ["DOWN", '-']
+
+
+if __name__=='__main__':
+    parser = argparse.ArgumentParser(description='Process optional name argument.')
+    parser.add_argument('-c', type=str, help='Enter 1 or 2: mode 1: start polling; mode 2: stop polling')
+    args = parser.parse_args()
+
+    apv_c = APVController()
+    print("+++++mary", apv_c.is_primary())
+    # print(f"run command {args.c}")
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/tools/azure/apv_controller/APVMonitor.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/apv_controller/APVMonitor.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/apv_controller/APVMonitor.py	(working copy)
@@ -0,0 +1,5 @@
+class APVMonitor():
+    def __init__(self) -> None:
+        pass
+    def get_apv_name(self):
+        pass
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/tools/azure/apv_controller/__init__.py	(added)
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/apv_controller/__init__.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/apv_controller/__init__.py	(revision 0)
Index: /branches/rel_apv_10_7/usr/click/tools/azure/az_auth/AZAuthController.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/az_auth/AZAuthController.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/az_auth/AZAuthController.py	(working copy)
@@ -0,0 +1,97 @@
+import subprocess
+import threading
+import sys
+import os
+import time
+import re
+
+class AZAuthController():
+    def __init__(self) -> None:
+        pass
+    def get_login_message_file_path(self, file_name)->str:
+        directory = '/tmp'
+        if not os.path.exists(directory):
+            os.makedirs(directory)
+        output_file_path = os.path.join(directory, file_name)
+        return output_file_path
+    
+    def get_login_message_file(self, file_name="login_msg.txt"):
+        login_msg_file_path = self.get_login_message_file_path(file_name)
+        file = open(login_msg_file_path, 'a')
+        return file
+    
+    def login_az(self):
+        # todo delete all existed files
+        login_msg_file_name = "login_msg.txt"
+        login_response_file_name = "login_response.txt"
+
+        command = ["az", "login"]
+        # print("Execute command ", " ".join(command))
+        login_msg_file = self.get_login_message_file(file_name=login_msg_file_name)
+        result = subprocess.Popen(command, stdout=login_msg_file, stderr=login_msg_file)
+
+        while result.poll() is None:
+            print('waiting user login by broswer')
+            time.sleep(1)
+
+        # end of az command, use regrex to extract the content of result message
+        pattern = 'to authenticate.[\r\n]+([\[\r\n\s\{\"\w\:\,\-\@\.\}\]]+)'
+        
+        with open(self.get_login_message_file_path(login_msg_file_name), 'r') as file:
+            content = file.read()
+        matches = re.findall(pattern, content)
+        print("Number of new lines:", len(matches))
+        # print("Captured new lines:", matches[0])
+        tmp = self.get_login_message_file_path(login_response_file_name)
+        print("tmp", tmp)
+        file = open(tmp, 'w')
+        file.write(matches[0])
+        # Write new content to the file
+        if not len(matches)==0:
+            print("write file")
+            file.write(matches[0])
+        
+        if result.returncode==0:
+            print("Succeefully log in az account.")
+        else:
+            print("Fail to log in az account.\n")
+            print("result", result)
+
+    def logout_az(self):
+        command = ["az", "logout"]
+        # print("Execute command ", " ".join(command))
+        result = subprocess.run(command, stdout=sys.stdout, stderr=sys.stderr)
+        if result.returncode==0:
+            print("Succeefully log out az account.")
+        else:
+            print("Fail to log out az account.\n")
+
+    def is_az_login(self):
+        '''
+        use az command to check if user is log in or not
+        return True for user has logged in
+        return False for user has NOT logged in
+        '''
+        command = ["az", "account", "show"]
+        result = subprocess.run(command, capture_output=True, text=True).stdout
+        # if successfully login id must be in the return json object
+        if result.returncode==0:
+            return True
+        else:
+            return False
+        
+    def show_az(self):
+        command = ["az", "account", "show"]
+        # print("Execute command ", " ".join(command))
+        result = subprocess.run(command, capture_output=True, text=True)
+        if result.returncode==0:
+            print("result.stdout", result.stdout)
+        else:
+            print("Please log in az first.")
+            # print(result.stdout)
+            # print(result.stderr)
+        
+
+if __name__=="__main__":
+    c = AZAuthController()
+    c.is_az_login()
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/tools/azure/az_auth/__init__.py	(added)
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/az_auth/__init__.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/az_auth/__init__.py	(revision 0)
Index: /branches/rel_apv_10_7/usr/click/tools/azure/az_nic/NICController.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/az_nic/NICController.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/az_nic/NICController.py	(working copy)
@@ -0,0 +1,135 @@
+import json
+import copy
+from azure.identity import DefaultAzureCredential
+from azure.mgmt.compute import ComputeManagementClient
+from azure.mgmt.network import NetworkManagementClient
+from azure.mgmt.network.models import NetworkInterfaceIPConfiguration
+
+
+class NICController():
+    def __init__(self, subscription_id, resource_group_name) -> None:
+
+        self.subscription_id = subscription_id
+        self.resource_group_name = resource_group_name
+        credential = DefaultAzureCredential()
+        self.network_client = NetworkManagementClient(credential, self.subscription_id)
+
+    def get_ip_config_by_name(self, nic, ip_config_name):
+        #? should I receive nic object or the name of nic and get it by API in this function?
+        for ip_config in nic.ip_configurations:
+            if ip_config.name==ip_config_name:
+                return ip_config
+        raise Exception(f"No name of ip configuration found with name: [{ip_config_name}] in [{nic.name}]")
+    def copy_ip_config_suited_newsubnet(self, ip_config, to_nic):
+        '''deep copy the ip_config and change its subnet same with to_nic'''
+        new_ip_config = copy.deepcopy(ip_config)
+        for ip_config in to_nic.ip_configurations:
+            new_ip_config.subnet = ip_config.subnet
+        return new_ip_config
+    def is_available_transfer(self, ip_config, to_nic):
+        '''check if ip configuration satisfy the Azure rule of ip configuration setting'''
+        '''ip must be in the subnet of to_nic'''
+    def transfer_ip_config(self, from_nic_name='', from_ip_config_name='', to_nic_name='',  to_ip_config_name=''):
+        # ip_config transfer must need to be in the same subnet
+        # retrive ip_config
+        print("transferring ip conifg")
+        from_nic = self.network_client.network_interfaces.get(self.resource_group_name, from_nic_name)
+        to_nic = self.network_client.network_interfaces.get(self.resource_group_name, to_nic_name)
+        from_ip_config = self.get_ip_config_by_name(from_nic, from_ip_config_name)
+        new_ip_config = self.copy_ip_config_suited_newsubnet(from_ip_config, to_nic)        
+
+        # remove ip_config from from_nic. Noted that it needs to remove public ip first before add it to new NIC
+        from_nic.ip_configurations.remove(from_ip_config)
+        update_res = self.network_client.network_interfaces.begin_create_or_update(self.resource_group_name, from_nic_name, from_nic).result()
+
+        # add ip_config to to_nic
+        to_nic.ip_configurations.append(new_ip_config)
+        add_res = self.network_client.network_interfaces.begin_create_or_update(self.resource_group_name, to_nic_name, to_nic).result()
+
+        print(f"Successfully transfer [{from_ip_config_name}] from [{from_nic_name}] to [{to_nic_name}]")
+        
+
+    def transfer_all_ip_config(self, from_nic_name="", to_nic_name=""):
+        nic_name1 = from_nic_name
+        nic_name2 = to_nic_name
+        print("from_nic_name", from_nic_name)
+        print("to_nic_name", to_nic_name)
+
+        nic1 = self.network_client.network_interfaces.get(self.resource_group_name, nic_name1)
+        nic2 = self.network_client.network_interfaces.get(self.resource_group_name, nic_name2)
+        
+        # Filter out secondary IP configurations
+        secondary_ip_configs = [ip for ip in nic1.ip_configurations if not ip.primary]
+
+        for secondary_ip_config in secondary_ip_configs:
+            secondary_ip = secondary_ip_config.private_ip_address
+            public_ip_resource_id = secondary_ip_config.public_ip_address.id if secondary_ip_config.public_ip_address else None
+            public_ip_name = public_ip_resource_id.split('/')[-1] if public_ip_resource_id else None
+
+            # Get the public IP address details using its name
+            public_ip = None
+            if public_ip_name:
+                public_ip = self.network_client.public_ip_addresses.get(self.resource_group_name, public_ip_name)
+                print(f"Found Secondary IP {secondary_ip} with Public IP {public_ip_name} on {nic_name1}.")
+            else:
+                print(f"Found Secondary IP {secondary_ip} without Public IP on {nic_name1}.")
+            # Remove the secondary IP configuration from the first NIC
+            nic1.ip_configurations.remove(secondary_ip_config)
+            
+
+            # Create the new secondary IP configuration with the same static IP
+            new_ip_config = NetworkInterfaceIPConfiguration(
+                id=None,  # New configuration, no need for ID
+                name=secondary_ip_config.name,
+                private_ip_address=secondary_ip,
+                private_ip_allocation_method='Static',  # Ensure it remains static
+                subnet=secondary_ip_config.subnet,
+                public_ip_address=public_ip
+            )
+            
+            # Add the secondary IP configuration to the second NIC
+            nic2.ip_configurations.append(new_ip_config)
+
+        update_flag = False
+
+        try:
+            self.network_client.network_interfaces.begin_create_or_update(self.resource_group_name, nic_name1, nic1).result()
+            # print(f"Secondary IP {secondary_ip} with Public IP {public_ip_name} transferred to {nic_name1}.")
+            print(f"Successfully remove all IPs from {nic_name1}")
+            update_flag = True
+        except Exception as e:
+            print(f"An error occurred while removing the secondary IP configuration: {str(e)}")
+
+        if update_flag:
+            try:
+                self.network_client.network_interfaces.begin_create_or_update(self.resource_group_name, nic_name2, nic2).result()
+                # print(f"Secondary IP {secondary_ip} with Public IP {public_ip_name} transferred to {nic_name2}.")
+                print(f"Successfully add all IPs to {nic_name2}")
+            except Exception as e:
+                print(f"An error occurred while adding the secondary IP configuration: {str(e)}")
+
+
+if __name__=="__main__":
+    setting_file_location = './setting.json'
+    with open(setting_file_location, 'r') as file:
+        setting = json.load(file)
+    # setting = json.loads(context)
+    # Authentication and Client Setup
+    # credential = DefaultAzureCredential()
+    # compute_client = ComputeManagementClient(credential, setting['subscription_id'])
+    # network_client = NetworkManagementClient(credential, setting['subscription_id'])
+    # transfer_secondary_ip_config(network_client, setting['resource_group_name'], setting['vm1_secondary_nic_name'], setting['vm2_secondary_nic_name'])
+
+    setting = {
+    "subscription_id": "2960d47a-5c8a-44eb-a95c-c71227757824",
+    "resource_group_name": "test-rg-2",
+    "from_nic_name": "maryNic1",
+    "from_ip_config_name": "maryNic1_ip_config2",
+    "to_nic_name": "maryNic3",
+    "to_ip_config_name": "maryNic1_ip_config2"
+}
+    nicC = NICController(setting['subscription_id'], setting['resource_group_name'])
+    # failover happen
+    nicC.transfer_ip_config(setting['from_nic_name'], setting['from_ip_config_name'], setting['to_nic_name'], setting['to_ip_config_name'])
+    # failver recover
+    # nicC.transfer_ip_config(setting['to_nic_name'], setting['to_ip_config_name'], setting['from_nic_name'], setting['from_ip_config_name'])
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/tools/azure/az_nic/VMNICConfig.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/az_nic/VMNICConfig.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/az_nic/VMNICConfig.py	(working copy)
@@ -0,0 +1,27 @@
+import json
+
+class VMNICConfig():
+    def __init__(self):
+        self.SETTING_FILE_LOCATION = './setting.json'
+    def get_vm_config_from_cli(self):
+        config = {}
+        config["subscription_id"] = input("Enter subscription ID: ")
+        config['resource_group_name'] = input("Enter resource group name ")
+        config['vm_name1'] = input("Enter vm_name1 ")
+        config['vm_name2'] = input("Enter vm_name2 ")
+        config['vm1_primary_nic_name'] = input("Enter vm1_primary_nic_name ")
+        config['vm1_secondary_nic_name'] = input("Enter vm1_secondary_nic_name ")
+        config['vm2_primary_nic_name'] = input("Enter vm2_primary_nic_name ")
+        config['vm2_secondary_nic_name'] = input("Enter vm2_secondary_nic_name ")
+        self.save_config(config)
+        return config
+    def save_config(self, config):
+        with open(self.SETTING_FILE_LOCATION, 'w') as json_file:
+            json.dump(config, json_file, indent=4)
+    def load_vm_config_from_store(self):
+        # read config
+        with open(self.SETTING_FILE_LOCATION, 'r') as file:
+            config = json.load(file)
+        return config
+    def get_vm_config(self):
+        return self.load_vm_config_from_store()
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/tools/azure/az_nic/__init__.py	(added)
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/az_nic/__init__.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/az_nic/__init__.py	(revision 0)
Index: /branches/rel_apv_10_7/usr/click/tools/azure/az_route_table/RouteTableController.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/az_route_table/RouteTableController.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/az_route_table/RouteTableController.py	(working copy)
@@ -0,0 +1,161 @@
+from azure.identity import DefaultAzureCredential
+from azure.mgmt.network import NetworkManagementClient
+from azure.mgmt.network.models import (Route, RouteNextHopType)
+
+class RouteTableController():
+    def __init__(self, 
+                subscription_id= "2960d47a-5c8a-44eb-a95c-c71227757824",
+                resource_group_name= "test-rg-2",
+                route_table_name= "route-table-public"
+                ) -> None:
+        self.subscription_id = subscription_id
+        self.resource_group_name = resource_group_name
+        self.route_table_name = route_table_name
+        # Authenticate using DefaultAzureCredential (supports several authentication methods)
+        self.credential = DefaultAzureCredential()
+        # Initialize the NetworkManagementClient
+        self.network_client = NetworkManagementClient(
+            self.credential,
+            self.subscription_id
+        )
+    def show_route_rules(self):
+        routes = self.get_route_rules()
+        print(f"Routes in route table '{self.route_table_name}':")
+        for route in routes:
+            print(f"Name: {route['name']}")
+            print(f"  Address Prefix: {route['address_prefix']}")
+            print(f"  Next Hop Type: {route['next_hop_type']}")
+            if route['next_hop_ip_address']:
+                print(f"  Next Hop IP Address: {route['next_hop_ip_address']}")
+            print()
+        
+    def get_route_rules(self):
+        try:
+            # Get all routes from the specified route table
+            routes = self.network_client.routes.list(
+                self.resource_group_name,
+                self.route_table_name
+            )
+            res = []
+            for route in routes:
+                res.append(
+                    {
+                        'name':route.name,
+                        'address_prefix': route.address_prefix,
+                        'next_hop_type': route.next_hop_type,
+                        'next_hop_ip_address': route.next_hop_ip_address
+                    }
+                )
+            return res
+        except Exception as e:
+            print(f"Failed to retrieve routes: {str(e)}")
+            return []
+
+    def set_route_rule(self, name, address_prefix, next_hop_type, next_hop_ip_address):
+        try:
+            # Define the new route
+            new_route = Route(
+                name=name,
+                address_prefix=address_prefix,
+                next_hop_type=next_hop_type,
+                next_hop_ip_address=next_hop_ip_address
+            )
+
+            # Create or update the route in the specified route table
+            async_route_creation =self.network_client.routes.begin_create_or_update(
+                self.resource_group_name,
+                self.route_table_name,
+                name,
+                new_route
+            )
+            route = async_route_creation.result()
+            print(f"Route '{route.name}' created successfully in route table '{self.route_table_name}'")
+
+        except Exception as e:
+            print(f"Failed to create route: {str(e)}")
+    def set_route_rule_list(self, rule_list):
+        for rule in rule_list:
+            self.set_route_rule(rule['name'], rule['address_prefix'], rule['next_hop_type'], rule['next_hop_ip_address'], )
+    def saveRouteRulls2Json(self):
+        # change function name to toJSON
+        pass
+    def delete_route_rules(self, route_rule_name):
+        # check if the rule exist or not, if exist, delete the rule
+        try:
+            # Get the specific route to delete
+            route = self.network_client.routes.get(
+                self.resource_group_name,
+                self.route_table_name,
+                route_rule_name
+            )
+
+            if route:
+                # Delete the route from the specified route table
+                self.network_client.routes.begin_delete(
+                    self.resource_group_name,
+                    self.route_table_name,
+                    route_rule_name
+                ).wait()
+                print(f"Route '{route_rule_name}' deleted successfully from route table '{self.route_table_name}'")
+            else:
+                print(f"Route '{route_rule_name}' not found in route table '{self.route_table_name}'")
+        except Exception as e:
+            print(f"Failed to delete route: {str(e)}")
+    def clear_table(self):
+        # clear all routes in route table
+        # Get the specified route table
+        route_table = self.network_client.route_tables.get(self.resource_group_name, self.route_table_name)
+        # Clear all routes from the route table
+        route_table.routes = []
+        # Update the route table
+        self.network_client.route_tables.begin_create_or_update(self.resource_group_name, self.route_table_name, route_table)
+    
+    def change_all_UDR_routes_by_ip(self, ori_next_hop_ip, modify_next_hop_ip):
+        route_tables = self.network_client.route_tables.list(self.resource_group_name)
+        for route_table in route_tables:
+            route_table_updated = False
+            for route in route_table.routes:
+                if route.next_hop_ip_address == ori_next_hop_ip:
+                    # Update the UDR to point to the new IP when the VM is deallocated
+                    route.next_hop_ip_address = modify_next_hop_ip
+                    print(f"Updating route {route.name} in route table {route_table.name} to point to {modify_next_hop_ip}")
+                    route_table_updated = True
+            
+            # Save the updated route table if there was any update
+            if route_table_updated:
+                self.network_client.route_tables.begin_create_or_update(self.resource_group_name, route_table.name, route_table)
+                print(f"Route table {route_table.name} updated successfully.")
+
+if __name__=="__main__":
+    rc = RouteTableController(
+        subscription_id= "2960d47a-5c8a-44eb-a95c-c71227757824",
+        resource_group_name= "AZURECENTOS",
+    )
+    target_ip_when_running = "10.0.3.101"
+    target_ip_when_deallocated = "10.0.3.100"
+    rc.change_all_UDR_routes_by_ip(
+        ori_next_hop_ip=target_ip_when_running,
+        modify_next_hop_ip=target_ip_when_deallocated
+    )
+    # routes = rc.get_route_rules()
+    # rc.show_route_rules()
+
+    # rc.clear_table()
+    # remove_rule_name = "<new-route-name>"
+    # print(f"remove rule{remove_rule_name}")
+    # rc.delete_route_rules(remove_rule_name)
+
+
+
+    # print("adding new rules")
+    # import datetime
+    # now = datetime.datetime.now()
+
+    # name = "<route-name>"+str(now)
+    # address_prefix = "10.0.2.0/24"
+    # next_hop_ip_address = "10.0.3.4"
+    # next_hop_type = RouteNextHopType.virtual_appliance
+
+    # rc.set_route_rule(name, address_prefix, next_hop_type, next_hop_ip_address)
+    # print("after adding new rules")
+    # rc.show_route_rules()
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/tools/azure/az_route_table/RouteTableFailoverManager.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/az_route_table/RouteTableFailoverManager.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/az_route_table/RouteTableFailoverManager.py	(working copy)
@@ -0,0 +1,116 @@
+import json
+from az_route_table.RouteTableController import RouteTableController
+
+
+class RouteTableFailoverManager():
+    def __init__(self) -> None:
+        self.before_failover_route_config_filename = './before_failover_route_config.json'
+        self.route_config = {
+            'primary':
+            {
+                "routing_table_name": "table_name",
+                'routing_rules_list':[
+                    {
+                    'name': "",
+                    'address_prefix': "",
+                    'next_hop_ip_address': "",
+                    'next_hop_type': "",
+                    }
+                ],
+            },
+            'secondary':
+            {
+                "routing_table_name": "table_name",
+                'routing_rules_list':[
+                    {
+                    'name': "",
+                    'address_prefix': "",
+                    'next_hop_ip_address': "",
+                    'next_hop_type': "",
+                    }
+                ],
+            }
+        }
+        self.subscription_id = "2960d47a-5c8a-44eb-a95c-c71227757824"
+        self.resource_group_name =  "test-rg-2"
+    def handle_failover_happen(self):
+        '''set the routing rule of primary routing table to the secondary'''
+        # read config
+        with open(self.before_failover_route_config_filename, 'r') as file:
+            route_config = json.load(file)
+
+        # clear secondary routing table
+
+        # set secondary routing table based on primary route talbe config
+        secondary_rtc = RouteTableController(
+            subscription_id = self.subscription_id,
+            resource_group_name=  self.resource_group_name,
+            route_table_name= route_config['secondary']['routing_table_name']
+        )
+        # clear table before write config into it
+        secondary_rtc.clear_table()
+
+        secondary_rtc.set_route_rule_list(
+            route_config['primary']['routing_rules_list']
+        )
+
+    def handle_failover_recover(self):
+        '''
+        set the routing rule of secondary routing table to the primary
+        recover the secondary routing table back to the state before failover happen
+        '''
+        # read config
+        with open(self.before_failover_route_config_filename, 'r') as file:
+            route_config = json.load(file)
+        print("route_config", route_config)
+        primary_rtc = RouteTableController(
+            subscription_id = self.subscription_id,
+            resource_group_name=  self.resource_group_name,
+            route_table_name= route_config['primary']['routing_table_name']
+        )
+        primary_rtc.clear_table()
+        primary_rtc.set_route_rule_list(
+            route_config['primary']['routing_rules_list']
+        )
+
+        secondary_rtc = RouteTableController(
+            subscription_id = self.subscription_id,
+            resource_group_name=  self.resource_group_name,
+            route_table_name= route_config['secondary']['routing_table_name']
+        )
+        secondary_rtc.clear_table()
+        secondary_rtc.set_route_rule_list(
+            route_config['secondary']['routing_rules_list']
+        )
+        
+    
+    def save_current_route(self, primary_route_table_name, secondary_route_table_name):
+        primary_rtc = RouteTableController(
+            subscription_id= self.subscription_id,
+            resource_group_name=  self.resource_group_name,
+            route_table_name= primary_route_table_name
+        )
+        primary_routing_rules_list = primary_rtc.get_route_rules()
+        
+        secondary_rtc = RouteTableController(
+            subscription_id= self.subscription_id,
+            resource_group_name=  self.resource_group_name,
+            route_table_name= secondary_route_table_name
+        )
+        secondary_routing_rules_list = secondary_rtc.get_route_rules()
+
+        self.route_config['primary']['routing_table_name'] = primary_route_table_name
+        self.route_config['primary']['routing_rules_list'] = primary_routing_rules_list
+        self.route_config['secondary']['routing_table_name'] = secondary_route_table_name
+        self.route_config['secondary']['routing_rules_list'] = secondary_routing_rules_list
+        # save file
+        with open(self.before_failover_route_config_filename, 'w') as file:
+            json.dump(self.route_config, file, indent=4)            
+
+if __name__=="__main__":
+    fm = RouteTableFailoverManager()
+    # fm.save_current_route('pimary_table', 'secondary_table') 
+    # fm.handle_failover_happen()
+    fm.handle_failover_recover()
+
+    
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/tools/azure/az_route_table/__init__.py	(added)
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/az_route_table/__init__.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/az_route_table/__init__.py	(revision 0)
Index: /branches/rel_apv_10_7/usr/click/tools/azure/az_vm/VMController.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/az_vm/VMController.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/az_vm/VMController.py	(working copy)
@@ -0,0 +1,24 @@
+
+from azure.identity import DefaultAzureCredential
+from azure.mgmt.compute import ComputeManagementClient
+
+class VMController():
+    def __init__(self, subscription_id:str, resource_group_name:str) -> None:
+        self.subscription_id = subscription_id
+        self.resource_group_name = resource_group_name
+        self.credential = DefaultAzureCredential()
+        self.compute_client = ComputeManagementClient(self.credential, self.subscription_id)
+
+    def is_VM_alive_by_name(self, vm_name)->bool:
+        '''check if vm is running by its state. By string comprison'''
+        print(f"Checking power state of VM: {vm_name}")
+        vm_instance_view = self.compute_client.virtual_machines.instance_view(self.resource_group_name, vm_name)
+        power_state = next((status for status in vm_instance_view.statuses if status.code.startswith('PowerState/')), None)
+        try:
+            return power_state.code == 'PowerState/running'
+        except Exception as e:
+            print("Exception", e)
+            print("power_state", power_state)
+            return False
+            
+        
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/tools/azure/az_vm/__init__.py	(added)
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/az_vm/__init__.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/az_vm/__init__.py	(revision 0)
Index: /branches/rel_apv_10_7/usr/click/tools/azure/config/ip_config_setting.json
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/config/ip_config_setting.json	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/config/ip_config_setting.json	(working copy)
@@ -0,0 +1,8 @@
+{
+    "subscription_id": "2960d47a-5c8a-44eb-a95c-c71227757824",
+    "resource_group_name": "AZURECENTOS",
+    "from_nic_name": "vAPVnic4",
+    "from_ip_config_name": "maryNic1_ip_config2",
+    "to_nic_name": "aAPVnic3",
+    "to_ip_config_name": "maryNic1_ip_config2"
+}
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/tools/azure/config/route_table_config_setting.json
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/config/route_table_config_setting.json	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/config/route_table_config_setting.json	(working copy)
@@ -0,0 +1,7 @@
+{
+    "subscription_id": "2960d47a-5c8a-44eb-a95c-c71227757824",
+    "resource_group_name": "AZURECENTOS",
+    "monitored_vm_name": "vAPVforWeikai",
+    "target_ip_when_running": "10.0.3.100",
+    "target_ip_when_deallocated": "10.0.3.101"
+}
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/tools/azure/config/route_table_config_setting1.json
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/config/route_table_config_setting1.json	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/config/route_table_config_setting1.json	(working copy)
@@ -0,0 +1,7 @@
+{
+    "subscription_id" : "2960d47a-5c8a-44eb-a95c-c71227757824",
+    "resource_group_name" : "AZURECENTOS",
+    "monitored_vm_name" : "vAPVforWeikai",
+    "target_ip_when_running" : "10.0.3.100",
+    "target_ip_when_deallocated" : "10.0.3.101"
+}
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/tools/azure/p/p1.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/p/p1.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/p/p1.py	(working copy)
@@ -0,0 +1,6 @@
+
+
+class p1():
+    def __init__(self) -> None:
+        print("p1 contructor")
+
Index: /branches/rel_apv_10_7/usr/click/tools/azure/p/p2.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/p/p2.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/p/p2.py	(working copy)
@@ -0,0 +1,7 @@
+from p.p1 import p1
+class p2():
+    def __init__(self) -> None:
+        pass
+
+if __name__=="__main__":
+    p1()
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/tools/azure/textOuput.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/textOuput.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/textOuput.py	(working copy)
@@ -0,0 +1,8 @@
+import os
+from utils.OutputController import OutputController
+print("first")
+output_controller = OutputController()
+output_controller.start_to_file()
+print("start to file")
+output_controller.end_to_file()
+print("end to file")
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/tools/azure/utils/OutputController.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/tools/azure/utils/OutputController.py	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/tools/azure/utils/OutputController.py	(working copy)
@@ -0,0 +1,42 @@
+import os
+import sys
+
+class OutputController():
+    '''
+    This class is used for writing string into a file(butffer). And C code will read it.
+    '''
+    def __init__(self, output_file_path=None) -> None:
+        if output_file_path:
+            self.output_file_path = output_file_path
+        else:
+            file_name = "output.txt"
+            directory = '/tmp'
+            if not os.path.exists(directory):
+                os.makedirs(directory)
+            output_file_path = os.path.join(directory, file_name)
+            self.output_file_path = output_file_path
+    def output(self, content:str)->None:
+        with open(self.output_file_path, 'w') as file:
+            file.write(content)
+
+
+    def start_to_file(self)->None:
+        self.original_stdout = sys.stdout
+        self.original_stderr = sys.stderr
+
+        file = open(self.output_file_path, 'a')
+        sys.stdout = file
+        sys.stderr = file
+
+    def end_to_file(self):
+        sys.stdout = self.original_stdout
+        sys.stderr = self.original_stderr
+if __name__=="__main__":
+    file_name = "output.txt"
+    directory = '/tmp'
+    if not os.path.exists(directory):
+        os.makedirs(directory)
+    output_file_path = os.path.join(directory, file_name)
+
+    output_controller = OutputController(output_file_path)
+    output_controller.output("hello world")
\ No newline at end of file
