From: Denys Fedoryshchenko Date: Mon, 24 Dec 2007 16:51:11 +0000 (-0500) Subject: iptables compatiablity X-Git-Tag: v2.6.24-rc7~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=53c017880b311d7d68926109d4248c900286f6b7;p=thirdparty%2Fiproute2.git iptables compatiablity 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 Signed-off-by: Jamal Hadi Salim Signed-off-by: Stephen Hemminger --- diff --git a/tc/m_ipt.c b/tc/m_ipt.c index acbb8d2d8..f2a9305d3 100644 --- a/tc/m_ipt.c +++ b/tc/m_ipt.c @@ -68,6 +68,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) { @@ -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");