diff options
author | Jan Engelhardt <jengelh@medozas.de> | 2009-01-27 20:56:23 +0100 |
---|---|---|
committer | Jan Engelhardt <jengelh@medozas.de> | 2009-01-30 03:27:42 +0100 |
commit | dacafa55379fd98212031d8c559096c91d7ce93b (patch) | |
tree | 9a2e6dd3eda76dbcc22d6c74377889bca7223c41 /xtables.c | |
parent | 5f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507 (diff) |
libxtables: prefix/order - program_name
Split XTABLES_VERSION into xtables and iptables, and encode the
xtables soversion into the extensions instead. This makes it possible
to upgrade iptables without having to recompile 3rd-party extensions
(if the libxtables version matches, of course).
Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
Diffstat (limited to 'xtables.c')
-rw-r--r-- | xtables.c | 37 |
1 files changed, 23 insertions, 14 deletions
@@ -44,6 +44,11 @@ #define PROC_SYS_MODPROBE "/proc/sys/kernel/modprobe" #endif +/** + * Program will set this to its own name. + */ +const char *xtables_program_name; + /* Search path for Xtables .so files */ static const char *xtables_libdir; @@ -529,23 +534,25 @@ void xtables_register_match(struct xtables_match *me) { struct xtables_match **i, *old; - if (strcmp(me->version, program_version) != 0) { - fprintf(stderr, "%s: match `%s' v%s (I'm v%s).\n", - program_name, me->name, me->version, program_version); + if (strcmp(me->version, XTABLES_VERSION) != 0) { + fprintf(stderr, "%s: match \"%s\" has version \"%s\", " + "but \"%s\" is required.\n", + xtables_program_name, me->name, + me->version, XTABLES_VERSION); exit(1); } /* Revision field stole a char from name. */ if (strlen(me->name) >= XT_FUNCTION_MAXNAMELEN-1) { fprintf(stderr, "%s: target `%s' has invalid name\n", - program_name, me->name); + xtables_program_name, me->name); exit(1); } if (me->family >= NPROTO) { fprintf(stderr, "%s: BUG: match %s has invalid protocol family\n", - program_name, me->name); + xtables_program_name, me->name); exit(1); } @@ -559,7 +566,7 @@ void xtables_register_match(struct xtables_match *me) old->family == me->family) { fprintf(stderr, "%s: match `%s' already registered.\n", - program_name, me->name); + xtables_program_name, me->name); exit(1); } @@ -583,7 +590,7 @@ void xtables_register_match(struct xtables_match *me) if (me->size != XT_ALIGN(me->size)) { fprintf(stderr, "%s: match `%s' has invalid size %u.\n", - program_name, me->name, (unsigned int)me->size); + xtables_program_name, me->name, (unsigned int)me->size); exit(1); } @@ -600,23 +607,25 @@ void xtables_register_target(struct xtables_target *me) { struct xtables_target *old; - if (strcmp(me->version, program_version) != 0) { - fprintf(stderr, "%s: target `%s' v%s (I'm v%s).\n", - program_name, me->name, me->version, program_version); + if (strcmp(me->version, XTABLES_VERSION) != 0) { + fprintf(stderr, "%s: target \"%s\" has version \"%s\", " + "but \"%s\" is required.\n", + xtables_program_name, me->name, + me->version, XTABLES_VERSION); exit(1); } /* Revision field stole a char from name. */ if (strlen(me->name) >= XT_FUNCTION_MAXNAMELEN-1) { fprintf(stderr, "%s: target `%s' has invalid name\n", - program_name, me->name); + xtables_program_name, me->name); exit(1); } if (me->family >= NPROTO) { fprintf(stderr, "%s: BUG: target %s has invalid protocol family\n", - program_name, me->name); + xtables_program_name, me->name); exit(1); } @@ -632,7 +641,7 @@ void xtables_register_target(struct xtables_target *me) old->family == me->family) { fprintf(stderr, "%s: target `%s' already registered.\n", - program_name, me->name); + xtables_program_name, me->name); exit(1); } @@ -656,7 +665,7 @@ void xtables_register_target(struct xtables_target *me) if (me->size != XT_ALIGN(me->size)) { fprintf(stderr, "%s: target `%s' has invalid size %u.\n", - program_name, me->name, (unsigned int)me->size); + xtables_program_name, me->name, (unsigned int)me->size); exit(1); } |