summaryrefslogtreecommitdiffstats
path: root/iptables.c
diff options
context:
space:
mode:
Diffstat (limited to 'iptables.c')
-rw-r--r--iptables.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/iptables.c b/iptables.c
index 55420ab9..7f4c8926 100644
--- a/iptables.c
+++ b/iptables.c
@@ -649,6 +649,7 @@ find_match(const char *name, enum ipt_tryload tryload)
break;
}
+#ifndef NO_SHARED_LIBS
if (!ptr && tryload != DONT_LOAD) {
char path[sizeof(IPT_LIB_DIR) + sizeof("/libipt_.so")
+ strlen(name)];
@@ -667,6 +668,14 @@ find_match(const char *name, enum ipt_tryload tryload)
"Couldn't load match `%s':%s\n",
name, dlerror());
}
+#else
+ if (ptr && !ptr->loaded) {
+ if (tryload != DONT_LOAD)
+ ptr->loaded = 1;
+ else
+ ptr = NULL;
+ }
+#endif
if (ptr)
ptr->used = 1;
@@ -904,6 +913,7 @@ find_target(const char *name, enum ipt_tryload tryload)
break;
}
+#ifndef NO_SHARED_LIBS
if (!ptr && tryload != DONT_LOAD) {
char path[sizeof(IPT_LIB_DIR) + sizeof("/libipt_.so")
+ strlen(name)];
@@ -921,6 +931,14 @@ find_target(const char *name, enum ipt_tryload tryload)
"Couldn't load target `%s':%s\n",
name, dlerror());
}
+#else
+ if (ptr && !ptr->loaded) {
+ if (tryload != DONT_LOAD)
+ ptr->loaded = 1;
+ else
+ ptr = NULL;
+ }
+#endif
if (ptr)
ptr->used = 1;