From d524c2cfc47a4d5217957e8e910611de9fb5b0fd Mon Sep 17 00:00:00 2001 From: Arthur de Jong Date: Tue, 28 Nov 2006 09:59:32 +0000 Subject: implement network name lookups on server side plus some fixes on the client side git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/libnss_ldapd@130 ef36b2f9-881f-0410-afb5-c4e39611909c --- testnss.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) (limited to 'testnss.c') diff --git a/testnss.c b/testnss.c index 85845f7..50b36c8 100644 --- a/testnss.c +++ b/testnss.c @@ -20,6 +20,8 @@ MA 02110-1301 USA */ +#include "config.h" + #include #include #include @@ -123,6 +125,26 @@ static void printhost(struct hostent *host) "}\n",i); } +static void printnetwork(struct netent *network) +{ + int i; + printf("struct netent {\n" + " n_name=\"%s\",\n", + network->n_name); + for (i=0;network->n_aliases[i]!=NULL;i++) + printf(" n_aliases[%d]=\"%s\",\n", + i,network->n_aliases[i]); + printf(" n_aliases[%d]=NULL,\n",i); + if (network->n_addrtype==AF_INET) + printf(" n_addrtype=AF_INET,\n"); + else if (network->n_addrtype==AF_INET6) + printf(" n_addrtype=AF_INET6,\n"); + else + printf(" n_addrtype=%d,\n",network->n_addrtype); + printf(" n_net=%s\n" + "}\n",inet_ntoa(inet_makeaddr(network->n_net,0))); +} + static void printether(struct etherent *ether) { printf("struct etherent {\n" @@ -230,6 +252,7 @@ int main(int argc,char *argv[]) struct aliasent aliasresult; struct group groupresult; struct hostent hostresult; + struct netent netresult; struct etherent etherresult; struct spwd shadowresult; struct __netgrent netgroupresult; @@ -493,7 +516,7 @@ int main(int argc,char *argv[]) printf("errno=%d:%s\n",(int)errnocp,strerror(errnocp)); res=_nss_ldap_endnetgrent(&netgroupresult); printf("status=%s\n",nssstatus(res)); - + /* test getprotobyname() */ printf("\nTEST getprotobyname()\n"); res=_nss_ldap_getprotobyname_r("foo",&protoresult,buffer,1024,&errnocp); @@ -590,5 +613,44 @@ int main(int argc,char *argv[]) res=_nss_ldap_endservent(); printf("status=%s\n",nssstatus(res)); + /* test getnetbyname() */ + printf("\nTEST getnetbyname()\n"); + res=_nss_ldap_getnetbyname_r("west",&netresult,buffer,1024,&errnocp,&h_errnocp); + printf("status=%s\n",nssstatus(res)); + if (res==NSS_STATUS_SUCCESS) + printnetwork(&netresult); + else + { + printf("errno=%d:%s\n",(int)errnocp,strerror(errnocp)); + printf("h_errno=%d:%s\n",(int)h_errnocp,hstrerror(h_errnocp)); + } + + /* test getnetbyaddr() */ + printf("\nTEST getnetbyaddr()\n"); + res=_nss_ldap_getnetbyaddr_r(inet_network("192.43.210.0"),AF_INET,&netresult,buffer,1024,&errnocp,&h_errnocp); + printf("status=%s\n",nssstatus(res)); + if (res==NSS_STATUS_SUCCESS) + printnetwork(&netresult); + else + { + printf("errno=%d:%s\n",(int)errnocp,strerror(errnocp)); + printf("h_errno=%d:%s\n",(int)h_errnocp,hstrerror(h_errnocp)); + } + + /* test {set,get,end}netent() */ + printf("\nTEST {set,get,end}netent()\n"); + res=_nss_ldap_setnetent(1); + printf("status=%s\n",nssstatus(res)); + while ((res=_nss_ldap_getnetent_r(&netresult,buffer,1024,&errnocp,&h_errnocp))==NSS_STATUS_SUCCESS) + { + printf("status=%s\n",nssstatus(res)); + printnetwork(&netresult); + } + printf("status=%s\n",nssstatus(res)); + printf("errno=%d:%s\n",(int)errnocp,strerror(errnocp)); + printf("h_errno=%d:%s\n",(int)h_errnocp,hstrerror(h_errnocp)); + res=_nss_ldap_endnetent(); + printf("status=%s\n",nssstatus(res)); + return 0; } -- cgit v1.2.3