Phil Blundell: ICMP, TCP and UDP extensions + rule deletion bug.
diff --git a/extensions/Makefile b/extensions/Makefile
index 8e0dec1..04fd896 100644
--- a/extensions/Makefile
+++ b/extensions/Makefile
@@ -1,8 +1,11 @@
 #! /usr/bin/make
 
 PF_EXT_SLIB:=tcp udp icmp mac limit standard REJECT LOG unclean state multiport tos TOS mark MARK owner SNAT DNAT MASQUERADE REDIRECT
+PF6_EXT_SLIB:=tcp udp icmp standard 
 SHARED_LIBS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).so)
+SHARED_LIBS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).so)
 EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libipt_$(T).so)
+EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libip6t_$(T).so)
 
 ifndef TOPLEVEL_INCLUDED
 local:
@@ -12,3 +15,7 @@
 $(DESTDIR)$(LIBDIR)/iptables/libipt_%.so: extensions/libipt_%.so
 	@[ -d $(DESTDIR)$(LIBDIR)/iptables ] || mkdir -p $(DESTDIR)$(LIBDIR)/iptables
 	cp $< $@
+
+$(DESTDIR)$(LIBDIR)/iptables/libip6t_%.so: extensions/libip6t_%.so
+	@[ -d $(DESTDIR)$(LIBDIR)/iptables ] || mkdir -p $(DESTDIR)$(LIBDIR)/iptables
+	cp $< $@
diff --git a/ip6tables-standalone.c b/ip6tables-standalone.c
index 11b7cc7..e2b10f8 100644
--- a/ip6tables-standalone.c
+++ b/ip6tables-standalone.c
@@ -43,7 +43,7 @@
 		ret = ip6tc_commit(&handle);
 
 	if (!ret)
-		fprintf(stderr, "iptables: %s\n",
+		fprintf(stderr, "ip6tables: %s\n",
 			ip6tc_strerror(errno));
 
 	exit(!ret);
diff --git a/ip6tables.c b/ip6tables.c
index 84215b9..b75b7d4 100644
--- a/ip6tables.c
+++ b/ip6tables.c
@@ -1231,17 +1231,16 @@
 {
 	unsigned int i, j;
 	int ret = 1;
-	struct ip6t_entry ipfw = *fw;
 	unsigned char *mask;
 
 	mask = make_delete_mask(fw);
 	for (i = 0; i < nsaddrs; i++) {
-		ipfw.ipv6.src = saddrs[i];
+		fw->ipv6.src = saddrs[i];
 		for (j = 0; j < ndaddrs; j++) {
-			ipfw.ipv6.dst = daddrs[j];
+			fw->ipv6.dst = daddrs[j];
 			if (verbose)
 				print_firewall_line(fw, *handle);
-			ret &= ip6tc_delete_entry(chain, &ipfw, mask, handle);
+			ret &= ip6tc_delete_entry(chain, fw, mask, handle);
 		}
 	}
 	return ret;