Stephen, Please apply this patch from Denys Fedoryshchenko to make the ipt action work with latest iptables.
cheers, jamal
New iptables 1.4.0 has some library names changed from libipt to libxt. It is prefferable also to open libxt_ first, as newer "style". Signed-off-by: Denys Fedoryshchenko <[EMAIL PROTECTED]> Signed-off-by: Jamal Hadi Salim <[EMAIL PROTECTED]> --- commit fe7b0dd9c19451019494d834c631c045e75e2b05 tree 452a75a6ec17d63832b03972ec9059b5cf9d8cfe parent 235ac6a41d9d0439cce4eca8acdd31cac28605fc author Denys Fedoryshchenko <[EMAIL PROTECTED]> Mon, 24 Dec 2007 11:51:11 -0500 committer Jamal Hadi Salim <[EMAIL PROTECTED]> Mon, 24 Dec 2007 11:51:11 -0500 tc/m_ipt.c | 24 ++++++++++++++++++++++-- 1 files changed, 22 insertions(+), 2 deletions(-) diff --git a/tc/m_ipt.c b/tc/m_ipt.c index acbb8d2..f2a9305 100644 --- a/tc/m_ipt.c +++ b/tc/m_ipt.c @@ -69,6 +69,13 @@ register_target(struct iptables_target *me) } void +xtables_register_target(struct iptables_target *me) +{ + me->next = t_list; + t_list = me; +} + +void exit_tryhelp(int status) { fprintf(stderr, "Try `%s -h' or '%s --help' for more information.\n", @@ -248,11 +255,24 @@ get_target_name(const char *name) } } - sprintf(path, "%s/libipt_%s.so",lib_dir, new_name); + /* try libxt_xx first */ + sprintf(path, "%s/libxt_%s.so", lib_dir, new_name); handle = dlopen(path, RTLD_LAZY); if (!handle) { - sprintf(path, lib_dir, "/libipt_%s.so", lname); + /* try libipt_xx next */ + sprintf(path, "%s/libipt_%s.so", lib_dir, new_name); handle = dlopen(path, RTLD_LAZY); + + if (!handle) { + sprintf(path, "%s/libxt_%s.so", lib_dir , lname); + handle = dlopen(path, RTLD_LAZY); + } + + if (!handle) { + sprintf(path, "%s/libipt_%s.so", lib_dir , lname); + handle = dlopen(path, RTLD_LAZY); + } + /* ok, lets give up .. */ if (!handle) { fputs(dlerror(), stderr); printf("\n");