From 7a61f611430bbea5370f1aab3300f82e084c8f9e Mon Sep 17 00:00:00 2001 From: Arthur de Jong Date: Tue, 21 Nov 2006 16:45:25 +0000 Subject: implement netgroup lookups, including test code git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/libnss_ldapd@108 ef36b2f9-881f-0410-afb5-c4e39611909c --- testnss.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'testnss.c') diff --git a/testnss.c b/testnss.c index 6d0afbe..df7cfc9 100644 --- a/testnss.c +++ b/testnss.c @@ -151,6 +151,35 @@ static void printshadow(struct spwd *shadow) shadow->sp_inact,shadow->sp_expire,shadow->sp_flag); } +static void printnetgroup(struct __netgrent *netgroup) +{ + printf("struct __netgrent {\n"); + if (netgroup->type==triple_val) + { + printf(" type=triple_val,\n"); + if (netgroup->val.triple.host==NULL) + printf(" val.triple.host=NULL,\n"); + else + printf(" val.triple.host=\"%s\",\n",netgroup->val.triple.host); + if (netgroup->val.triple.user==NULL) + printf(" val.triple.user=NULL,\n"); + else + printf(" val.triple.user=\"%s\",\n",netgroup->val.triple.user); + if (netgroup->val.triple.domain==NULL) + printf(" val.triple.domain=NULL,\n"); + else + printf(" val.triple.domain=\"%s\",\n",netgroup->val.triple.domain); + } + else + { + printf(" type=triple_val,\n" + " val.group=\"%s\",\n", + netgroup->val.group); + } + printf(" ...\n" + "}\n"); +} + /* the main program... */ int main(int argc,char *argv[]) { @@ -160,6 +189,7 @@ int main(int argc,char *argv[]) struct hostent hostresult; struct etherent etherresult; struct spwd shadowresult; + struct __netgrent netgroupresult; char buffer[1024]; enum nss_status res; int errnocp,h_errnocp; @@ -445,5 +475,20 @@ int main(int argc,char *argv[]) res=_nss_ldap_endspent(); printf("status=%s\n",nssstatus(res)); + /* test {set,get,end}netgrent() */ + printf("\nTEST {set,get,end}netgrent()\n"); + res=_nss_ldap_setnetgrent("westcomp",&netgroupresult); + printf("status=%s\n",nssstatus(res)); + while ((_nss_ldap_getnetgrent_r(&netgroupresult,buffer,1024,&errnocp))==NSS_STATUS_SUCCESS) + { + printf("status=%s\n",nssstatus(res)); + printnetgroup(&netgroupresult); + } + printf("status=%s\n",nssstatus(res)); + printf("errno=%d:%s\n",(int)errno,strerror(errno)); + printf("errnocp=%d:%s\n",(int)errnocp,strerror(errnocp)); + res=_nss_ldap_endnetgrent(&netgroupresult); + printf("status=%s\n",nssstatus(res)); + return 0; } -- cgit v1.2.3