]> granicus.if.org Git - libnl/commitdiff
Allow NLSYSCONFDIR environment variable to overwrite built-in sysconfdir
authorThomas Graf <tgraf@suug.ch>
Thu, 24 Mar 2011 20:14:52 +0000 (21:14 +0100)
committerThomas Graf <tgraf@suug.ch>
Thu, 24 Mar 2011 20:14:52 +0000 (21:14 +0100)
include/netlink-local.h
lib/route/classid.c
lib/route/pktloc.c
src/Makefile.am

index 32e8302a7bc104ad6763fbdd26f81bf21b80cd03..9acc0e4fae35356c62296813e3cb651097b3b1bf 100644 (file)
@@ -186,4 +186,16 @@ static inline int wait_for_ack(struct nl_sock *sk)
                return nl_wait_for_ack(sk);
 }
 
+static inline int build_sysconf_path(char **strp, const char *filename)
+{
+       char *sysconfdir;
+
+       sysconfdir = getenv("NLSYSCONFDIR");
+
+       if (!sysconfdir)
+               sysconfdir = SYSCONFDIR;
+
+       return asprintf(strp, "%s/%s", sysconfdir, filename);
+}
+
 #endif
index 35cafe6e16ba4dcdb57ef122af7b9ab551c3baf3..6af0ee37039001da045ea36e970ac66e192c1258 100644 (file)
@@ -310,7 +310,8 @@ int rtnl_tc_read_classid_file(void)
        FILE *fd;
        int err;
 
-       asprintf(&path, "%s/classid", SYSCONFDIR);
+       if (build_sysconf_path(&path, "classid") < 0)
+               return -NLE_NOMEM;
 
        /* if stat fails, just (re-)read the file */
        if (stat(path, &st) == 0) {
@@ -392,7 +393,7 @@ int rtnl_classid_generate(const char *name, uint32_t *result, uint32_t parent)
 
        NL_DBG(2, "Generated new classid %#x\n", classid);
 
-       if (asprintf(&path, "%s/classid", SYSCONFDIR) < 0)
+       if (build_sysconf_path(&path, "classid") < 0)
                return -NLE_NOMEM;
 
        if (!(fd = fopen(path, "a"))) {
index 4d7d9dda5e2ed88b994bbd9b08a686230da935e5..b677ab50874f3ebd4ea31f47eec5674ec6ac63e2 100644 (file)
@@ -94,7 +94,8 @@ static int read_pktlocs(void)
        int i, err;
        FILE *fd;
 
-       asprintf(&path, "%s/pktloc", SYSCONFDIR);
+       if (build_sysconf_path(&path, "pktloc") < 0)
+               return -NLE_NOMEM;
 
        /* if stat fails, just try to read the file */
        if (stat(path, &st) == 0) {
index 64d1cce52c723e1c9e6d42b06dc9cbdf38630e95..e196b587b84da2c89c900e4d7a0b43bf9fa1aa14 100644 (file)
@@ -2,7 +2,7 @@
 
 SUBDIRS = lib
 
-AM_CPPFLAGS  = -Wall -I${top_srcdir}/include -I${top_builddir}/include -D_GNU_SOURCE
+AM_CPPFLAGS  = -Wall -I${top_srcdir}/include -I${top_builddir}/include -D_GNU_SOURCE -DSYSCONFDIR=\"$(sysconfdir)/libnl\"
 AM_LDFLAGS = -L${top_builddir}/lib -L${top_builddir}/src/lib -lnl-cli -lnl -lnl-nf -lnl-genl -lnl-route
 
 sbin_PROGRAMS = \