2016-02-13 11:27:50 +03:00
/*
* 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/>.
*/
2019-06-18 19:13:15 +03:00
# pragma once
2016-02-13 11:27:50 +03:00
2019-06-18 19:13:15 +03:00
# include <nss.h>
# include <netdb.h>
2016-02-13 11:27:50 +03:00
2019-07-31 12:40:39 +03:00
#if 0
2019-07-31 16:35:34 +03:00
# include <errno.h>
2019-07-31 12:40:39 +03:00
# define ERROR(...) \
do { \
char ebuf [ 1024 ] ; \
2019-07-31 16:35:34 +03:00
strerror_r ( errno , ebuf , sizeof ( ebuf ) ) ; \
2019-07-31 12:40:39 +03:00
fprintf ( stderr , " ERROR %s:%d : " , __FUNCTION__ , __LINE__ ) ; \
fprintf ( stderr , __VA_ARGS__ ) ; \
2019-07-31 16:35:34 +03:00
fprintf ( stderr , " : %s \n " , ebuf ) ; \
2019-07-31 12:40:39 +03:00
fprintf ( stderr , " \n " ) ; \
} while ( 0 )
# define DEBUG(...) \
do { \
fprintf ( stderr , " DEBUG %s:%d : " , __FUNCTION__ , __LINE__ ) ; \
fprintf ( stderr , __VA_ARGS__ ) ; \
fprintf ( stderr , " \n " ) ; \
} while ( 0 )
# else
# define ERROR(...) do { } while (0)
# define DEBUG(...) do { } while (0)
# endif
2019-06-18 19:13:15 +03:00
# if !defined(LIBVIRT_NSS_GUEST)
# define NSS_NAME(s) _nss_libvirt_##s##_r
# else
# define NSS_NAME(s) _nss_libvirt_guest_##s##_r
# endif
2016-12-04 13:56:44 +03:00
2016-02-14 13:38:37 +03:00
enum nss_status
2016-12-04 13:56:44 +03:00
NSS_NAME ( gethostbyname ) ( const char * name , struct hostent * result ,
char * buffer , size_t buflen , int * errnop ,
int * herrnop ) ;
2016-02-14 13:38:37 +03:00
enum nss_status
2016-12-04 13:56:44 +03:00
NSS_NAME ( gethostbyname2 ) ( const char * name , int af , struct hostent * result ,
char * buffer , size_t buflen , int * errnop ,
int * herrnop ) ;
2016-02-14 13:38:37 +03:00
enum nss_status
2016-12-04 13:56:44 +03:00
NSS_NAME ( gethostbyname3 ) ( const char * name , int af , struct hostent * result ,
char * buffer , size_t buflen , int * errnop ,
int * herrnop , int32_t * ttlp , char * * canonp ) ;
2019-06-18 19:13:15 +03:00
# ifdef HAVE_STRUCT_GAIH_ADDRTUPLE
2016-02-14 10:13:54 +03:00
enum nss_status
2016-12-04 13:56:44 +03:00
NSS_NAME ( gethostbyname4 ) ( const char * name , struct gaih_addrtuple * * pat ,
char * buffer , size_t buflen , int * errnop ,
int * herrnop , int32_t * ttlp ) ;
2019-06-18 19:13:15 +03:00
# endif /* HAVE_STRUCT_GAIH_ADDRTUPLE */
2016-03-27 21:07:10 +03:00
2019-06-18 19:13:15 +03:00
# if defined(HAVE_BSD_NSS)
2016-03-27 21:07:10 +03:00
ns_mtab *
nss_module_register ( const char * name , unsigned int * size ,
nss_module_unregister_fn * unregister ) ;
2019-06-18 19:13:15 +03:00
# endif /* HAVE_BSD_NSS */