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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>
---
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.

Attachment: signature.asc
Description: Digital signature

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]