Index: /branches/rel_apv_10_7/usr/click/lib/libcafw_cli/cafw.c
===================================================================
--- /branches/rel_apv_10_7/usr/click/lib/libcafw_cli/cafw.c	(revision 38743)
+++ /branches/rel_apv_10_7/usr/click/lib/libcafw_cli/cafw.c	(working copy)
@@ -174,6 +174,42 @@
 }
 
 /*
+ * accesslist permit icmp tsrequest ...
+ */
+ca_errcode_t
+accesslist_permit_icmp_tsrequest(char* sip, uint32_t smask,
+				   char* dip, uint32_t dmask,
+				   uint16_t list_id)
+{
+	uint16_t sport;
+	uint8_t proto;
+
+	sport = ICMP_TSTAMP + 1;
+	proto = IPPROTO_ICMP;
+
+	return accesslist(sip, smask, sport, dip, dmask, 0,
+			  list_id, proto, FW_PERMIT, FW_ADD);
+}
+
+/*
+ * accesslist permit icmp tsreply ...
+ */
+ca_errcode_t
+accesslist_permit_icmp_tsreply(char* sip, uint32_t smask,
+				 char* dip, uint32_t dmask,
+				 uint16_t list_id)
+{
+	uint16_t sport;
+	uint8_t proto;
+
+	sport = ICMP_TSTAMPREPLY + 1;
+	proto = IPPROTO_ICMP;
+
+	return accesslist(sip, smask, sport, dip, dmask, 0,
+			  list_id, proto, FW_PERMIT, FW_ADD);
+}
+
+/*
  * accesslist permit tcp ...
  */
 ca_errcode_t
@@ -268,6 +304,42 @@
 }
 
 /*
+ * accesslist deny icmp tsrequest ...
+ */
+ca_errcode_t
+accesslist_deny_icmp_tsrequest(char* sip, uint32_t smask,
+				 char* dip, uint32_t dmask,
+				 uint16_t list_id)
+{
+	uint16_t sport;
+	uint8_t proto;
+
+	sport = ICMP_TSTAMP + 1;
+	proto = IPPROTO_ICMP;
+
+	return accesslist(sip, smask, sport, dip, dmask, 0,
+			  list_id, proto, FW_DENY, FW_ADD);
+}
+
+/*
+ * accesslist deny icmp tsreply ...
+ */
+ca_errcode_t
+accesslist_deny_icmp_tsreply(char* sip, uint32_t smask,
+			       char* dip, uint32_t dmask,
+			       uint16_t list_id)
+{
+	uint16_t sport;
+	uint8_t proto;
+
+	sport = ICMP_TSTAMPREPLY + 1;
+	proto = IPPROTO_ICMP;
+
+	return accesslist(sip, smask, sport, dip, dmask, 0,
+			  list_id, proto, FW_DENY, FW_ADD);
+}
+
+/*
  * accesslist deny tcp ...
  */
 ca_errcode_t
@@ -364,6 +436,42 @@
 }
 
 /*
+ * no accesslist permit icmp tsrequest ...
+ */
+ca_errcode_t
+no_accesslist_permit_icmp_tsrequest(char* sip, uint32_t smask,
+				      char* dip, uint32_t dmask,
+				      uint16_t list_id)
+{
+	uint16_t sport;
+	uint8_t proto;
+
+	sport = ICMP_TSTAMP + 1;
+	proto = IPPROTO_ICMP;
+
+	return accesslist(sip, smask, sport, dip, dmask, 0,
+			  list_id, proto, FW_PERMIT, FW_DEL);
+}
+
+/*
+ * no accesslist permit icmp tsreply ...
+ */
+ca_errcode_t
+no_accesslist_permit_icmp_tsreply(char* sip, uint32_t smask,
+				    char* dip, uint32_t dmask,
+				    uint16_t list_id)
+{
+	uint16_t sport;
+	uint8_t proto;
+
+	sport = ICMP_TSTAMPREPLY + 1;
+	proto = IPPROTO_ICMP;
+
+	return accesslist(sip, smask, sport, dip, dmask, 0,
+			  list_id, proto, FW_PERMIT, FW_DEL);
+}
+
+/*
  * no accesslist permit tcp ...
  */
 ca_errcode_t
@@ -461,6 +569,41 @@
 }
 
 /*
+ * no accesslist deny icmp tsrequest ...
+ */
+ca_errcode_t
+no_accesslist_deny_icmp_tsrequest(char* sip, uint32_t smask,
+				    char* dip, uint32_t dmask,
+				    uint16_t list_id)
+{
+	uint16_t sport;
+	uint8_t proto;
+
+	sport = ICMP_TSTAMP + 1;
+	proto = IPPROTO_ICMP;
+
+	return accesslist(sip, smask, sport, dip, dmask, 0,
+			  list_id, proto, FW_DENY, FW_DEL);
+}
+
+/*
+ * no accesslist deny icmp tsreply ...
+ */
+ca_errcode_t
+no_accesslist_deny_icmp_tsreply(char* sip, uint32_t smask,
+				  char* dip, uint32_t dmask,
+				  uint16_t list_id)
+{
+	uint16_t sport;
+	uint8_t proto;
+
+	sport = ICMP_TSTAMPREPLY + 1;
+	proto = IPPROTO_ICMP;
+
+	return accesslist(sip, smask, sport, dip, dmask, 0,
+			  list_id, proto, FW_DENY, FW_DEL);
+}
+/*
  * no accesslist deny tcp ...
  */
 ca_errcode_t
