diff options
Diffstat (limited to 'nss/networks.c')
-rw-r--r-- | nss/networks.c | 34 |
1 files changed, 10 insertions, 24 deletions
diff --git a/nss/networks.c b/nss/networks.c index 98b737b..1b407de 100644 --- a/nss/networks.c +++ b/nss/networks.c @@ -230,33 +230,24 @@ static nss_status_t networks_getnetbyaddr(nss_backend_t UNUSED(*be),void *args) READ_RESULT(fp)); } -/* thread-local file pointer to an ongoing request */ -static __thread TFILE *netentfp; - -static nss_status_t networks_setnetent(nss_backend_t UNUSED(*be),void UNUSED(*args)) -{ - NSS_SETENT(netentfp); -} - -static nss_status_t networks_getnetent(nss_backend_t UNUSED(*be),void *args) +static nss_status_t networks_setnetent(nss_backend_t *be,void UNUSED(*args)) { - NSS_GETENT(netentfp,NSLCD_ACTION_NETWORK_ALL, - READ_RESULT(netentfp)); + NSS_SETENT(LDAP_BE(be)->fp); } -static nss_status_t networks_endnetent(nss_backend_t UNUSED(*be),void UNUSED(*args)) +static nss_status_t networks_getnetent(nss_backend_t *be,void *args) { - NSS_ENDENT(netentfp); + NSS_GETENT(LDAP_BE(be)->fp,NSLCD_ACTION_NETWORK_ALL, + READ_RESULT(LDAP_BE(be)->fp)); } -static nss_status_t networks_destructor(nss_backend_t *be,void UNUSED(*args)) +static nss_status_t networks_endnetent(nss_backend_t *be,void UNUSED(*args)) { - free(be); - return NSS_STATUS_SUCCESS; + NSS_ENDENT(LDAP_BE(be)->fp); } -static nss_backend_op_t net_ops[]={ - networks_destructor, +static nss_backend_op_t networks_ops[]={ + nss_ldap_destructor, networks_endnetent, networks_setnetent, networks_getnetent, @@ -267,12 +258,7 @@ static nss_backend_op_t net_ops[]={ nss_backend_t *_nss_ldap_networks_constr(const char UNUSED(*db_name), const char UNUSED(*src_name),const char UNUSED(*cfg_args)) { - nss_backend_t *be; - if (!(be=(nss_backend_t *)malloc(sizeof(*be)))) - return NULL; - be->ops=net_ops; - be->n_ops=sizeof(net_ops)/sizeof(nss_backend_op_t); - return (nss_backend_t *)be; + return nss_ldap_constructor(networks_ops,sizeof(networks_ops)); } #endif /* NSS_FLAVOUR_SOLARIS */ |