mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-31 10:05:31 +00:00
Initial support for NSS plugin skeleton
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@redhat.com>
This commit is contained in:
parent
1ca59d89c6
commit
859cb18d54
@ -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])
|
||||
|
51
m4/virt-nss.m4
Normal file
51
m4/virt-nss.m4
Normal file
@ -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
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(WITH_NSS, [test "x$with_nss_plugin" = "xyes"])
|
||||
|
||||
])
|
||||
|
||||
AC_DEFUN([LIBVIRT_RESULT_NSS],[
|
||||
LIBVIRT_RESULT([nss], [$with_nss_plugin])
|
||||
])
|
@ -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
|
||||
|
||||
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)
|
||||
|
||||
if WITH_NSS
|
||||
nss_libnss_libvirt_la_SOURCES =
|
||||
nss_libnss_libvirt_la_LDFLAGS = \
|
||||
$(VERSION_SCRIPT_FLAGS)$(LIBVIRT_NSS_SYMBOL_FILE) \
|
||||
$(AM_LDFLAGS) \
|
||||
-module \
|
||||
-export-dynamic \
|
||||
-avoid-version \
|
||||
-shared \
|
||||
-shrext .so.2
|
||||
|
||||
nss_libnss_libvirt_la_LIBADD = \
|
||||
nss/libnss_libvirt_impl.la
|
||||
|
||||
lib_LTLIBRARIES = \
|
||||
nss/libnss_libvirt.la
|
||||
|
||||
endif WITH_NSS
|
||||
|
||||
EXTRA_DIST += $(LIBVIRT_NSS_SYMBOL_FILE) \
|
||||
$(LIBVIRT_NSS_SOURCES)
|
||||
|
||||
clean-local:
|
||||
-rm -rf wireshark/src/libvirt
|
||||
|
36
tools/nss/libvirt_nss.c
Normal file
36
tools/nss/libvirt_nss.c
Normal file
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* libvirt_nss: Name Service Switch plugin
|
||||
*
|
||||
* The aim is to enable users and applications to translate
|
||||
* domain names into IP addresses. However, this is currently
|
||||
* available only for those domains which gets their IP addresses
|
||||
* from a libvirt managed network.
|
||||
*
|
||||
* Copyright (C) 2016 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Authors:
|
||||
* Michal Privoznik <mprivozn@redhat.com>
|
||||
*/
|
||||
#include <config.h>
|
||||
|
||||
#include "libvirt_nss.h"
|
||||
|
||||
int
|
||||
blah(int c)
|
||||
{
|
||||
return c;
|
||||
}
|
36
tools/nss/libvirt_nss.h
Normal file
36
tools/nss/libvirt_nss.h
Normal file
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* libvirt_nss: Name Service Switch plugin
|
||||
*
|
||||
* The aim is to enable users and applications to translate
|
||||
* domain names into IP addresses. However, this is currently
|
||||
* available only for those domains which gets their IP addresses
|
||||
* from a libvirt managed network.
|
||||
*
|
||||
* Copyright (C) 2016 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Authors:
|
||||
* Michal Privoznik <mprivozn@redhat.com>
|
||||
*/
|
||||
|
||||
#ifndef __LIBVIRT_NSS_H__
|
||||
# define __LIBVIRT_NSS_H__
|
||||
|
||||
# include <nss.h>
|
||||
# include <netdb.h>
|
||||
|
||||
int blah(int c);
|
||||
#endif /* __LIBVIRT_NSS_H__ */
|
9
tools/nss/libvirt_nss.syms
Normal file
9
tools/nss/libvirt_nss.syms
Normal file
@ -0,0 +1,9 @@
|
||||
#
|
||||
# Officially exported symbols.
|
||||
#
|
||||
|
||||
{
|
||||
global:
|
||||
blah;
|
||||
local: *;
|
||||
};
|
Loading…
Reference in New Issue
Block a user