Arthur de Jong

Open Source / Free Software developer

summaryrefslogtreecommitdiffstats
path: root/testnss.c
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2006-11-28 10:59:32 +0100
committerArthur de Jong <arthur@arthurdejong.org>2006-11-28 10:59:32 +0100
commitd524c2cfc47a4d5217957e8e910611de9fb5b0fd (patch)
treec5c51d0b1c4e94abf0ea81a617362aaaeaf5a687 /testnss.c
parent74c2c4909d84fc5d9a7f082e11e50efc20d450f9 (diff)
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
Diffstat (limited to 'testnss.c')
-rw-r--r--testnss.c64
1 files changed, 63 insertions, 1 deletions
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 <string.h>
#include <stdio.h>
#include <errno.h>
@@ -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;
}