Only initialize extensions we actually use
authorJo-Philipp Wich <jow@openwrt.org>
Fri, 17 May 2013 14:32:42 +0000 (16:32 +0200)
committerJo-Philipp Wich <jow@openwrt.org>
Fri, 17 May 2013 14:32:42 +0000 (16:32 +0200)
iptables.c
iptables.h

index 4956ef7..6a56910 100644 (file)
@@ -54,6 +54,33 @@ get_kernel_version(void)
        kernel_version = LINUX_VERSION(x, y, z);
 }
 
        kernel_version = LINUX_VERSION(x, y, z);
 }
 
+static void fw3_init_extensions(void)
+{
+       libip6t_icmp6_init();
+       libip6t_LOG_init();
+       libipt_DNAT_init();
+       libipt_icmp_init();
+       libipt_LOG_init();
+       libipt_MASQUERADE_init();
+       libipt_REDIRECT_init();
+       libipt_REJECT_init();
+       libipt_SNAT_init();
+       libxt_comment_init();
+       libxt_conntrack_init();
+       libxt_CT_init();
+       libxt_limit_init();
+       libxt_mac_init();
+       libxt_mark_init();
+       libxt_MARK_init();
+       libxt_set_init();
+       libxt_SET_init();
+       libxt_standard_init();
+       libxt_TCPMSS_init();
+       libxt_tcp_init();
+       libxt_time_init();
+       libxt_udp_init();
+}
+
 struct fw3_ipt_handle *
 fw3_ipt_open(enum fw3_family family, enum fw3_table table)
 {
 struct fw3_ipt_handle *
 fw3_ipt_open(enum fw3_family family, enum fw3_table table)
 {
@@ -94,9 +121,7 @@ fw3_ipt_open(enum fw3_family family, enum fw3_table table)
        xtables_matches = NULL;
        xtables_targets = NULL;
 
        xtables_matches = NULL;
        xtables_targets = NULL;
 
-       init_extensions();
-       init_extensions4();
-       init_extensions6();
+       fw3_init_extensions();
 
        return h;
 }
 
        return h;
 }
index 4731104..226e116 100644 (file)
@@ -34,9 +34,29 @@ extern struct xtables_match *xtables_pending_matches;
 extern struct xtables_target *xtables_pending_targets;
 
 /* libext.a interface */
 extern struct xtables_target *xtables_pending_targets;
 
 /* libext.a interface */
-void init_extensions(void);
-void init_extensions4(void);
-void init_extensions6(void);
+void libip6t_icmp6_init(void);
+void libip6t_LOG_init(void);
+void libipt_DNAT_init(void);
+void libipt_icmp_init(void);
+void libipt_LOG_init(void);
+void libipt_MASQUERADE_init(void);
+void libipt_REDIRECT_init(void);
+void libipt_REJECT_init(void);
+void libipt_SNAT_init(void);
+void libxt_comment_init(void);
+void libxt_conntrack_init(void);
+void libxt_CT_init(void);
+void libxt_limit_init(void);
+void libxt_mac_init(void);
+void libxt_mark_init(void);
+void libxt_MARK_init(void);
+void libxt_set_init(void);
+void libxt_SET_init(void);
+void libxt_standard_init(void);
+void libxt_TCPMSS_init(void);
+void libxt_tcp_init(void);
+void libxt_time_init(void);
+void libxt_udp_init(void);
 
 /* Required by certain extensions like SNAT and DNAT */
 extern int kernel_version;
 
 /* Required by certain extensions like SNAT and DNAT */
 extern int kernel_version;