Thanks, Stephen, I've uploaded new patch as you suggested by putting these variables in the makefile rather than configure script.
On Fri, May 18, 2018 at 2:53 PM Stephen Hemminger <step...@networkplumber.org> wrote: > > On Tue, 15 May 2018 14:49:46 -0700 > Pavel Maltsev <pav...@google.com> wrote: > > > Currently NETNS_RUN_DIR is hardcoded and refers to /var/run/netns. > > However, some systems (e.g. Android) doesn't have /var > > which results in error attempts to create network namespaces on these > > systems. This change makes NETNS_RUN_DIR configurable at build time > > by allowing to pass environment variable to configre script. > > > > For example: NETNS_RUN_DIR=/mnt/vendor/netns ./configure && make > > > > Tested: verified that iproute2 with configuration mentioned above > > creates namespaces in /mnt/vendor/netns > > > > Signed-off-by: Pavel Maltsev <pav...@google.com> > > The directory path should definitely be overrideable on the build. > The configure script is already messy enough, lets do it instead like > the other runtime directories are already done ARPDDIR and CONFDIR. > > Something like? > > diff --git a/Makefile b/Makefile > index b526d3b5b5c4..ab828669e711 100644 > --- a/Makefile > +++ b/Makefile > @@ -16,6 +16,7 @@ PREFIX?=/usr > LIBDIR?=$(PREFIX)/lib > SBINDIR?=/sbin > CONFDIR?=/etc/iproute2 > +NETNS_RUN_DIR?=/var/run/netns > DATADIR?=$(PREFIX)/share > HDRDIR?=$(PREFIX)/include/iproute2 > DOCDIR?=$(DATADIR)/doc/iproute2 > @@ -34,7 +35,7 @@ ifneq ($(SHARED_LIBS),y) > DEFINES+= -DNO_SHARED_LIBS > endif > > -DEFINES+=-DCONFDIR=\"$(CONFDIR)\" > +DEFINES+=-DCONFDIR=\"$(CONFDIR)\" -DNETNS_RUN_DIR=\"$(NETNS_RUN_DIR)\" > > #options for decnet > ADDLIB+=dnet_ntop.o dnet_pton.o > diff --git a/include/namespace.h b/include/namespace.h > index aed7ce08507f..e47f9b5d49d1 100644 > --- a/include/namespace.h > +++ b/include/namespace.h > @@ -8,8 +8,13 @@ > #include <sys/syscall.h> > #include <errno.h> > > +#ifndef NETNS_RUN_DIR > #define NETNS_RUN_DIR "/var/run/netns" > +#endif > + > +#ifndef NETNS_ETC_DIR > #define NETNS_ETC_DIR "/etc/netns" > +#endif > > #ifndef CLONE_NEWNET > #define CLONE_NEWNET 0x40000000 /* New network namespace (lo, device, > names sockets, etc) */ >