From f523f297f7fed8b64fe4c2a6e3791d31b2d2448b Mon Sep 17 00:00:00 2001 From: Thomas Graf Date: Thu, 24 Mar 2011 21:14:52 +0100 Subject: Allow NLSYSCONFDIR environment variable to overwrite built-in sysconfdir --- include/netlink-local.h | 12 ++++++++++++ lib/route/classid.c | 5 +++-- lib/route/pktloc.c | 3 ++- src/Makefile.am | 2 +- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/include/netlink-local.h b/include/netlink-local.h index 32e8302..9acc0e4 100644 --- a/include/netlink-local.h +++ b/include/netlink-local.h @@ -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 diff --git a/lib/route/classid.c b/lib/route/classid.c index 35cafe6..6af0ee3 100644 --- a/lib/route/classid.c +++ b/lib/route/classid.c @@ -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"))) { diff --git a/lib/route/pktloc.c b/lib/route/pktloc.c index 4d7d9dd..b677ab5 100644 --- a/lib/route/pktloc.c +++ b/lib/route/pktloc.c @@ -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) { diff --git a/src/Makefile.am b/src/Makefile.am index 64d1cce..e196b58 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -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 = \ -- cgit v1.2.1