diff -urN ebtables-v2.0.2/ebtables.c ebtables/ebtables.c
--- ebtables-v2.0.2/ebtables.c	2002-12-03 22:52:12.000000000 +0100
+++ ebtables/ebtables.c	2003-03-06 11:45:24.000000000 +0100
@@ -1571,6 +1571,19 @@
 /* the main thing */
 int main(int argc, char *argv[])
 {
+
+	ebt_arp_init();
+	ebt_log_init();
+	ebt_mark_init();
+	ebt_mark_m_init();
+	ebt_nat_init();
+	ebt_redirect_init();
+	ebt_standard_init();
+	ebt_vlan_init();
+	ebtable_broute_init();
+	ebtable_filter_init();
+	ebtable_nat_init();
+	
 	char *buffer;
 	int c, i;
 	/*
diff -urN ebtables-v2.0.2/extensions/ebt_arp.c ebtables/extensions/ebt_arp.c
--- ebtables-v2.0.2/extensions/ebt_arp.c	2002-11-22 20:43:47.000000000 +0100
+++ ebtables/extensions/ebt_arp.c	2003-03-06 11:50:30.000000000 +0100
@@ -295,8 +295,8 @@
 	opts
 };
 
-static void _init(void) __attribute__ ((constructor));
-static void _init(void)
+/* static void ebt_arp_init(void) __attribute__ ((constructor)); */
+void ebt_arp_init(void)
 {
 	register_match(&arp_match);
 }
diff -urN ebtables-v2.0.2/extensions/ebt_ip.c ebtables/extensions/ebt_ip.c
--- ebtables-v2.0.2/extensions/ebt_ip.c	2002-10-17 23:21:16.000000000 +0200
+++ ebtables/extensions/ebt_ip.c	2003-03-06 11:50:34.000000000 +0100
@@ -450,8 +450,8 @@
 	opts
 };
 
-static void _init(void) __attribute((constructor));
-static void _init(void)
+/* static void ebt_ip_init(void) __attribute((constructor)); */
+void ebt_ip_init(void)
 {
 	register_match(&ip_match);
 }
diff -urN ebtables-v2.0.2/extensions/ebt_log.c ebtables/extensions/ebt_log.c
--- ebtables-v2.0.2/extensions/ebt_log.c	2002-08-24 15:26:34.000000000 +0200
+++ ebtables/extensions/ebt_log.c	2003-03-06 11:50:37.000000000 +0100
@@ -185,8 +185,8 @@
 	opts
 };
 
-static void _init(void) __attribute__ ((constructor));
-static void _init(void)
+/* static void ebt_log_init(void) __attribute__ ((constructor)); */
+void ebt_log_init(void)
 {
 	register_watcher(&log_watcher);
 }
diff -urN ebtables-v2.0.2/extensions/ebt_mark.c ebtables/extensions/ebt_mark.c
--- ebtables-v2.0.2/extensions/ebt_mark.c	2002-08-24 15:26:34.000000000 +0200
+++ ebtables/extensions/ebt_mark.c	2003-03-06 11:50:40.000000000 +0100
@@ -113,8 +113,8 @@
 	opts
 };
 
-static void _init(void) __attribute__ ((constructor));
-static void _init(void)
+/* static void ebt_mark_init(void) __attribute__ ((constructor)); */
+void ebt_mark_init(void)
 {
 	register_target(&mark_target);
 }
diff -urN ebtables-v2.0.2/extensions/ebt_mark_m.c ebtables/extensions/ebt_mark_m.c
--- ebtables-v2.0.2/extensions/ebt_mark_m.c	2002-08-24 15:26:34.000000000 +0200
+++ ebtables/extensions/ebt_mark_m.c	2003-03-06 11:50:43.000000000 +0100
@@ -115,8 +115,8 @@
 	opts
 };
 
-static void _init(void) __attribute((constructor));
-static void _init(void)
+/* static void ebt_mark_m_init(void) __attribute__ ((constructor)); */
+void ebt_mark_m_init(void)
 {
 	register_match(&mark_match);
 }
diff -urN ebtables-v2.0.2/extensions/ebt_nat.c ebtables/extensions/ebt_nat.c
--- ebtables-v2.0.2/extensions/ebt_nat.c	2002-08-24 15:26:34.000000000 +0200
+++ ebtables/extensions/ebt_nat.c	2003-03-06 11:50:47.000000000 +0100
@@ -208,8 +208,8 @@
 	opts_d
 };
 
-static void _init(void) __attribute__ ((constructor));
-static void _init(void)
+/* static void ebt_nat_init(void) __attribute__ ((constructor)); */
+void ebt_nat_init(void)
 {
 	register_target(&snat_target);
 	register_target(&dnat_target);
diff -urN ebtables-v2.0.2/extensions/ebt_redirect.c ebtables/extensions/ebt_redirect.c
--- ebtables-v2.0.2/extensions/ebt_redirect.c	2002-08-24 15:26:34.000000000 +0200
+++ ebtables/extensions/ebt_redirect.c	2003-03-06 11:50:51.000000000 +0100
@@ -99,8 +99,8 @@
 	opts
 };
 