@@ -790,7 +933,7 @@
 						"esp",	"ah","","",""};
 					   
 	static char	*fw_itype[]	= {"", "echoreply", "", "", "", "",
-					   "", "", "", "echorequest", ""};
+					   "", "", "", "echorequest", "", "", "", "", "timestampreq", "timestampreply"};
 
 	/* check arguments */
 	if (flag != CAFW_SHOW && flag != CAFW_SAVE) {
Index: /branches/rel_apv_10_7/usr/click/lib/libparser/commands.pm
===================================================================
--- /branches/rel_apv_10_7/usr/click/lib/libparser/commands.pm	(revision 38743)
+++ /branches/rel_apv_10_7/usr/click/lib/libparser/commands.pm	(working copy)
@@ -5213,6 +5213,74 @@
 	},
 	{
 		obj_type => "ITEM",
+		name => "timestamprequest",
+		menu => "root_accesslist_permit_icmp",
+		help_string => "Add an accesslist permit icmp timestamp-request rule",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "accesslist_permit_icmp_tsrequest",
+		function_args => [ {
+									type => "IPADDR",
+									help_string => "Permit source IP",
+									optional => "NO",
+								},
+								{
+									type => "IPMASK",
+									help_string => "Permit source mask",
+									optional => "NO",
+								},
+								{
+									type => "IPADDR",
+									help_string => "Permit destination IP",
+									optional => "NO",
+								},
+								{
+									type => "IPMASK",
+									help_string => "Permit destination mask",
+									optional => "NO",
+								},
+								{
+									type => "U16",
+									help_string => "Access list ID (1-999)",
+									optional => "NO",
+								}, ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "timestampreply",
+		menu => "root_accesslist_permit_icmp",
+		help_string => "Add an accesslist permit icmp timestamp-reply rule",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "accesslist_permit_icmp_tsreply",
+		function_args => [ {
+									type => "IPADDR",
+									help_string => "Permit source IP",
+									optional => "NO",
+								},
+								{
+									type => "IPMASK",
+									help_string => "Permit source mask",
+									optional => "NO",
+								},
+								{
+									type => "IPADDR",
+									help_string => "Permit destination IP",
+									optional => "NO",
+								},
+								{
+									type => "IPMASK",
+									help_string => "Permit destination mask",
+									optional => "NO",
+								},
+								{
+									type => "U16",
+									help_string => "Access list ID (1-999)",
+									optional => "NO",
+								}, ],
+	},
+	{
+		obj_type => "ITEM",
 		name => "tcp",
 		menu => "root_accesslist_permit",
 		help_string => "Add an accesslist permit tcp rule",
@@ -5459,6 +5527,74 @@
 	},
 	{
 		obj_type => "ITEM",
+		name => "timestamprequest",
+		menu => "root_accesslist_deny_icmp",
+		help_string => "Add an accesslist deny icmp timestamp-request rule",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "accesslist_deny_icmp_tsrequest",
+		function_args => [ {
+									type => "IPADDR",
+									help_string => "Deny source IP",
+									optional => "NO",
+								},
+								{
+									type => "IPMASK",
+									help_string => "Deny source mask",
+									optional => "NO",
+								},
+								{
+									type => "IPADDR",
+									help_string => "Deny destination IP",
+									optional => "NO",
+								},
+								{
+									type => "IPMASK",
+									help_string => "Deny destination mask",
+									optional => "NO",
+								},
+								{
+									type => "U16",
+									help_string => "Access list ID (1-999)",
+									optional => "NO",
+								}, ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "timestampreply",
+		menu => "root_accesslist_deny_icmp",
+		help_string => "Add an accesslist deny icmp timestamp-reply rule",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		function_name => "accesslist_deny_icmp_tsreply",
+		function_args => [ {
+									type => "IPADDR",
+									help_string => "Deny source IP",
+									optional => "NO",
+								},
+								{
+									type => "IPMASK",
+									help_string => "Deny source mask",
+									optional => "NO",
+								},
+								{
+									type => "IPADDR",
+									help_string => "Deny destination IP",
+									optional => "NO",
+								},
+								{
+									type => "IPMASK",
+									help_string => "Deny destination mask",
+									optional => "NO",
+								},
+								{
+									type => "U16",
+									help_string => "Access list ID (1-999)",
+									optional => "NO",
+								}, ],
+	},
+	{
+		obj_type => "ITEM",
 		name => "tcp",
 		menu => "root_accesslist_deny",
 		help_string => "Add an accesslist deny tcp rule",
@@ -5714,6 +5850,74 @@
 	},
 	{
 		obj_type => "ITEM",
+		name => "timestamprequest",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		menu => "root_no_accesslist_permit_icmp",
+		help_string => "Remove an accesslist permit icmp timestamp-request rule",
+		function_name => "no_accesslist_permit_icmp_tsrequest",
+		function_args => [ {
+									type => "IPADDR",
+									help_string => "Permit source IP",
+									optional => "NO",
+								},
+								{
+									type => "IPMASK",
+									help_string => "Permit source mask",
+									optional => "NO",
+								},
+								{
+									type => "IPADDR",
+									help_string => "Permit destination IP",
+									optional => "NO",
+								},
+								{
+									type => "IPMASK",
+									help_string => "Permit destination mask",
+									optional => "NO",
+								},
+								{
+									type => "U16",
+									help_string => "Access list ID (1-999)",
+									optional => "NO",
+								}, ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "timestampreply",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		menu => "root_no_accesslist_permit_icmp",
+		help_string => "Remove an accesslist permit icmp timestamp-reply rule",
+		function_name => "no_accesslist_permit_icmp_tsreply",
+		function_args => [ {
+									type => "IPADDR",
+									help_string => "Permit source IP",
+									optional => "NO",
+								},
+								{
+									type => "IPMASK",
+									help_string => "Permit source mask",
+									optional => "NO",
+								},
+								{
+									type => "IPADDR",
+									help_string => "Permit destination IP",
+									optional => "NO",
+								},
+								{
+									type => "IPMASK",
+									help_string => "Permit destination mask",
+									optional => "NO",
+								},
+								{
+									type => "U16",
+									help_string => "Access list ID (1-999)",
+									optional => "NO",
+								}, ],
+	},
+	{
+		obj_type => "ITEM",
 		name => "tcp",
 		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
 		user_level => "CLI_LEVEL_CONFIG",
@@ -5931,6 +6135,74 @@
 		function_args => [ {
 									type => "IPADDR",
 									help_string => "Deny source IP",
+									optional => "NO",
+								},
+								{
+									type => "IPMASK",
+									help_string => "Deny source mask",
+									optional => "NO",
+								},
+								{
+									type => "IPADDR",
+									help_string => "Deny destination IP",
+									optional => "NO",
+								},
+								{
+									type => "IPMASK",
+									help_string => "Deny destination mask",
+									optional => "NO",
+								},
+								{
+									type => "U16",
+									help_string => "Access list ID (1-999)",
+									optional => "NO",
+								}, ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "timestamprequest",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Remove an accesslist deny icmp timestamp-request rule",
+		menu => "root_no_accesslist_deny_icmp",
+		function_name => "no_accesslist_deny_icmp_tsrequest",
+		function_args => [ {
+									type => "IPADDR",
+									help_string => "Deny source IP",
+									optional => "NO",
+								},
+								{
+									type => "IPMASK",
+									help_string => "Deny source mask",
+									optional => "NO",
+								},
+								{
+									type => "IPADDR",
+									help_string => "Deny destination IP",
+									optional => "NO",
+								},
+								{
+									type => "IPMASK",
+									help_string => "Deny destination mask",
+									optional => "NO",
+								},
+								{
+									type => "U16",
+									help_string => "Access list ID (1-999)",
+									optional => "NO",
+								}, ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "timestampreply",
+		cmd_attribute => "CMD_ARRAYOS|CMD_SPROXY|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Remove an accesslist deny icmp timestamp-reply rule",
+		menu => "root_no_accesslist_deny_icmp",
+		function_name => "no_accesslist_deny_icmp_tsreply",
+		function_args => [ {
+									type => "IPADDR",
+									help_string => "Deny source IP",
 									optional => "NO",
 								},
 								{
Index: /branches/rel_apv_10_7/usr/src/sys/click/net/click_ether.c
===================================================================
--- /branches/rel_apv_10_7/usr/src/sys/click/net/click_ether.c	(revision 38743)
+++ /branches/rel_apv_10_7/usr/src/sys/click/net/click_ether.c	(working copy)
@@ -890,7 +890,7 @@
 };
 char *i_type[]={"echoreply", "", "", "", "",
 				"", "", "", "echorequest", "",
-				"",  "", "", "", "", 
+				"",  "", "", "timestampreq", "timestampreply",
 				"",  "", "", "", "", 
 				"",  "", "", "", "", 
 				"",  "", "", "", "", 
@@ -1352,6 +1352,8 @@
 			switch (icmph->icmp_type) {
 				case ICMP_ECHO:
 				case ICMP_ECHOREPLY:
+				case ICMP_TSTAMP:
+				case ICMP_TSTAMPREPLY:
 					tp->sport = htons(icmph->icmp_type + 1);/* fake, network order */
 					/*tp->dport = icmph->icmp_id;*/
 					tp->dport = 0;
@@ -1679,6 +1681,8 @@
 			switch (icmph->icmp_type) {
 				case ICMP_ECHO:
 				case ICMP_ECHOREPLY:
+				case ICMP_TSTAMP:
+				case ICMP_TSTAMPREPLY:
 					tp->sport = icmph->icmp_type + 1;/* need host order */
 					tp->dport = icmph->icmp_id;
 					break;
