From: Rainer T. <ta...@ta...> - 2011-03-14 09:15:47
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"> </head> <body bgcolor="#ffffff" text="#000000"> Hello,<br> this is the AIX definition:<br> <br> Technical Reference: Communications, Volume 2<br> <br> gethostbyaddr Subroutine<br> <br> Purpose<br> <br> Gets network host entry by address.<br> <br> Library<br> <br> Standard C Library (libc.a)<br> (libbind)<br> (libnis)<br> (liblocal)<br> <br> Syntax<br> <br> #include <netdb.h><br> <br> struct hostent *gethostbyaddr ( Address, Length, Type)<br> <br> const void *Address, size_t Length, int Type;<br> <br> Description<br> <br> The gethostbyaddr subroutine is threadsafe in AIX 4.3 and later. However, the return value points to static data<br> that is overwritten by subsequent calls. This data must be copied to be saved for use by subsequent calls.<br> <br> The gethostbyaddr subroutine retrieves information about a host using the host address as a search key. Unless<br> specified, the gethostbyaddr subroutine uses the default name services ordering, that is, it will query DNS/BIND,<br> NIS, then the local /etc/hosts file.<br> <br> When using DNS/BIND name service resolution, if the file /etc/resolv.conf exists, the gethostbyaddr subroutine<br> queries the domain name server. The gethostbyaddr subroutine recognizes domain name servers as described in RFC<br> 883.<br> <br> When using NIS for name resolution, if the getdomainname subroutine is successful and yp_bind indicates NIS is<br> running, then the gethostbyaddr subroutine queries NIS.<br> <br> The gethostbyaddr subroutine also searches the local /etc/hosts file when indicated to do so.<br> <br> The gethostbyaddr returns a pointer to a hostent structure, which contains information obtained from one of the<br> name resolutions services. The hostent structure is defined in the netdb.h file.<br> <br> The environment variable, NSORDER can be set to override the default name services ordering and the order<br> specified in the /etc/netsvc.conf file.<br> <br> Parameters<br> <br> Address<br> Specifies a host address. The host address is passed as a pointer to the binary format address.<br> Length<br> Specifies the length of host address.<br> Type<br> Specifies the domain type of the host address. It can be either AF_INET or AF_INET6.<br> <br> Return Values<br> <br> The gethostbyaddr subroutine returns a pointer to a hostent structure upon success.<br> <br> If an error occurs or if the end of the file is reached, the gethostbyaddr subroutine returns a NULL pointer and<br> sets h_errno to indicate the error.<br> <br> Error Codes<br> <br> The gethostbyaddr subroutine is unsuccessful if any of the following errors occur:<br> Error<br> Description<br> HOST_NOT_FOUND<br> The host specified by the Name parameter is not found.<br> TRY_AGAIN<br> The local server does not receive a response from an authoritative server. Try again later.<br> NO_RECOVERY<br> This error code indicates an unrecoverable error.<br> NO_ADDRESS<br> The requested Address parameter is valid but does not have a name at the name server.<br> SERVICE_UNAVAILABLE<br> None of the name services specified are running or available.<br> <br> Files<br> /etc/hosts<br> Contains the host-name database.<br> /etc/resolv.conf<br> Contains the name server and domain name information.<br> /etc/netsvc.conf<br> Contains the name of the services ordering.<br> /usr/include/netdb.h<br> Contains the network database structure.<br> <br> Related Information<br> <br> The endhostent subroutine, gethostbyname subroutine, sethostent subroutine, gethostent subroutine, inet_addr<br> subroutine.<br> <br> Sockets Overview, and Network Address Translation in AIX 5L Version 5.3 Communications Programming Concepts.<br> <br> <br> Here is a sample for AIX (32/64 bit):<br> <br> #include <stdio.h><br> #include <stdlib.h><br> #include <unistd.h><br> #include <netdb.h><br> #include <arpa/inet.h><br> #include <sys/socket.h><br> <br> int main(void)<br> {<br> struct hostent * pHostEnt;<br> in_addr ia;<br> char *addr;<br> <br> pHostEnt = gethostbyname("test.foo.org");<br> ia.s_addr = (*(int *)pHostEnt->h_addr);<br> addr = inet_ntoa(ia);<br> printf("addr: %s\n", addr);<br> <br> pHostEnt = gethostbyaddr((char *) &ia.s_addr, sizeof(addr), AF_INET);<br> if (!pHostEnt)<br> {<br> printf("error gethostbyaddr: %d\n", h_errno);<br> }<br> else<br> {<br> printf("h_name: %s\n", pHostEnt->h_name);<br> }<br> return(0);<br> }<br> <br> output:<br> <br> # ./textme2<br> addr: 10.10.10.10<br> h_name: test.foo.org<br> <br> <br> On 12.03.2011 19:08, Jean-Louis Faucher wrote: <blockquote cite="mid:AANLkTimb0ZF_CPJ3o0DZ_OpUBq92SmKz-LeS=n3Eq=_6...@ma..." type="cite">Hi<br> <br> I had a look at<br> <a moz-do-not-send="true" href="https://sourceforge.net/projects/oorexx/forums/forum/408477/topic/4404931" target="_blank">https://sourceforge.net/projects/oorexx/forums/forum/408477/topic/4404931</a><br> <br> I see no difference in code beetween 320 and 410 which could explain the failure.<br> But there is a difference in test case : 64 bits vs 32 bits. And I wonder if the declaration of addr is ok :<br> <br> long addr;<br> addr = inet_addr(argv[0].strptr);<br> pHostEnt = gethostbyaddr((char*)&addr,sizeof(addr),domain);<br> <br> According to this Unix spec <br> <a moz-do-not-send="true" href="http://pubs.opengroup.org/onlinepubs/009695399/functions/gethostbyaddr.html" target="_blank">http://pubs.opengroup.org/onlinepubs/009695399/functions/gethostbyaddr.html</a><br> addr should be of type <br> struct in_addr<br> which includes at least the member <br> in_addr_t s_addr<br> whose type is equivalent to the type uint32_t (they say).<br> <br> struct in_addr addr;<br> addr.s_addr=inet_addr("1.2.3.4");<br> <br> Could the declaration long addr be the problem ?<br> I tested under MacOsX 64 bits, it's not a problem.<br> Don't know for AIX 6.1<br> <br> Jean-Louis<br> <br> </blockquote> Bye<br> Rainer <br> <blockquote cite="mid:AANLkTimb0ZF_CPJ3o0DZ_OpUBq92SmKz-LeS=n3Eq=_6...@ma..." type="cite"> <pre wrap=""> <fieldset class="mimeAttachmentHeader"></fieldset> ------------------------------------------------------------------------------ Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. <a class="moz-txt-link-freetext" href="http://p.sf.net/sfu/internap-sfd2d">http://p.sf.net/sfu/internap-sfd2d</a></pre> <pre wrap=""> <fieldset class="mimeAttachmentHeader"></fieldset> _______________________________________________ Oorexx-devel mailing list <a class="moz-txt-link-abbreviated" href="mailto:Oor...@li...">Oor...@li...</a> <a class="moz-txt-link-freetext" href="https://lists.sourceforge.net/lists/listinfo/oorexx-devel">https://lists.sourceforge.net/lists/listinfo/oorexx-devel</a> </pre> </blockquote> <br> </body> </html> |