summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2006-11-07 21:18:41 +0000
committerArthur de Jong <arthur@arthurdejong.org>2006-11-07 21:18:41 +0000
commit8a9ea2cf45daf3efdb013a2d8c321cbf8324281d (patch)
tree57f48f58ffeb17963a42d994013c00fe85c77aa4
parent90fa8cd771cc60ca1c5661d26a933911bd802435 (diff)
expand some marcos and combine some code
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/libnss_ldapd@76 ef36b2f9-881f-0410-afb5-c4e39611909c
-rw-r--r--server/aliases.c64
1 files changed, 18 insertions, 46 deletions
diff --git a/server/aliases.c b/server/aliases.c
index 2fdb9a3..248ddc8 100644
--- a/server/aliases.c
+++ b/server/aliases.c
@@ -44,59 +44,23 @@
static struct ent_context *alias_context = NULL;
-static enum nss_status
-_nss_ldap_parse_alias (LDAPMessage * e,
- struct ldap_state * pvt,
- void *result, char *buffer, size_t buflen)
+static enum nss_status _nss_ldap_parse_alias(
+ LDAPMessage *e,struct ldap_state *pvt,void *result,
+ char *buffer,size_t buflen)
{
- struct aliasent *alias = (struct aliasent *) result;
+ struct aliasent *alias=(struct aliasent *)result;
enum nss_status stat;
- stat =
- _nss_ldap_getrdnvalue (e, ATM (LM_ALIASES, cn), &alias->alias_name,
- &buffer, &buflen);
+ stat=_nss_ldap_getrdnvalue(e,ATM(LM_ALIASES,cn),&alias->alias_name,&buffer,&buflen);
if (stat != NSS_STATUS_SUCCESS)
return stat;
- stat =
- _nss_ldap_assign_attrvals (e, AT (rfc822MailMember), NULL,
- &alias->alias_members, &buffer, &buflen,
- &alias->alias_members_len);
-
- alias->alias_local = 0;
+ stat=_nss_ldap_assign_attrvals(e,AT(rfc822MailMember),NULL,&alias->alias_members,&buffer,&buflen,&alias->alias_members_len);
return stat;
}
-static enum nss_status
-_nss_ldap_getaliasbyname_r (const char *name, struct aliasent * result,
- char *buffer, size_t buflen, int *errnop)
-{
- LOOKUP_NAME (name, result, buffer, buflen, errnop,
- _nss_ldap_filt_getaliasbyname, LM_ALIASES,
- _nss_ldap_parse_alias, LDAP_NSS_BUFLEN_DEFAULT);
-}
-
-static enum nss_status _nss_ldap_setaliasent (void)
-{
- LOOKUP_SETENT (alias_context);
-}
-
-static enum nss_status _nss_ldap_endaliasent (void)
-{
- LOOKUP_ENDENT (alias_context);
-}
-
-static enum nss_status
-_nss_ldap_getaliasent_r (struct aliasent *result, char *buffer, size_t buflen,
- int *errnop)
-{
- LOOKUP_GETENT (alias_context, result, buffer, buflen, errnop,
- _nss_ldap_filt_getaliasent, LM_ALIASES,
- _nss_ldap_parse_alias, LDAP_NSS_BUFLEN_DEFAULT);
-}
-
/* macros for expanding the LDF_ALIAS macro */
#define LDF_STRING(field) WRITE_STRING(fp,field)
#define LDF_STRINGLIST(field) WRITE_STRINGLIST_NUM(fp,field,result.alias_members_len)
@@ -112,12 +76,16 @@ int nslcd_alias_byname(FILE *fp)
char buffer[1024];
int errnop;
int retv;
+ struct ldap_args a;
/* read request parameters */
READ_STRING_ALLOC(fp,name);
/* log call */
log_log(LOG_DEBUG,"nslcd_alias_byname(%s)",name);
/* do the LDAP request */
- retv=nss2nslcd(_nss_ldap_getaliasbyname_r(name,&result,buffer,1024,&errnop));
+ LA_INIT(a);
+ LA_STRING(a)=name;
+ LA_TYPE(a)=LA_TYPE_STRING;
+ retv=nss2nslcd(_nss_ldap_getbyname(&a,&result,buffer,1024,&errnop,_nss_ldap_filt_getaliasbyname,LM_ALIASES,_nss_ldap_parse_alias));
/* no more need for this */
free(name);
/* write the response */
@@ -147,9 +115,11 @@ int nslcd_alias_all(FILE *fp)
/* write the response header */
WRITE_INT32(fp,NSLCD_VERSION);
WRITE_INT32(fp,NSLCD_ACTION_ALIAS_ALL);
+ /* initialize context */
+ if (_nss_ldap_ent_context_init(&alias_context)==NULL)
+ return -1;
/* loop over all results */
- _nss_ldap_setaliasent();
- while ((retv=nss2nslcd(_nss_ldap_getaliasent_r(&result,buffer,1024,&errnop)))==NSLCD_RESULT_SUCCESS)
+ while ((retv=nss2nslcd(_nss_ldap_getent(&alias_context,&result,buffer,1024,&errnop,_nss_ldap_filt_getaliasent,LM_ALIASES,_nss_ldap_parse_alias)))==NSLCD_RESULT_SUCCESS)
{
/* write the result code */
WRITE_INT32(fp,retv);
@@ -160,7 +130,9 @@ int nslcd_alias_all(FILE *fp)
/* write the final result code */
WRITE_INT32(fp,retv);
/* FIXME: if a previous call returns what happens to the context? */
- _nss_ldap_endaliasent();
+ _nss_ldap_enter();
+ _nss_ldap_ent_context_release(alias_context);
+ _nss_ldap_leave();
log_log(LOG_DEBUG,"nslcd_alias_all DONE");
/* we're done */
return 0;