[libvirt] [PATCH v4 3/8] Initial support for NSS plugin skeleton

Martin Kletzander mkletzan at redhat.com
Tue Mar 8 15:08:03 UTC 2016


On Thu, Mar 03, 2016 at 06:11:41PM +0100, Michal Privoznik wrote:
>Name Service Switch is a glibc feature responsible for many
>things. Translating domain names into IP addresses and vice versa
>is just one of them. However, currently it's the only
>functionality that this commit is tickling. Well, in this commit
>the plugin skeleton is introduced. Implementation to come in next
>patches.
>Because of the future testing, where the implementation is to be
>linked with a test, this needs to go into static library. Linking
>a program with an .so statically is not portable. Therefore a
>dummy libnss_libvirt_impl library is being introduced too.
>
>Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
>---
> configure.ac               |  2 ++
> m4/virt-nss.m4             | 51 ++++++++++++++++++++++++++++++++++++++++++++++
> tools/Makefile.am          | 38 ++++++++++++++++++++++++++++++++++
> tools/nss/libvirt_nss.c    | 36 ++++++++++++++++++++++++++++++++
> tools/nss/libvirt_nss.h    | 36 ++++++++++++++++++++++++++++++++
> tools/nss/libvirt_nss.syms |  9 ++++++++
> 6 files changed, 172 insertions(+)
> create mode 100644 m4/virt-nss.m4
> create mode 100644 tools/nss/libvirt_nss.c
> create mode 100644 tools/nss/libvirt_nss.h
> create mode 100644 tools/nss/libvirt_nss.syms
>
>diff --git a/configure.ac b/configure.ac
>index eed2050..4d64998 100644
>--- a/configure.ac
>+++ b/configure.ac
>@@ -257,6 +257,7 @@ LIBVIRT_CHECK_SSH2
> LIBVIRT_CHECK_SYSTEMD_DAEMON
> LIBVIRT_CHECK_UDEV
> LIBVIRT_CHECK_WIRESHARK
>+LIBVIRT_CHECK_NSS
> LIBVIRT_CHECK_YAJL
>
> AC_MSG_CHECKING([for CPUID instruction])
>@@ -2843,6 +2844,7 @@ LIBVIRT_RESULT_SSH2
> LIBVIRT_RESULT_SYSTEMD_DAEMON
> LIBVIRT_RESULT_UDEV
> LIBVIRT_RESULT_WIRESHARK
>+LIBVIRT_RESULT_NSS
> LIBVIRT_RESULT_YAJL
> AC_MSG_NOTICE([  libxml: $LIBXML_CFLAGS $LIBXML_LIBS])
> AC_MSG_NOTICE([  dlopen: $DLOPEN_LIBS])
>diff --git a/m4/virt-nss.m4 b/m4/virt-nss.m4
>new file mode 100644
>index 0000000..207cd34
>--- /dev/null
>+++ b/m4/virt-nss.m4
>@@ -0,0 +1,51 @@
>+dnl The libvirt nsswitch plugin
>+dnl
>+dnl Copyright (C) 2016 Red Hat, Inc.
>+dnl
>+dnl This library is free software; you can redistribute it and/or
>+dnl modify it under the terms of the GNU Lesser General Public
>+dnl License as published by the Free Software Foundation; either
>+dnl version 2.1 of the License, or (at your option) any later version.
>+dnl
>+dnl This library is distributed in the hope that it will be useful,
>+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
>+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>+dnl Lesser General Public License for more details.
>+dnl
>+dnl You should have received a copy of the GNU Lesser General Public
>+dnl License along with this library.  If not, see
>+dnl <http://www.gnu.org/licenses/>.
>+dnl
>+
>+AC_DEFUN([LIBVIRT_CHECK_NSS],[
>+  AC_ARG_WITH([nss-plugin],
>+    [AS_HELP_STRING([--with-nss-plugin],
>+      [enable Name Servie Switch plugin for resolving guest IP addresses])],
>+      [], [with_nss_plugin=check])
>+
>+  fail=0
>+  if test "x$with_nss_plugin" != "xno" ; then
>+    AC_CHECK_HEADERS([nss.h], [
>+        with_nss_plugin=yes
>+      ],[
>+        if test "x$with_nss_plugin" = "xyes" ; then
>+          fail = 1
>+        fi
>+      ])
>+
>+    if test $fail = 1 ; then
>+      AC_MSG_ERROR([Can't build nss plugin without nss.h])
>+    fi
>+
>+    if test "x$with_nss_plugin" = "xyes" ; then
>+      AC_DEFINE_UNQUOTED([NSS], 1, [whether nss plugin is enabled])
>+    fi
>+
>+    AM_CONDITIONAL(WITH_NSS, [test "x$with_nss_plugin" = "xyes"])

This ^^ needs to be ...

>+  fi
>+

... here, otherwise the build will fail without nss.

>+])
>+
>+AC_DEFUN([LIBVIRT_RESULT_NSS],[
>+  LIBVIRT_RESULT([nss], [$with_nss_plugin])
>+])
>diff --git a/tools/Makefile.am b/tools/Makefile.am
>index 0be3567..9754e42 100644
>--- a/tools/Makefile.am
>+++ b/tools/Makefile.am
>@@ -417,6 +417,44 @@ CLEANFILES += wireshark/src/plugin.c
>
> endif WITH_WIRESHARK_DISSECTOR
>
>+LIBVIRT_NSS_SYMBOL_FILE = \
>+	$(srcdir)/nss/libvirt_nss.syms
>+
>+LIBVIRT_NSS_SOURCES = \
>+	nss/libvirt_nss.c	\
>+	nss/libvirt_nss.h
>+
>+if WITH_NSS

Also move this ^^ ...

>+noinst_LTLIBRARIES += nss/libnss_libvirt_impl.la
>+nss_libnss_libvirt_impl_la_SOURCES = \
>+	$(LIBVIRT_NSS_SOURCES)
>+
>+nss_libnss_libvirt_impl_la_CFLAGS = \
>+	$(AM_CFLAGS)		\
>+	$(WARN_CFLAGS)		\
>+	$(PIE_CFLAGS)		\
>+	$(COVERAGE_CFLAGS)
>+

... here, so that we can run tests even without NSS (which is what you
have in place in later tests, they will now work only WITH_NSS)

ACK with that changed.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20160308/e6f833ce/attachment-0001.sig>


More information about the libvir-list mailing list