diff options
author | Lorenzo Colitti <lorenzo@google.com> | 2017-03-14 17:55:50 +0900 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2017-03-14 11:22:51 +0100 |
commit | b91af533f4da15854893ba5cc082e1df6bcf9a97 (patch) | |
tree | 1504ce846a3a7550057b38f2bc5bb26ce8b3f02e | |
parent | 0e94eb2e0e38cb9df0784e5be530358c692701de (diff) |
iptables: set the path of the lock file via a configure option.
Currently the iptables lock is hardcoded as "/run/xtables.lock".
Allow users to change this path using the --with-xt-lock-name
option to ./configure option. This is useful on systems like
Android which do not have /run.
Tested on Ubuntu, as follows:
1. By default, the lock is placed in /run/xtables.lock:
$ make distclean-recursive && ./autogen.sh &&
./configure --disable-nftables --prefix /tmp/iptables &&
make -j64 &&
make install &&
sudo strace -e open,flock /tmp/iptables/sbin/iptables -L foo
...
open("/run/xtables.lock", O_RDONLY|O_CREAT, 0600) = 3
flock(3, LOCK_EX|LOCK_NB) = 0
iptables: No chain/target/match by that name.
2. Specifying the lock results in the expected location being
used:
$ make distclean-recursive && ./autogen.sh && \
./configure --disable-nftables --prefix /tmp/iptables \
--with-xt-lock-name=/tmp/iptables/run/xtables.lock &&
make -j64 &&
make install &&
sudo strace -e open,flock /tmp/iptables/sbin/iptables -L foo
...
open("/tmp/iptables/run/xtables.lock", O_RDONLY|O_CREAT, 0600) = 3
flock(3, LOCK_EX|LOCK_NB) = 0
iptables: No chain/target/match by that name.
Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r-- | configure.ac | 10 | ||||
-rw-r--r-- | iptables/xshared.c | 2 |
2 files changed, 8 insertions, 4 deletions
diff --git a/configure.ac b/configure.ac index eda78714..b2750266 100644 --- a/configure.ac +++ b/configure.ac @@ -67,6 +67,10 @@ AC_ARG_ENABLE([connlabel], AS_HELP_STRING([--disable-connlabel], [Do not build libnetfilter_conntrack]), [enable_connlabel="$enableval"], [enable_connlabel="yes"]) +AC_ARG_WITH([xt-lock-name], AS_HELP_STRING([--with-xt-lock-name=PATH], + [Path to the xtables lock [[/run/xtables.lock]]]), + [xt_lock_name="$withval"], + [xt_lock_name="/run/xtables.lock"]) libiptc_LDFLAGS2=""; AX_CHECK_LINKER_FLAGS([-Wl,--no-as-needed], @@ -193,7 +197,7 @@ AC_SUBST([blacklist_6_modules]) regular_CFLAGS="-Wall -Waggregate-return -Wmissing-declarations \ -Wmissing-prototypes -Wredundant-decls -Wshadow -Wstrict-prototypes \ -Winline -pipe"; -regular_CPPFLAGS="${largefile_cppflags} -D_REENTRANT \ +regular_CPPFLAGS="${largefile_cppflags} -DXT_LOCK_NAME=\\\"\${xt_lock_name}\\\" -D_REENTRANT \ -DXTABLES_LIBDIR=\\\"\${xtlibdir}\\\" -DXTABLES_INTERNAL"; kinclude_CPPFLAGS=""; if [[ -n "$kbuilddir" ]]; then @@ -231,6 +235,7 @@ AC_SUBST([libxtables_vcurrent]) AC_SUBST([libxtables_vage]) libxtables_vmajor=$(($libxtables_vcurrent - $libxtables_vage)); AC_SUBST([libxtables_vmajor]) +AC_SUBST([xt_lock_name]) AC_CONFIG_FILES([Makefile extensions/GNUmakefile include/Makefile iptables/Makefile iptables/xtables.pc @@ -265,7 +270,8 @@ Build parameters: Support plugins via dlopen (shared): ${enable_shared} Installation prefix (--prefix): ${prefix} Xtables extension directory: ${e_xtlibdir} - Pkg-config directory: ${e_pkgconfigdir}" + Pkg-config directory: ${e_pkgconfigdir} + Xtables lock file: ${xt_lock_name}" if [[ -n "$ksourcedir" ]]; then echo " Kernel source directory: ${ksourcedir}" diff --git a/iptables/xshared.c b/iptables/xshared.c index f0a5ddd0..383ecf2c 100644 --- a/iptables/xshared.c +++ b/iptables/xshared.c @@ -17,8 +17,6 @@ #include <math.h> #include "xshared.h" -#define XT_LOCK_NAME "/run/xtables.lock" - /* * Print out any special helps. A user might like to be able to add a --help * to the commandline, and see expected results. So we call help for all |