[libvirt] [PATCH v2 08/10] nss: Use macro to generate public API names

Michal Privoznik mprivozn at redhat.com
Mon Dec 5 10:31:54 UTC 2016


The name of the exported functions for an NSS module is quite
fixed, it is derived from the module name:

  _nss_$module_$function

Since we will create another NSS module with very similar
implementation we might as well generate the function names at
the compile time.

Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
---
 tests/nsslinktest.c     |  2 +-
 tests/nsstest.c         | 12 ++++++------
 tools/nss/libvirt_nss.c | 41 ++++++++++++++++++++---------------------
 tools/nss/libvirt_nss.h | 26 ++++++++++++++------------
 4 files changed, 41 insertions(+), 40 deletions(-)

diff --git a/tests/nsslinktest.c b/tests/nsslinktest.c
index 0232e362a..a81a6d331 100644
--- a/tests/nsslinktest.c
+++ b/tests/nsslinktest.c
@@ -33,7 +33,7 @@ int main(int argc ATTRIBUTE_UNUSED,
      * the fact this test has been built successfully means
      * there's no linkage problem and therefore success is
      * returned. */
-    _nss_libvirt_gethostbyname_r(NULL, NULL, NULL, 0, &err, &herrno);
+    NSS_NAME(gethostbyname)(NULL, NULL, NULL, 0, &err, &herrno);
 
     return EXIT_SUCCESS;
 }
diff --git a/tests/nsstest.c b/tests/nsstest.c
index 8648c4afb..c7fb11fd5 100644
--- a/tests/nsstest.c
+++ b/tests/nsstest.c
@@ -53,12 +53,12 @@ testGetHostByName(const void *opaque)
 
     memset(&resolved, 0, sizeof(resolved));
 
