diff options
-rw-r--r-- | include/ip6tables.h | 1 | ||||
-rw-r--r-- | include/iptables.h | 1 | ||||
-rw-r--r-- | ip6tables.c | 8 | ||||
-rw-r--r-- | iptables.c | 8 |
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); @@ -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; |