first attempt in trying to make debug code work with mangle2hooks and mangle5hooks
diff --git a/libiptc/libip6tc.c b/libiptc/libip6tc.c
index 105fdfa..cd35bbe 100644
--- a/libiptc/libip6tc.c
+++ b/libiptc/libip6tc.c
@@ -328,35 +328,43 @@
 
 		user_offset = h->info.hook_entry[NF_IP6_LOCAL_OUT];
 	} else if (strcmp(h->info.name, "mangle") == 0) {
-		 /* This code assumes mangle5hooks enabled iptable_mangle,
-		  * either by patch-o-matic patch or linux >= 2.4.18-pre6 */
-		assert(h->info.valid_hooks
+		/* This code is getting ugly because linux < 2.4.18-pre6 had
+		 * two mangle hooks, linux >= 2.4.18-pre6 has five mangle hooks
+		 * */
+		assert((h->info.valid_hooks &
+			~(1 << NF_IP6_LOCAL_IN
+			  | 1 << NF_IP6_FORWARD
+			  | 1 << NF_IP6_POST_ROUTING))
 		       == (1 << NF_IP6_PRE_ROUTING
-			   | 1 << NF_IP6_LOCAL_IN
-			   | 1 << NF_IP6_FORWARD
-			   | 1 << NF_IP6_LOCAL_OUT
-			   | 1 << NF_IP6_POST_ROUTING));
+			   | 1 << NF_IP6_LOCAL_OUT));
 
 		/* Hooks should be first five */
 		assert(h->info.hook_entry[NF_IP6_PRE_ROUTING] == 0);
 
 		n = get_chain_end(h, 0);
-		n += get_entry(h, n)->next_offset;
-		assert(h->info.hook_entry[NF_IP6_LOCAL_IN] == n);
 
-		n = get_chain_end(h, n);
-		n += get_entry(h, n)->next_offset;
-		assert(h->info.hook_entry[NF_IP6_FORWARD] == n);
+		if (h->info.valid_hooks & NF_IP6_LOCAL_IN) {
+			n += get_entry(h, n)->next_offset;
+			assert(h->info.hook_entry[NF_IP6_LOCAL_IN] == n);
+			n = get_chain_end(h, n);
+		}
 
-		n = get_chain_end(h, n);
+		if (h->info.valid_hooks & NF_IP6_FORWARD) {
+			n += get_entry(h, n)->next_offset;
+			assert(h->info.hook_entry[NF_IP6_FORWARD] == n);
+			n = get_chain_end(h, n);
+		}
+
 		n += get_entry(h, n)->next_offset;
 		assert(h->info.hook_entry[NF_IP6_LOCAL_OUT] == n);
+		user_offset = h->info.hook_entry[NF_IP6_LOCAL_OUT];
 
-		n = get_chain_end(h, n);
-		n += get_entry(h, n)->next_offset;
-		assert(h->info.hook_entry[NF_IP6_POST_ROUTING] == n);
-
-		user_offset = h->info.hook_entry[NF_IP6_POST_ROUTING];
+		if (h->info.valid_hooks & NF_IP6_POST_ROUTING) {
+			n = get_chain_end(h, n);
+			n += get_entry(h, n)->next_offset;
+			assert(h->info.hook_entry[NF_IP6_POST_ROUTING] == n);
+			user_offset = h->info.hook_entry[NF_IP6_POST_ROUTING];
+		}
 	} else
 		abort();