-    rv = _nss_libvirt_gethostbyname2_r(data->hostname,
-                                       data->af,
-                                       &resolved,
-                                       buf, sizeof(buf),
-                                       &tmp_errno,
-                                       &tmp_herrno);
+    rv = NSS_NAME(gethostbyname2)(data->hostname,
+                                  data->af,
+                                  &resolved,
+                                  buf, sizeof(buf),
+                                  &tmp_errno,
+                                  &tmp_herrno);
 
     if (rv == NSS_STATUS_TRYAGAIN ||
         rv == NSS_STATUS_UNAVAIL ||
diff --git a/tools/nss/libvirt_nss.c b/tools/nss/libvirt_nss.c
index 0d5982529..d77c9ece5 100644
--- a/tools/nss/libvirt_nss.c
+++ b/tools/nss/libvirt_nss.c
@@ -253,23 +253,23 @@ findLease(const char *name,
 
 
 enum nss_status
-_nss_libvirt_gethostbyname_r(const char *name, struct hostent *result,
-                             char *buffer, size_t buflen, int *errnop,
-                             int *herrnop)
+NSS_NAME(gethostbyname)(const char *name, struct hostent *result,
+                        char *buffer, size_t buflen, int *errnop,
+                        int *herrnop)
 {
     int af = ((_res.options & RES_USE_INET6) ? AF_INET6 : AF_INET);
 
-    return _nss_libvirt_gethostbyname3_r(name, af, result, buffer, buflen,
-                                         errnop, herrnop, NULL, NULL);
+    return NSS_NAME(gethostbyname3)(name, af, result, buffer, buflen,
+                                    errnop, herrnop, NULL, NULL);
 }
 
 enum nss_status
-_nss_libvirt_gethostbyname2_r(const char *name, int af, struct hostent *result,
-                              char *buffer, size_t buflen, int *errnop,
-                              int *herrnop)
+NSS_NAME(gethostbyname2)(const char *name, int af, struct hostent *result,
+                         char *buffer, size_t buflen, int *errnop,
+                         int *herrnop)
 {
-    return _nss_libvirt_gethostbyname3_r(name, af, result, buffer, buflen,
-                                         errnop, herrnop, NULL, NULL);
+    return NSS_NAME(gethostbyname3)(name, af, result, buffer, buflen,
+                                    errnop, herrnop, NULL, NULL);
 }
 
 static inline void *
@@ -287,9 +287,9 @@ move_and_align(void *buf, size_t len, size_t *idx)
 }
 
 enum nss_status
-_nss_libvirt_gethostbyname3_r(const char *name, int af, struct hostent *result,
-                              char *buffer, size_t buflen, int *errnop,
-                              int *herrnop, int32_t *ttlp, char **canonp)
+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)
 {
     enum nss_status ret = NSS_STATUS_UNAVAIL;
     char *r_name, **r_aliases, *r_addr, *r_addr_next, **r_addr_list;
@@ -405,9 +405,9 @@ _nss_libvirt_gethostbyname3_r(const char *name, int af, struct hostent *result,
 
 #ifdef HAVE_STRUCT_GAIH_ADDRTUPLE
 enum nss_status
-_nss_libvirt_gethostbyname4_r(const char *name, struct gaih_addrtuple **pat,
-                              char *buffer, size_t buflen, int *errnop,
-                              int *herrnop, int32_t *ttlp)
+NSS_NAME(gethostbyname4)(const char *name, struct gaih_addrtuple **pat,
+                         char *buffer, size_t buflen, int *errnop,
+                         int *herrnop, int32_t *ttlp)
 {
     enum nss_status ret = NSS_STATUS_UNAVAIL;
     leaseAddress *addr = NULL;
@@ -517,9 +517,9 @@ aiforaf(const char *name, int af, struct addrinfo *pai, struct addrinfo **aip)
     struct addrinfo hints, *res0, *res;
     char **addrList;
 
-    if ((ret = _nss_libvirt_gethostbyname2_r(name, af, &resolved,
-                                             buf, sizeof(buf),
-                                             &err, &herr)) != NS_SUCCESS)
+    if ((ret = NSS_NAME(gethostbyname2)(name, af, &resolved,
+                                        buf, sizeof(buf),
+                                        &err, &herr)) != NS_SUCCESS)
         return;
 
     addrList = resolved.h_addr_list;
@@ -604,8 +604,7 @@ _nss_compat_gethostbyname2_r(void *retval, void *mdata ATTRIBUTE_UNUSED, va_list
     errnop = va_arg(ap, int *);
     herrnop = va_arg(ap, int *);
 
-    ret = _nss_libvirt_gethostbyname2_r(
-              name, af, result, buffer, buflen, errnop, herrnop);
+    ret = NSS_NAME(gethostbyname2)(name, af, result, buffer, buflen, errnop, herrnop);
     *(struct hostent **)retval = (ret == NS_SUCCESS) ? result : NULL;
 
     return ret;
diff --git a/tools/nss/libvirt_nss.h b/tools/nss/libvirt_nss.h
index e025e6362..481d8828b 100644
--- a/tools/nss/libvirt_nss.h
+++ b/tools/nss/libvirt_nss.h
@@ -32,24 +32,26 @@
 # include <nss.h>
 # include <netdb.h>
 
+# define NSS_NAME(s) _nss_libvirt_##s##_r
+
 enum nss_status
-_nss_libvirt_gethostbyname_r(const char *name, struct hostent *result,
-                             char *buffer, size_t buflen, int *errnop,
-                             int *herrnop);
+NSS_NAME(gethostbyname)(const char *name, struct hostent *result,
+                        char *buffer, size_t buflen, int *errnop,
+                        int *herrnop);
 
 enum nss_status
-_nss_libvirt_gethostbyname2_r(const char *name, int af, struct hostent *result,
-                              char *buffer, size_t buflen, int *errnop,
-                              int *herrnop);
+NSS_NAME(gethostbyname2)(const char *name, int af, struct hostent *result,
+                         char *buffer, size_t buflen, int *errnop,
+                         int *herrnop);
 enum nss_status
-_nss_libvirt_gethostbyname3_r(const char *name, int af, struct hostent *result,
-                              char *buffer, size_t buflen, int *errnop,
-                              int *herrnop, int32_t *ttlp, char **canonp);
+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);
 # ifdef HAVE_STRUCT_GAIH_ADDRTUPLE
 enum nss_status
-_nss_libvirt_gethostbyname4_r(const char *name, struct gaih_addrtuple **pat,
-                              char *buffer, size_t buflen, int *errnop,
-                              int *herrnop, int32_t *ttlp);
+NSS_NAME(gethostbyname4)(const char *name, struct gaih_addrtuple **pat,
+                         char *buffer, size_t buflen, int *errnop,
+                         int *herrnop, int32_t *ttlp);
 # endif /* HAVE_STRUCT_GAIH_ADDRTUPLE */
 
 # if defined(HAVE_BSD_NSS)
-- 
2.11.0




More information about the libvir-list mailing list