summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJones Desougi <jones@ingate.com>2005-12-22 03:33:50 +0000
committerPatrick McHardy <kaber@trash.net>2005-12-22 03:33:50 +0000
commitf5b86e698be2f1f96c974a4af176269f5c677596 (patch)
treecff7e8df62630b586c369df224afc6a9869b882d
parent402c3116e5b6facda53b3299ad32d03ec8460512 (diff)
Fix probing for supported revisions (Jones Desougi <jones@ingate.com>)
Bugzilla #413
-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 81d99d86..549e0415 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 fbcf2eb4..bf71e526 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 3b32606c..6afe68fd 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 1ea80635..e22b9ea1 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;