All of lore.kernel.org
 help / color / mirror / Atom feed
From: Florian Westphal <fw@strlen.de>
To: Thomas De Schampheleire <patrickdepinguin@gmail.com>
Cc: netfilter-devel@vger.kernel.org, Florian Westphal <fw@strlen.de>
Subject: Re: iptables: missing connlabel.conf causes unnecessary error messages
Date: Fri, 5 Sep 2014 11:13:05 +0200	[thread overview]
Message-ID: <20140905091305.GB934@breakpoint.cc> (raw)
In-Reply-To: <CAAXf6LW4zfxOMeUO4=UPFUX=0VGjLbM_wKhdb3L7DK4SPBmbhg@mail.gmail.com>

Thomas De Schampheleire <patrickdepinguin@gmail.com> wrote:
> Commit http://git.netfilter.org/iptables/commit/?id=51340f7b6a1103b12d86ef488f7140406d80401e
> removed the default /etc/xtables/connlabel.conf file distributed with netfilter.
> 
> From this commit onwards, every call to iptables will show the message:
>     cannot open connlabel.conf, not registering 'connlabel' match: No
> such file or directory

Right, this happens for static builds.

> Creating an empty connlabel.conf file does not really help, the
> message now becomes:
>     cannot open connlabel.conf, not registering 'connlabel' match: Success

Thats a bug.

> Moreover, I do not understand the reasoning of the mentioned commit:
> what is the problem in respecting sysconfdir? There are so many
> applications and libraries that use autoconf and can have
> configuration files in a place respecting sysconfdir.

Because then every libnetfiler_conntrack mapping call in
non-iptables software has to 'guess' where iptables' sysconfdir is.

> Finally, even if you do not want to provide a default file with the
> iptables installation, an empty file (created by the user) should hide
> the error message.
> 
> What is your view on this?

Agreed.
If there are no other comments, I will push following patch later today:

connlabel: do not open config file from _init hook

else, static builds will print this for every iptables invocation,
even 'iptables -L'.  Delay opening until we need to translate a mapping.

diff --git a/extensions/libxt_connlabel.c b/extensions/libxt_connlabel.c
--- a/extensions/libxt_connlabel.c
+++ b/extensions/libxt_connlabel.c
@@ -29,11 +29,26 @@ static const struct xt_option_entry connlabel_mt_opts[] = {
 	XTOPT_TABLEEND,
 };
 
+/* cannot do this via _init, else static builds might spew error message
+ * for every iptables invocation.
+ */
+static void connlabel_open(void)
+{
+	if (map)
+		return;
+
+	map = nfct_labelmap_new(NULL);
+	if (!map && errno)
+		xtables_error(RESOURCE_PROBLEM, "cannot open connlabel.conf: %s\n",
+			strerror(errno));
+}
+
 static void connlabel_mt_parse(struct xt_option_call *cb)
 {
 	struct xt_connlabel_mtinfo *info = cb->data;
 	int tmp;
 
+	connlabel_open();
 	xtables_option_parse(cb);
 
 	switch (cb->entry->id) {
@@ -54,7 +69,11 @@ static void connlabel_mt_parse(struct xt_option_call *cb)
 
 static const char *connlabel_get_name(int b)
 {
-	const char *name = nfct_labelmap_get_name(map, b);
+	const char *name;
+
+	connlabel_open();
+
+	name = nfct_labelmap_get_name(map, b);
 	if (name && strcmp(name, ""))
 		return name;
 	return NULL;
@@ -114,11 +133,5 @@ static struct xtables_match connlabel_mt_reg = {
 
 void _init(void)
 {
-	map = nfct_labelmap_new(NULL);
-	if (!map) {
-		fprintf(stderr, "cannot open connlabel.conf, not registering '%s' match: %s\n",
-			connlabel_mt_reg.name, strerror(errno));
-		return;
-	}
 	xtables_register_match(&connlabel_mt_reg);
 }

  reply	other threads:[~2014-09-05  9:13 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-05  8:06 iptables: missing connlabel.conf causes unnecessary error messages Thomas De Schampheleire
2014-09-05  9:13 ` Florian Westphal [this message]
2014-09-05  9:47   ` Thomas De Schampheleire
2014-09-05  9:51     ` Florian Westphal
2014-09-05 10:11       ` Thomas De Schampheleire

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140905091305.GB934@breakpoint.cc \
    --to=fw@strlen.de \
    --cc=netfilter-devel@vger.kernel.org \
    --cc=patrickdepinguin@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.