diff --git a/INSTALL b/INSTALL index 94616ca..ab3af1b 100644 --- a/INSTALL +++ b/INSTALL @@ -12,7 +12,7 @@ in combination with the kernel's Kbuild system. Supported configurations for this release ========================================= - * iptables >= 1.4.3 + * iptables >= 1.4.5 * kernel-source >= 2.6.29 with prepared build/output directory diff --git a/configure.ac b/configure.ac index c51a6b4..c7431a4 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ fi AC_CHECK_HEADERS([linux/netfilter/x_tables.h], [], [AC_MSG_ERROR([You need to have linux/netfilter/x_tables.h, see INSTALL file for details])]) -PKG_CHECK_MODULES([libxtables], [xtables >= 1.4.3]) +PKG_CHECK_MODULES([libxtables], [xtables >= 1.4.5]) xtlibdir="$(pkg-config --variable=xtlibdir xtables)" PKG_CHECK_MODULES([libmnl], [libmnl >= 1], [:], [:]) diff --git a/doc/changelog.txt b/doc/changelog.txt index ae8e819..3557175 100644 --- a/doc/changelog.txt +++ b/doc/changelog.txt @@ -2,6 +2,8 @@ HEAD ==== Fixes: +- build: the code actually requires at least iptables 1.4.5 (would yield a + compile error otherwise), make sure configure checks for it; update INSTALL - xt_ECHO: fix kernel warning about RTAX_HOPLIMIT being used Changes: - xt_ECHO: now calculates UDP checksum diff --git a/extensions/libxt_RAWDNAT.c b/extensions/libxt_RAWDNAT.c index e77060f..243eef3 100644 --- a/extensions/libxt_RAWDNAT.c +++ b/extensions/libxt_RAWDNAT.c @@ -151,38 +151,39 @@ rawdnat_tg6_save(const void *entry, const struct xt_entry_target *target) info->mask); } -static struct xtables_target rawdnat_tg4_reg = { - .version = XTABLES_VERSION, - .name = "RAWDNAT", - .revision = 0, - .family = NFPROTO_IPV4, - .size = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)), - .userspacesize = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)), - .help = rawdnat_tg_help, - .parse = rawdnat_tg4_parse, - .final_check = rawdnat_tg_check, - .print = rawdnat_tg4_print, - .save = rawdnat_tg4_save, - .extra_opts = rawdnat_tg_opts, -}; - -static struct xtables_target rawdnat_tg6_reg = { - .version = XTABLES_VERSION, - .name = "RAWDNAT", - .revision = 0, - .family = NFPROTO_IPV6, - .size = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)), - .userspacesize = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)), - .help = rawdnat_tg_help, - .parse = rawdnat_tg6_parse, - .final_check = rawdnat_tg_check, - .print = rawdnat_tg6_print, - .save = rawdnat_tg6_save, - .extra_opts = rawdnat_tg_opts, +static struct xtables_target rawdnat_tg_reg[] = { + { + .version = XTABLES_VERSION, + .name = "RAWDNAT", + .revision = 0, + .family = NFPROTO_IPV4, + .size = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)), + .userspacesize = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)), + .help = rawdnat_tg_help, + .parse = rawdnat_tg4_parse, + .final_check = rawdnat_tg_check, + .print = rawdnat_tg4_print, + .save = rawdnat_tg4_save, + .extra_opts = rawdnat_tg_opts, + }, + { + .version = XTABLES_VERSION, + .name = "RAWDNAT", + .revision = 0, + .family = NFPROTO_IPV6, + .size = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)), + .userspacesize = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)), + .help = rawdnat_tg_help, + .parse = rawdnat_tg6_parse, + .final_check = rawdnat_tg_check, + .print = rawdnat_tg6_print, + .save = rawdnat_tg6_save, + .extra_opts = rawdnat_tg_opts, + }, }; static void _init(void) { - xtables_register_target(&rawdnat_tg4_reg); - xtables_register_target(&rawdnat_tg6_reg); + xtables_register_targets(rawdnat_tg_reg, + sizeof(rawdnat_tg_reg) / sizeof(*rawdnat_tg_reg)); } diff --git a/extensions/libxt_RAWSNAT.c b/extensions/libxt_RAWSNAT.c index 1c1c35d..efcd9f0 100644 --- a/extensions/libxt_RAWSNAT.c +++ b/extensions/libxt_RAWSNAT.c @@ -151,38 +151,39 @@ rawsnat_tg6_save(const void *entry, const struct xt_entry_target *target) info->mask); } -static struct xtables_target rawsnat_tg4_reg = { - .version = XTABLES_VERSION, - .name = "RAWSNAT", - .revision = 0, - .family = NFPROTO_IPV4, - .size = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)), - .userspacesize = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)), - .help = rawsnat_tg_help, - .parse = rawsnat_tg4_parse, - .final_check = rawsnat_tg_check, - .print = rawsnat_tg4_print, - .save = rawsnat_tg4_save, - .extra_opts = rawsnat_tg_opts, -}; - -static struct xtables_target rawsnat_tg6_reg = { - .version = XTABLES_VERSION, - .name = "RAWSNAT", - .revision = 0, - .family = NFPROTO_IPV6, - .size = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)), - .userspacesize = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)), - .help = rawsnat_tg_help, - .parse = rawsnat_tg6_parse, - .final_check = rawsnat_tg_check, - .print = rawsnat_tg6_print, - .save = rawsnat_tg6_save, - .extra_opts = rawsnat_tg_opts, +static struct xtables_target rawsnat_tg_reg[] = { + { + .version = XTABLES_VERSION, + .name = "RAWSNAT", + .revision = 0, + .family = NFPROTO_IPV4, + .size = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)), + .userspacesize = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)), + .help = rawsnat_tg_help, + .parse = rawsnat_tg4_parse, + .final_check = rawsnat_tg_check, + .print = rawsnat_tg4_print, + .save = rawsnat_tg4_save, + .extra_opts = rawsnat_tg_opts, + }, + { + .version = XTABLES_VERSION, + .name = "RAWSNAT", + .revision = 0, + .family = NFPROTO_IPV6, + .size = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)), + .userspacesize = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)), + .help = rawsnat_tg_help, + .parse = rawsnat_tg6_parse, + .final_check = rawsnat_tg_check, + .print = rawsnat_tg6_print, + .save = rawsnat_tg6_save, + .extra_opts = rawsnat_tg_opts, + }, }; static void _init(void) { - xtables_register_target(&rawsnat_tg4_reg); - xtables_register_target(&rawsnat_tg6_reg); + xtables_register_targets(rawsnat_tg_reg, + sizeof(rawsnat_tg_reg) / sizeof(*rawsnat_tg_reg)); } diff --git a/extensions/libxt_TEE.c b/extensions/libxt_TEE.c index 64c6b41..06f823b 100644 --- a/extensions/libxt_TEE.c +++ b/extensions/libxt_TEE.c @@ -135,38 +135,39 @@ static void tee_tg6_save(const void *ip, const struct xt_entry_target *target) printf(" --gateway %s ", xtables_ip6addr_to_numeric(&info->gw.in6)); } -static struct xtables_target tee_tg_reg = { - .name = "TEE", - .version = XTABLES_VERSION, - .revision = 0, - .family = NFPROTO_IPV4, - .size = XT_ALIGN(sizeof(struct xt_tee_tginfo)), - .userspacesize = XT_ALIGN(sizeof(struct xt_tee_tginfo)), - .help = tee_tg_help, - .parse = tee_tg_parse, - .final_check = tee_tg_check, - .print = tee_tg_print, - .save = tee_tg_save, - .extra_opts = tee_tg_opts, -}; - -static struct xtables_target tee_tg6_reg = { - .name = "TEE", - .version = XTABLES_VERSION, - .revision = 0, - .family = NFPROTO_IPV6, - .size = XT_ALIGN(sizeof(struct xt_tee_tginfo)), - .userspacesize = XT_ALIGN(sizeof(struct xt_tee_tginfo)), - .help = tee_tg_help, - .parse = tee_tg6_parse, - .final_check = tee_tg_check, - .print = tee_tg6_print, - .save = tee_tg6_save, - .extra_opts = tee_tg_opts, +static struct xtables_target tee_tg_reg[] = { + { + .name = "TEE", + .version = XTABLES_VERSION, + .revision = 0, + .family = NFPROTO_IPV4, + .size = XT_ALIGN(sizeof(struct xt_tee_tginfo)), + .userspacesize = XT_ALIGN(sizeof(struct xt_tee_tginfo)), + .help = tee_tg_help, + .parse = tee_tg_parse, + .final_check = tee_tg_check, + .print = tee_tg_print, + .save = tee_tg_save, + .extra_opts = tee_tg_opts, + }, + { + .name = "TEE", + .version = XTABLES_VERSION, + .revision = 0, + .family = NFPROTO_IPV6, + .size = XT_ALIGN(sizeof(struct xt_tee_tginfo)), + .userspacesize = XT_ALIGN(sizeof(struct xt_tee_tginfo)), + .help = tee_tg_help, + .parse = tee_tg6_parse, + .final_check = tee_tg_check, + .print = tee_tg6_print, + .save = tee_tg6_save, + .extra_opts = tee_tg_opts, + }, }; static __attribute__((constructor)) void tee_tg_ldr(void) { - xtables_register_target(&tee_tg_reg); - xtables_register_target(&tee_tg6_reg); + xtables_register_targets(tee_tg_reg, + sizeof(tee_tg_reg) / sizeof(*tee_tg_reg)); }