Check for environment variable XT_CONNLABEL_CFG and if set use its value
as path to connlabel.conf.

Signed-off-by: Phil Sutter <[email protected]>
---
 extensions/libxt_connlabel.c   | 6 ++++--
 extensions/libxt_connlabel.man | 2 ++
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/extensions/libxt_connlabel.c b/extensions/libxt_connlabel.c
index d06bb27a7c2e9..9a2f9ce34647e 100644
--- a/extensions/libxt_connlabel.c
+++ b/extensions/libxt_connlabel.c
@@ -3,6 +3,7 @@
 #include <string.h>
 #include <stdio.h>
 #include <stdint.h>
+#include <stdlib.h>
 #include <xtables.h>
 #include <linux/netfilter/xt_connlabel.h>
 #include <libnetfilter_conntrack/libnetfilter_conntrack.h>
@@ -39,11 +40,12 @@ static void connlabel_open(void)
        if (map)
                return;
 
-       map = nfct_labelmap_new(NULL);
+       fname = getenv("XT_CONNLABEL_CFG") ?: nfct_labels_get_path();
+
+       map = nfct_labelmap_new(fname);
        if (map != NULL)
                return;
 
-       fname = nfct_labels_get_path();
        if (errno) {
                xtables_error(RESOURCE_PROBLEM,
                        "cannot open %s: %s", fname, strerror(errno));
diff --git a/extensions/libxt_connlabel.man b/extensions/libxt_connlabel.man
index bdaa51e8b033f..c6312a88ed35c 100644
--- a/extensions/libxt_connlabel.man
+++ b/extensions/libxt_connlabel.man
@@ -19,6 +19,8 @@ option was negated).
 .PP
 This match depends on libnetfilter_conntrack 1.0.4 or later.
 Label translation is done via the \fB/etc/xtables/connlabel.conf\fP 
configuration file.
+To use label names defined in a different file, \fBXT_CONNLABEL_CFG\fP
+environment variable may be set to the full path of that file.
 .PP
 Example:
 .IP
-- 
2.20.1

Reply via email to