summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/ip6tables.h1
-rw-r--r--include/iptables.h1
-rw-r--r--ip6tables.c8
-rw-r--r--iptables.c8
4 files changed, 10 insertions, 8 deletions
diff --git a/include/ip6tables.h b/include/ip6tables.h
index 81d99d8..549e041 100644
--- a/include/ip6tables.h
+++ b/include/ip6tables.h
@@ -130,6 +130,7 @@ extern struct ip6tables_target *ip6tables_targets;
enum ip6t_tryload {
DONT_LOAD,
+ DURING_LOAD,
TRY_LOAD,
LOAD_MUST_SUCCEED
};
diff --git a/include/iptables.h b/include/iptables.h
index fbcf2eb..bf71e52 100644
--- a/include/iptables.h
+++ b/include/iptables.h
@@ -162,6 +162,7 @@ extern struct iptables_target *iptables_targets;
enum ipt_tryload {
DONT_LOAD,
+ DURING_LOAD,
TRY_LOAD,
LOAD_MUST_SUCCEED
};
diff --git a/ip6tables.c b/ip6tables.c
index 3b32606..6afe68f 100644
--- a/ip6tables.c
+++ b/ip6tables.c
@@ -734,7 +734,7 @@ find_match(const char *name, enum ip6t_tryload tryload, struct ip6tables_rule_ma
}
#ifndef NO_SHARED_LIBS
- if (!ptr && tryload != DONT_LOAD) {
+ if (!ptr && tryload != DONT_LOAD && tryload != DURING_LOAD) {
char path[strlen(lib_dir) + sizeof("/libip6t_.so")
+ strlen(name)];
if (!icmphack)
@@ -986,7 +986,7 @@ find_target(const char *name, enum ip6t_tryload tryload)
}
#ifndef NO_SHARED_LIBS
- if (!ptr && tryload != DONT_LOAD) {
+ if (!ptr && tryload != DONT_LOAD && tryload != DURING_LOAD) {
char path[strlen(lib_dir) + sizeof("/libip6t_.so")
+ strlen(name)];
sprintf(path, "%s/libip6t_%s.so", lib_dir, name);
@@ -1058,7 +1058,7 @@ register_match6(struct ip6tables_match *me)
exit(1);
}
- if (find_match(me->name, DONT_LOAD, NULL)) {
+ if (find_match(me->name, DURING_LOAD, NULL)) {
fprintf(stderr, "%s: match `%s' already registered.\n",
program_name, me->name);
exit(1);
@@ -1088,7 +1088,7 @@ register_target6(struct ip6tables_target *me)
exit(1);
}
- if (find_target(me->name, DONT_LOAD)) {
+ if (find_target(me->name, DURING_LOAD)) {
fprintf(stderr, "%s: target `%s' already registered.\n",
program_name, me->name);
exit(1);
diff --git a/iptables.c b/iptables.c
index 1ea8063..e22b9ea 100644
--- a/iptables.c
+++ b/iptables.c
@@ -685,7 +685,7 @@ find_match(const char *name, enum ipt_tryload tryload, struct iptables_rule_matc
}
#ifndef NO_SHARED_LIBS
- if (!ptr && tryload != DONT_LOAD) {
+ if (!ptr && tryload != DONT_LOAD && tryload != DURING_LOAD) {
char path[strlen(lib_dir) + sizeof("/libipt_.so")
+ strlen(name)];
sprintf(path, "%s/libipt_%s.so", lib_dir, name);
@@ -994,7 +994,7 @@ find_target(const char *name, enum ipt_tryload tryload)
}
#ifndef NO_SHARED_LIBS
- if (!ptr && tryload != DONT_LOAD) {
+ if (!ptr && tryload != DONT_LOAD && tryload != DURING_LOAD) {
char path[strlen(lib_dir) + sizeof("/libipt_.so")
+ strlen(name)];
sprintf(path, "%s/libipt_%s.so", lib_dir, name);
@@ -1119,7 +1119,7 @@ register_match(struct iptables_match *me)
exit(1);
}
- old = find_match(me->name, DONT_LOAD, NULL);
+ old = find_match(me->name, DURING_LOAD, NULL);
if (old) {
if (old->revision == me->revision) {
fprintf(stderr,
@@ -1175,7 +1175,7 @@ register_target(struct iptables_target *me)
exit(1);
}
- old = find_target(me->name, DONT_LOAD);
+ old = find_target(me->name, DURING_LOAD);
if (old) {
struct iptables_target **i;