--- kame-freebsd/ipsecSetSPD.rmt.org	Tue May 29 13:29:17 2007
+++ kame-freebsd/ipsecSetSPD.rmt	Tue May 29 14:00:19 2007
@@ -78,6 +78,14 @@
         usage();
         goto error;
     }
+
+	if ($rOpt_src eq "any") {
+		$rOpt_src = "::/0";
+	}
+
+	if ($rOpt_dst eq "any") {
+		$rOpt_dst = "::/0";
+	}
 }
 
 if ($rOpt_policy !~ /ipsec|none|discard|nopolicy/) {
@@ -161,10 +169,15 @@
 $cmd = "/usr/local/v6/sbin/setkey -c \<\
 
 if ($rOpt_policy ne "nopolicy") {
-    $cmd .= 
-        "spdadd $rOpt_src$rOpt_sport $rOpt_dst$rOpt_dport\r" .
-        "       $rOpt_upperspec\r" .
-        "       -P $rOpt_direction ";
+    $cmd .= "spdadd $rOpt_src$rOpt_sport $rOpt_dst$rOpt_dport\r";
+	$cmd .= "       $rOpt_upperspec";
+	if ($rOpt_upperspec eq "icmp6") {
+		if (defined($rOpt_icmp6_type) && defined($rOpt_icmp6_code)) {
+			$cmd .= " ${rOpt_icmp6_type},${rOpt_icmp6_code}";
+		}
+	}
+	$cmd .= "\r";
+	$cmd .= "       -P $rOpt_direction ";
 }
 
 if ($rOpt_policy eq "ipsec") {