--- a/extensions/Makefile +++ b/extensions/Makefile @@ -11,13 +11,13 @@ EXT_LIBSI+=$(foreach T,$(EXT_FUNC), -leb EXT_LIBSI+=$(foreach T,$(EXT_TABLES), -lebtable_$(T)) extensions/ebt_%.so: extensions/ebt_%.o - $(CC) $(LDFLAGS) -shared -o $@ -lc $< -nostartfiles + $(CC) $(LDFLAGS) -shared -o $@ -lc $< extensions/libebt_%.so: extensions/ebt_%.so mv $< $@ extensions/ebtable_%.so: extensions/ebtable_%.o - $(CC) $(LDFLAGS) -shared -o $@ -lc $< -nostartfiles + $(CC) $(LDFLAGS) -shared -o $@ -lc $< extensions/libebtable_%.so: extensions/ebtable_%.so mv $< $@ --- a/extensions/ebt_802_3.c +++ b/extensions/ebt_802_3.c @@ -141,7 +141,7 @@ static struct ebt_u_match _802_3_match = .extra_ops = opts, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_match(&_802_3_match); } --- a/extensions/ebt_among.c +++ b/extensions/ebt_among.c @@ -491,7 +491,7 @@ static struct ebt_u_match among_match = .extra_ops = opts, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_match(&among_match); } --- a/extensions/ebt_arp.c +++ b/extensions/ebt_arp.c @@ -362,7 +362,7 @@ static struct ebt_u_match arp_match = .extra_ops = opts, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_match(&arp_match); } --- a/extensions/ebt_arpreply.c +++ b/extensions/ebt_arpreply.c @@ -133,7 +133,7 @@ static struct ebt_u_target arpreply_targ .extra_ops = opts, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_target(&arpreply_target); } --- a/extensions/ebt_ip.c +++ b/extensions/ebt_ip.c @@ -472,7 +472,7 @@ static struct ebt_u_match ip_match = .extra_ops = opts, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_match(&ip_match); } --- a/extensions/ebt_ip6.c +++ b/extensions/ebt_ip6.c @@ -413,7 +413,7 @@ static struct ebt_u_match ip6_match = .extra_ops = opts, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_match(&ip6_match); } --- a/extensions/ebt_limit.c +++ b/extensions/ebt_limit.c @@ -212,7 +212,7 @@ static struct ebt_u_match limit_match = .extra_ops = opts, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_match(&limit_match); } --- a/extensions/ebt_log.c +++ b/extensions/ebt_log.c @@ -217,7 +217,7 @@ static struct ebt_u_watcher log_watcher .extra_ops = opts, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_watcher(&log_watcher); } --- a/extensions/ebt_mark.c +++ b/extensions/ebt_mark.c @@ -172,7 +172,7 @@ static struct ebt_u_target mark_target = .extra_ops = opts, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_target(&mark_target); } --- a/extensions/ebt_mark_m.c +++ b/extensions/ebt_mark_m.c @@ -121,7 +121,7 @@ static struct ebt_u_match mark_match = .extra_ops = opts, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_match(&mark_match); } --- a/extensions/ebt_nat.c +++ b/extensions/ebt_nat.c @@ -231,7 +231,7 @@ static struct ebt_u_target dnat_target = .extra_ops = opts_d, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_target(&snat_target); ebt_register_target(&dnat_target); --- a/extensions/ebt_nflog.c +++ b/extensions/ebt_nflog.c @@ -166,7 +166,7 @@ static struct ebt_u_watcher nflog_watche .extra_ops = nflog_opts, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_watcher(&nflog_watcher); } --- a/extensions/ebt_pkttype.c +++ b/extensions/ebt_pkttype.c @@ -125,7 +125,7 @@ static struct ebt_u_match pkttype_match .extra_ops = opts, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_match(&pkttype_match); } --- a/extensions/ebt_redirect.c +++ b/extensions/ebt_redirect.c @@ -108,7 +108,7 @@ static struct ebt_u_target redirect_targ .extra_ops = opts, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_target(&redirect_target); } --- a/extensions/ebt_standard.c +++ b/extensions/ebt_standard.c @@ -84,7 +84,7 @@ static struct ebt_u_target standard = .extra_ops = opts, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_target(&standard); } --- a/extensions/ebt_stp.c +++ b/extensions/ebt_stp.c @@ -337,7 +337,7 @@ static struct ebt_u_match stp_match = .extra_ops = opts, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_match(&stp_match); } --- a/extensions/ebt_ulog.c +++ b/extensions/ebt_ulog.c @@ -180,7 +180,7 @@ static struct ebt_u_watcher ulog_watcher .extra_ops = opts, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_watcher(&ulog_watcher); } --- a/extensions/ebt_vlan.c +++ b/extensions/ebt_vlan.c @@ -181,7 +181,7 @@ static struct ebt_u_match vlan_match = { .extra_ops = opts, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_match(&vlan_match); } --- a/extensions/ebtable_broute.c +++ b/extensions/ebtable_broute.c @@ -23,7 +23,7 @@ ebt_u_table table = .help = print_help, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_table(&table); } --- a/extensions/ebtable_filter.c +++ b/extensions/ebtable_filter.c @@ -29,7 +29,7 @@ static struct ebt_u_table table = .help = print_help, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_table(&table); } --- a/extensions/ebtable_nat.c +++ b/extensions/ebtable_nat.c @@ -30,7 +30,7 @@ ebt_u_table table = .help = print_help, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_table(&table); } --- a/extensions/ebt_string.c +++ b/extensions/ebt_string.c @@ -310,7 +310,7 @@ static struct ebt_u_match string_match = .extra_ops = opts, }; -void _init(void) +__attribute__((constructor)) static void extension_init(void) { ebt_register_match(&string_match); }