Forgot to tag those as V4 of series that add --user option.

On Tue, Sep 22, 2015 at 5:51 PM, Andy Zhou <az...@nicira.com> wrote:
> Add configuration option for enabling or disabling linking with
> libcap-ng.  Since capabilities are a security feature, the libcapng
> option is handled as follows:
>
>     - no option: use libcapng if it's present
>
>     --disable-libcapng: do not use libcapng
>
>     --enable-libcapng: do use libcapng and fail configuration if
>                        it's missing
>
> On Linux, not linking with libcapng makes all OVS daemons fail when
> --user option is specified.
>
> Signed-off-by: Andy Zhou <az...@nicira.com>
> ---
>  INSTALL.md        |  7 +++++++
>  configure.ac      |  1 +
>  lib/automake.mk   |  1 +
>  m4/openvswitch.m4 | 36 ++++++++++++++++++++++++++++++++++++
>  4 files changed, 45 insertions(+)
>
> diff --git a/INSTALL.md b/INSTALL.md
> index 9dac430..50ab6c7 100644
> --- a/INSTALL.md
> +++ b/INSTALL.md
> @@ -43,6 +43,13 @@ you will need the following software:
>      libssl is installed, then Open vSwitch will automatically build
>      with support for it.
>
> +  - libcap-ng, written by Steve Grubb,  is optional but recommended
> +    if you plan to user --user option for running Open vSwitch on
> +    Linux with kernel based datapath.  libcap-ng is required to run
> +    OVS daemons as a non-root user with dropped root privileges. If
> +    libcap-ng is installed, then Open vSwitch will automatically
> +    build with support for it.
> +
>    - Python 2.7.
>
>  On Linux, you may choose to compile the kernel module that comes with
> diff --git a/configure.ac b/configure.ac
> index 36387a1..39055fe 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -91,6 +91,7 @@ OVS_CHECK_COVERAGE
>  OVS_CHECK_NDEBUG
>  OVS_CHECK_NETLINK
>  OVS_CHECK_OPENSSL
> +OVS_CHECK_LIBCAPNG
>  OVS_CHECK_LOGDIR
>  OVS_CHECK_PYTHON
>  OVS_CHECK_DOT
> diff --git a/lib/automake.mk b/lib/automake.mk
> index 5fdd08f..d8c00da 100644
> --- a/lib/automake.mk
> +++ b/lib/automake.mk
> @@ -8,6 +8,7 @@
>  lib_LTLIBRARIES += lib/libopenvswitch.la
>
>  lib_libopenvswitch_la_LIBADD = $(SSL_LIBS)
> +lib_libopenvswitch_la_LIBADD += $(CAPNG_LDADD)
>
>  if WIN32
>  lib_libopenvswitch_la_LIBADD += ${PTHREAD_LIBS}
> diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4
> index 087c7e5..a36e07d 100644
> --- a/m4/openvswitch.m4
> +++ b/m4/openvswitch.m4
> @@ -157,6 +157,42 @@ AC_DEFUN([OVS_CHECK_NETLINK],
>                  [Define to 1 if Netlink protocol is available.])
>     fi])
>
> +dnl Checks for libcap-ng.
> +AC_DEFUN([OVS_CHECK_LIBCAPNG],
> +  [AC_ARG_ENABLE(
> +     [libcapng],
> +     [AC_HELP_STRING([--disable-libcapng], [Disable Linux capability 
> support])],
> +     [case "${enableval}" in
> +        (yes) libcapng=true ;;
> +        (no)  libcapng=false ;;
> +        (*) AC_MSG_ERROR([bad value ${enableval} for --enable-libcapng]) ;;
> +      esac],
> +     [libcapng=check])
> +
> +   if test "$libcapng" != false; then
> +       AC_CHECK_LIB(cap-ng, [capng_clear], [HAVE_LIBCAPNG=yes])
> +
> +       if test "$HAVE_LIBCAPNG" != yes; then
> +           if test "$libcapng" == true ; then
> +                AC_MSG_ERROR([libcap-ng support requested, but not found])
> +           fi
> +           if test "$libcapng" == check ; then
> +                 AC_MSG_WARN([cannot find libcap-ng.
> +--user option will not be supported on Linux.
> +(you may use --disable-libcapng to suppress this warning). ])
> +           fi
> +       fi
> +   fi
> +
> +   AC_SUBST([HAVE_LIBCAPNG])
> +   AM_CONDITIONAL([HAVE_LIBCAPNG], [test "$HAVE_LIBCAPNG" = yes])
> +   if test "$HAVE_LIBCAPNG" = yes; then
> +      AC_DEFINE([HAVE_LIBCAPNG], [1],
> +                [Define to 1 if libcap-ng is available.])
> +      CAPNG_LDADD="-lcap-ng"
> +      AC_SUBST([CAPNG_LDADD])
> +   fi])
> +
>  dnl Checks for OpenSSL.
>  AC_DEFUN([OVS_CHECK_OPENSSL],
>    [AC_ARG_ENABLE(
> --
> 1.9.1
>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to