-static void _init(void) __attribute__ ((constructor));
-static void _init(void)
+/* static void ebt_redirect_init(void) __attribute__ ((constructor)); */
+void ebt_redirect_init(void)
 {
 	register_target(&redirect_target);
 }
diff -urN ebtables-v2.0.2/extensions/ebt_standard.c ebtables/extensions/ebt_standard.c
--- ebtables-v2.0.2/extensions/ebt_standard.c	2002-08-24 15:26:34.000000000 +0200
+++ ebtables/extensions/ebt_standard.c	2003-03-06 11:50:55.000000000 +0100
@@ -77,8 +77,8 @@
 	opts
 };
 
-static void _init(void) __attribute__ ((constructor));
-static void _init(void)
+/* static void ebt_standard_init(void) __attribute__ ((constructor)); */
+void ebt_standard_init(void)
 {
 	register_target(&standard);
 }
diff -urN ebtables-v2.0.2/extensions/ebt_vlan.c ebtables/extensions/ebt_vlan.c
--- ebtables-v2.0.2/extensions/ebt_vlan.c	2002-12-07 13:29:16.000000000 +0100
+++ ebtables/extensions/ebt_vlan.c	2003-03-06 11:50:58.000000000 +0100
@@ -318,8 +318,8 @@
 	opts
 };
 
-static void _init(void) __attribute__ ((constructor));
-static void _init(void)
+/* static void ebt_vlan_init(void) __attribute__ ((constructor)); */
+void ebt_vlan_init(void)
 {
 	register_match(&vlan_match);
 }
diff -urN ebtables-v2.0.2/extensions/ebtable_broute.c ebtables/extensions/ebtable_broute.c
--- ebtables-v2.0.2/extensions/ebtable_broute.c	2002-08-13 18:08:08.000000000 +0200
+++ ebtables/extensions/ebtable_broute.c	2003-03-06 11:51:03.000000000 +0100
@@ -17,8 +17,8 @@
 	NULL
 };
 
-static void _init(void) __attribute__ ((constructor));
-static void _init(void)
+/* static void ebtable_broute_init(void) __attribute__ ((constructor)); */
+void ebtable_broute_init(void)
 {
 	register_table(&table);
 }
diff -urN ebtables-v2.0.2/extensions/ebtable_filter.c ebtables/extensions/ebtable_filter.c
--- ebtables-v2.0.2/extensions/ebtable_filter.c	2002-08-13 18:08:08.000000000 +0200
+++ ebtables/extensions/ebtable_filter.c	2003-03-06 11:51:06.000000000 +0100
@@ -23,8 +23,8 @@
 	NULL
 };
 
-static void _init(void) __attribute__ ((constructor));
-static void _init(void)
+/* static void ebtable_filter_init(void) __attribute__ ((constructor)); */
+void ebtable_filter_init(void)
 {
 	register_table(&table);
 }
diff -urN ebtables-v2.0.2/extensions/ebtable_nat.c ebtables/extensions/ebtable_nat.c
--- ebtables-v2.0.2/extensions/ebtable_nat.c	2002-08-13 18:08:08.000000000 +0200
+++ ebtables/extensions/ebtable_nat.c	2003-03-06 11:51:09.000000000 +0100
@@ -24,8 +24,8 @@
 	NULL
 };
 
-static void _init(void) __attribute__ ((constructor));
-static void _init(void)
+/* static void ebtable_nat_init(void) __attribute__ ((constructor)); */
+void ebtable_nat_init(void)
 {
 	register_table(&table);
 }
diff -urN ebtables-v2.0.2/include/ebtables_u.h ebtables/include/ebtables_u.h
--- ebtables-v2.0.2/include/ebtables_u.h	2002-11-20 22:05:39.000000000 +0100
+++ ebtables/include/ebtables_u.h	2003-03-06 11:50:07.000000000 +0100
@@ -187,6 +187,18 @@
 	struct ebt_u_target *next;
 };
 
+void ebt_arp_init (void);
+void ebt_log_init (void);
+void ebt_mark_init (void);
+void ebt_mark_m_init (void);
+void ebt_nat_init (void);
+void ebt_redirect_init (void);
+void ebt_standard_init (void);
+void ebt_vlan_init (void);
+void ebtable_broute_init (void);
+void ebtable_filter_init (void);
+void ebtable_nat_init (void);
+
 void register_table(struct ebt_u_table *);
 void register_match(struct ebt_u_match *);
 void register_watcher(struct ebt_u_watcher *);
