]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
xtables: fix missing xtables_exit_error definition
authorPablo Neira Ayuso <pablo@netfilter.org>
Sat, 9 Mar 2013 00:01:11 +0000 (01:01 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 30 Dec 2013 22:50:27 +0000 (23:50 +0100)
iptables_exit_error is defined in iptables/iptables.c, that
symbol cannot be used by iptables/xtables.c

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
iptables/xtables.c

index c0a6347a9a3ed61c2e3fef5d64859d0f8a63017d..abc2379db99171b08f45ac1a39ba9eb5effb9b0e 100644 (file)
@@ -114,13 +114,13 @@ static struct option original_opts[] = {
        {NULL},
 };
 
-void iptables_exit_error(enum xtables_exittype status, const char *msg, ...) __attribute__((noreturn, format(printf,2,3)));
+void xtables_exit_error(enum xtables_exittype status, const char *msg, ...) __attribute__((noreturn, format(printf,2,3)));
 
 struct xtables_globals xtables_globals = {
        .option_offset = 0,
        .program_version = IPTABLES_VERSION,
        .orig_opts = original_opts,
-       .exit_err = iptables_exit_error,
+       .exit_err = xtables_exit_error,
        .compat_rev = nft_compatible_revision,
 };
 
@@ -295,6 +295,26 @@ exit_printhelp(const struct xtables_rule_match *matches)
        exit(0);
 }
 
+void
+xtables_exit_error(enum xtables_exittype status, const char *msg, ...)
+{
+       va_list args;
+
+       va_start(args, msg);
+       fprintf(stderr, "%s v%s: ", prog_name, prog_vers);
+       vfprintf(stderr, msg, args);
+       va_end(args);
+       fprintf(stderr, "\n");
+       if (status == PARAMETER_PROBLEM)
+               exit_tryhelp(status);
+       if (status == VERSION_PROBLEM)
+               fprintf(stderr,
+                       "Perhaps iptables or your kernel needs to be upgraded.\n");
+       /* On error paths, make sure that we don't leak memory */
+       xtables_free_opts(1);
+       exit(status);
+}
+
 static void
 generic_opt_check(int command, int options)
 {