os/ossrv/genericopenlibs/openenvcore/include/netdb.dosc
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 /** @file  ../include/netdb.h
     2 @internalComponent
     3 */
     4 
     5 /** @fn  endservent(void)
     6 
     7 Refer to  getservent() for the documentation
     8 
     9 
    10  
    11 
    12 @publishedAll
    13 @externallyDefinedApi
    14 */
    15 
    16 /** @fn  gethostbyaddr(const char *addr, int length, int format)
    17 @param addr
    18 @param length
    19 @param format
    20 Refer to  gethostbyname() for the documentation
    21 @see getaddrinfo()
    22 @see getnameinfo()
    23 
    24 
    25  
    26 
    27 @publishedAll
    28 @externallyDefinedApi
    29 */
    30 
    31 /** @fn  gethostbyname(const char *name)
    32 @param name
    33 
    34 Note: This description also covers the following functions -
    35  gethostbyaddr() 
    36 
    37 @return   The gethostbyname and gethostbyaddr functions return NULL if an error occurs or a valid hostent 
    38 structure otherwise.
    39 
    40 The gethostbyname, and gethostbyaddr functions each return a pointer to an object with the following structure describing an internet host referenced by name or by address, respectively. 
    41 
    42 The name argument passed to gethostbyname should point to a NUL -terminated hostname. The addr argument passed to gethostbyaddr should point to an address which is len bytes long, in binary form (i.e., not an IP address in human readable ASCII form). The type argument specifies the address family (e.g. AF_INET, etc.) of this address. 
    43 
    44 The structure returned contains either the information obtained from the name server, 
    45 
    46 @code
    47 struct  hostent {
    48         char    *h_name;        // official name of host
    49         char    **h_aliases;    // alias list 
    50         int     h_addrtype;     // host address type 
    51         int     h_length;       // length of address 
    52         char    **h_addr_list;  // list of addresses from name server 
    53 };
    54 #define h_addr  h_addr_list[0]  //address, for backward compatibility
    55 @endcode
    56 
    57 
    58 
    59 The members of this structure are: 
    60 @code
    61 h_name  Official name of the host.  
    62 h_aliases  A NULL -terminated array of alternate names for the host.  
    63 h_addrtype  The type of address being returned; usually AF_INET.  
    64 h_length  The length, in bytes, of the address.  
    65 h_addr_list  A NULL -terminated array of network addresses for the host. Host addresses are returned in network byte order.  
    66 h_addr  The first address in h_addr_list; this is for backward compatibility.  
    67 @endcode
    68 
    69 
    70 When using the nameserver, gethostbyname will search for the named host in the current domain and its parents unless the name ends in a dot. 
    71 
    72 getaddrinfo and getnameinfo functions are preferred over the gethostbyname, and gethostbyaddr functions. 
    73 
    74 
    75 
    76 
    77 
    78 
    79 Examples:
    80 @code
    81 #include<stdio.h>
    82 #include<arpa/inet.h>
    83 #include <sys/socket.h>
    84 #include <netinet/in.h>
    85 #include <netdb.h>
    86 #include <string.h>
    87 Int main()
    88 {
    89 struct hostent *hp = 0;
    90 char *test_url=www.google.com:
    91 hp = gethostbyname(test_url);
    92 if(hp==NULL)
    93 printf("gethostbyname failed"):
    94 else
    95 printf("gethostbyname passed");
    96 return 0;
    97 }
    98 
    99 @endcode
   100  Output
   101 @code
   102 Gethostbyname passed
   103 
   104 @endcode
   105 @code
   106 #include<stdio.h>
   107 #include<arpa/inet.h>
   108 #include <sys/socket.h>
   109 #include <netinet/in.h>
   110 #include <netdb.h>
   111 #include <string.h>
   112 #define urlsize 50
   113 Int main()
   114 {
   115 struct hostent *hp = 0;
   116 char addr[256];
   117 unsigned long  test_addr;
   118 strcpy(addr," 147.243.3.83");
   119 test_addr=inet_addr(addr);
   120 struct hostent *hp;
   121 hp=gethostbyaddr((const char *)&test;_addr,sizeof(test_addr),AF_INET);
   122 if(hp)
   123 printf("DNS query resolved");
   124 else
   125 printf("gethostbyaddr failed");
   126 return 0;
   127 }
   128 
   129 @endcode
   130 
   131 Diagnostics:
   132 
   133  Error return status from gethostbyname and gethostbyaddr is indicated by return of a NULL pointer.
   134 The external integer h_errno may then be checked to see whether this is a temporary failure
   135 or an invalid or unknown host.
   136 The routine
   137 If its argument string is non- NULL, it is printed, followed by a colon and a space.
   138 The error message is printed with a trailing newline. The variable h_errno can have the following values: TRY_AGAIN This is usually a temporary error
   139 and means that the local server did not receive
   140 a response from an authoritative server.
   141 A retry at some later time may succeed. NO_RECOVERY Some unexpected server failure was encountered.
   142 This is a non-recoverable error.
   143 
   144 @see getaddrinfo()
   145 @see getnameinfo()
   146 
   147 
   148 Bugs:
   149 
   150  These functions use a thread-specific data storage; if the data is needed 
   151 for future use it should be copied before any subsequent calls overwrite it. Though these functions are thread-safe the getaddrinfo family of functions is recommended 
   152   instead. Only the Internet
   153 address format is currently understood. 
   154  
   155 
   156 @publishedAll
   157 @externallyDefinedApi
   158 */
   159 
   160 /** @fn  getprotobyname(const char *name)
   161 @param name
   162 
   163 Note: This description also covers the following functions -
   164  getprotobynumber() 
   165 
   166 @return   Null pointer
   167 (0) returned on
   168 error.
   169 
   170 The getprotobyname, and getprotobynumber functions each return a pointer to an object with the following structure from the network protocol data base 
   171 @code
   172 struct  protoent {
   173         char    *p_name;        /* official name of protocol */
   174         char    **p_aliases;    /* alias list */
   175         int     p_proto;        /* protocol number */
   176 };
   177 @endcode
   178 
   179 The members of this structure are: 
   180 @code
   181 p_name  The official name of the protocol.  
   182 p_aliases    A zero terminated list of alternate names for the protocol.  
   183 p_proto  The protocol number.  
   184 @endcode
   185 
   186 
   187 The getprotobyname function and getprotobynumber sequentially search from the beginning of the database until a matching protocol name or protocol number is found, 
   188 
   189 
   190 Examples:
   191 @code
   192 #include<netinet/in.h>
   193 #include<arpa/inet.h>
   194 #include<stdio.h>
   195 #include<string.h>
   196 #include<netdb.h>
   197 Int main()
   198 {
   199 struct protoent *p =0;
   200 char *protoname="tcp";
   201 p=getprotobyname(protoname);
   202 if(p!=NULL)
   203 printf("protocol not supported:");
   204 else
   205 printf("protocol supported");
   206 return 0;
   207 }
   208 
   209 @endcode
   210  Output
   211 @code
   212 Protocol supported/not supported based on the support for protocol
   213 
   214 @endcode
   215 @code
   216 #include<netinet/in.h>
   217 #include<arpa/inet.h>
   218 #include<stdio.h>
   219 #include<string.h>
   220 #include<netdb.h>
   221 int main()
   222 	{
   223 	struct protoent *p =0;
   224 	int protonum=6;
   225 	p=getprotobynumber(protonum);
   226 	if(p!=NULL)
   227 		printf("protocol not supported:");
   228 	else
   229 		printf("protocol supported");
   230 	return 0;
   231 	}
   232 
   233 @endcode
   234  Output
   235 @code
   236 Protocol supported/not supported based on the support for protocol
   237 
   238 @endcode
   239  The getprotobynumber, getprotobyname, functions appeared in BSD 4.2 .
   240 
   241 Bugs:
   242 
   243  These functions use a thread-specific data space; if the data is needed for 
   244 future use it must be copied before any subsequent calls overwrite it. Only the 
   245 Internet protocols are currently understood. 
   246 
   247  
   248 
   249 @publishedAll
   250 @externallyDefinedApi
   251 */
   252 
   253 /** @fn  getprotobynumber(int proto)
   254 @param proto
   255 
   256 Refer to  getprotobyname() for the documentation
   257 
   258 
   259  
   260 
   261 @publishedAll
   262 @externallyDefinedApi
   263 */
   264 
   265 /** @fn  getservbyname(const char *name, const char *proto)
   266 @param name
   267 @param proto
   268 Refer to  getservent() for the documentation
   269 
   270 
   271  
   272 
   273 @publishedAll
   274 @externallyDefinedApi
   275 */
   276 
   277 /** @fn  getservbyport(int port, const char *proto)
   278 @param port
   279 @param proto
   280 Refer to  getservent() for the documentation
   281 
   282 
   283  
   284 
   285 @publishedAll
   286 @externallyDefinedApi
   287 */
   288 
   289 /** @fn  getservent(void)
   290 
   291 Note: This description also covers the following functions -
   292  getservbyname()  getservbyport()  setservent()  endservent() 
   293 
   294 @return   getservent, getservbyname and getservbyport functions return the servent structure, or a NULL pointer if an error occurs or the end of the file is reached.
   295 
   296 @code
   297  s_name The official name of the service.
   298  s_aliases
   299   A zero terminated list of alternate names for the service.
   300  s_port The port number at which the service resides.
   301  Port numbers are returned in network byte order.
   302  s_proto The name of the protocol to use when contacting the
   303  service.
   304 
   305 @endcode
   306   
   307 @code
   308 The getservent, getservbyname, and getservbyport functions
   309 each return a pointer to an object with the
   310 following structure
   311 containing the broken-out
   312 fields of a line in the network services data base, c:/sys/data/services. 
   313 structservent {
   314 char*s_name;/* official name of service */
   315 char**s_aliases;/* alias list */
   316 ints_port;/* port service resides at */
   317 char*s_proto;/* protocol to use */
   318 };
   319 @endcode
   320 
   321  The members of this structure are: s_name The official name of the service. s_aliases  A zero terminated list of alternate names for the service. s_port The port number at which the service resides.
   322 Port numbers are returned in network byte order. s_proto The name of the protocol to use when contacting the
   323 service.
   324 
   325  The getservent function
   326 reads the next line of the file, opening the file if necessary.
   327 
   328  The setservent function
   329 opens and rewinds the file.
   330 
   331  The endservent function
   332 closes the file.
   333 
   334  The getservbyname and getservbyport functions
   335 sequentially search from the beginning
   336 of the file until a matching
   337 protocol name or
   338 port number (which must be specified in
   339 network byte order) is found,
   340 or until EOF is encountered.
   341 If a protocol name is also supplied (non- NULL ), searches must also match the protocol.
   342 
   343 Examples:
   344 @code
   345 #include<stdio.h>
   346 #include<netinet/in.h>
   347 #include<arpa/inet.h>
   348 #include<string.h>
   349 #include<netdb.h>
   350 int main()
   351 {
   352 Char *service="http";
   353 Char *protocol="tcp";
   354 Struct servent *p=0;
   355 P=getservbyname(service,protocol);
   356 if(p!=NULL)
   357 printf("service not supported:");
   358 else
   359 printf("Service  supported");
   360 return 0;
   361 }
   362 
   363 @endcode
   364 @code
   365 #include<stdio.h>
   366 #include<netinet/in.h>
   367 #include<arpa/inet.h>
   368 #include<string.h>
   369 #include<netdb.h>
   370 int main()
   371 {
   372 struct servent *p;
   373 char *protocol="tcp";
   374 int port;
   375 port=htons(80);
   376 p=(port,protocol);
   377 if(p)
   378 {
   379 Printf("port is  assigned");
   380 else
   381 printf("port is not assigned");
   382 }
   383 
   384 @endcode
   385  Output
   386 @code
   387 Port is assigned
   388 
   389 @endcode
   390 @code
   391 #include<stdio.h>
   392 #include<netinet/in.h>
   393 #include<arpa/inet.h>
   394 #include<string.h>
   395 #include<netdb.h>
   396 Int main()
   397 {
   398 struct servent *p;
   399 p=getservent();
   400 if(p)
   401 printf("getservent successful");
   402 else
   403 printf("getservent failed");
   404 return 0;
   405 }
   406 
   407 @endcode
   408  Output
   409 @code
   410 Getservent passed
   411 
   412 @endcode
   413 @code
   414 #include<stdio.h>
   415 #include<netinet/in.h>
   416 #include<arpa/inet.h>
   417 #include<string.h>
   418 #include<netdb.h>
   419 int main()
   420 {
   421 int stayopen=1;
   422 retservent(stayopen):
   423 return 0;
   424 }
   425 
   426 @endcode
   427 @code
   428 #include<stdio.h>
   429 #include<netinet/in.h>
   430 #include<arpa/inet.h>
   431 #include<string.h>
   432 #include<netdb.h>
   433 int main()
   434 {
   435 struct servent *p;
   436   p=getservent();
   437 if(p)
   438 endservent();
   439 return 0;
   440 }
   441 
   442 @endcode
   443 
   444 Diagnostics:
   445  Null pointer
   446 (0) returned on EOF or error. The getservent, getservbyport, getservbyname, setservent, and endservent functions appeared in BSD 4.2.
   447 
   448 Bugs:
   449 
   450  These functions use a thread-specific data storage. If the data is needed 
   451 for future use it should be copied before any subsequent calls overwrite it. Expecting 
   452 port numbers to fit in a 32 bit quantity is probably naive. 
   453  
   454 
   455 @publishedAll
   456 @externallyDefinedApi
   457 */
   458 
   459 /** @fn getaddrinfo(const char *hostname, const char *servname,const struct addrinfo *hints, struct addrinfo **res)
   460 @param hostname
   461 @param servname
   462 @param hints
   463 @param res
   464 @return A zero return value for getaddrinfo() indicates successful completion; a non-zero return value indicates failure. The possible values for the failures are listed in the ERRORS section.
   465 Upon successful return of getaddrinfo(), the location to which res points shall refer to a linked list of addrinfo structures, each of which shall specify a socket address and information for use in creating a socket with which to use that socket address. 
   466 The list shall include at least one addrinfo structure. 
   467 
   468 The freeaddrinfo() function shall free one or more addrinfo structures returned by getaddrinfo(), along with any additional storage associated with those structures. If the ai_next field of the structure is not null, the entire list of structures shall be freed. The freeaddrinfo() function shall support the freeing of arbitrary sublists of an addrinfo list originally returned by getaddrinfo().
   469 
   470 The getaddrinfo() function shall translate the name of a service location (for example, a host name) and//or a service name and shall return a set of socket addresses and associated information to be used in creating a socket with which to address the specified service.
   471 
   472 @publishedAll
   473 @externallyDefinedApi
   474 */
   475 
   476 /** @fn  getnameinfo( const struct sockaddr * sa , socklen_t salen, char * host,size_t 
   477       hostlen, char * serv, size_t servlen, int flags )
   478 @param sa
   479 @param salen
   480 @param host
   481 @param hostlen
   482 @param serv
   483 @param servlen
   484 @param flags
   485 @return   getnameinfo returns zero on success or one of the error codes listed in gai_strerror if an error occurs.
   486 
   487 The getnameinfo function is used to convert a sockaddr structure to a pair of host name and service strings. It is a replacement for and provides more flexibility than the gethostbyaddr and getservbyport functions and is the converse of the getaddrinfo function. 
   488 The sockaddr structure sa should point to sockaddr_in (for IPv4) that is salen bytes long. 
   489 
   490 The host and service names associated with sa are stored in host and serv which have length parameters hostlen and servlen. The maximum value for hostlen is NI_MAXHOST and the maximum value for servlen is NI_MAXSERV, as defined by \<netdb.h.\> If a length parameter is zero, no string will be stored. Otherwise, enough space must be provided to store the host name or service string plus a byte for the NUL terminator. 
   491 
   492 The flags argument is formed by OR ’ing the following values: NI_NOFQDN  A fully qualified domain name is not required for local hosts. The local part of the fully qualified domain name is returned instead.  
   493 @code
   494 NI_NUMERICHOST  Return the address in numeric form, as if calling inet_ntop, instead of a host name.  
   495 NI_NAMEREQD  A name is required. If the host name cannot be found in DNS and this flag is set, a non-zero error code is returned. If the host name is not found and the flag is not set, the address is returned in numeric form.  
   496 NI_NUMERICSERV  The service name is returned as a digit string representing the port number.  
   497 NI_DGRAM  Specifies that the service being looked up is a datagram service, and causes getservbyport to be called with a second argument of "udp" instead of its default of "tcp." This is required for the few ports (512-514) that have different services for UDP and TCP.  
   498 @endcode
   499 
   500 
   501 
   502 Examples:
   503 @code
   504 #include <stdio.h>
   505 #include <netdb.h>
   506 #include <netinet/in.h>
   507 int main()
   508 {
   509      struct addrinfo *result;
   510      char hostname[80];
   511      int error;
   512      if (error = getaddrinfo("www.yahoo.com",NULL, NULL, &result;))
   513      {
   514             fprintf(stderr, "error using getaddrinfo: %s
   515 ", gai_strerror(error));
   516      }
   517      if (result)
   518      {
   519             if (error = getnameinfo(result->ai_addr,result->ai_addrlen, hostname, sizeof(hostname), NULL,0,0))
   520             {
   521                    printf( "error using getnameinfo: %s
   522 ", gai_strerror(error));
   523             }
   524     }
   525 return 0;
   526 }
   527 
   528 @endcode
   529 @see gai_strerror()
   530 @see getaddrinfo()
   531 @see inet_ntop()
   532 
   533 
   534 Caveats:
   535 
   536  getnameinfo can return both numeric and FQDN forms of the address specified in sa. There is no return value that indicates whether the string returned in host is a result of binary to numeric-text translation (like inet_ntop or is the result of a DNS reverse lookup.
   537 Because of this, malicious parties could set up a PTR record as follows:
   538 @code
   539 1.0.0.127.in-addr.arpa. IN PTR  10.1.1.1
   540 
   541 @endcode
   542  and trick the caller of getnameinfo into believing that sa is 10.1.1.1
   543 when it is actually 127.0.0.1. To prevent such attacks, the use of NI_NAMEREQD is recommended when the result of getnameinfo is used
   544 for access control purposes:
   545 @code
   546 struct sockaddr *sa;
   547 socklen_t salen;
   548 char addr[NI_MAXHOST];
   549 struct addrinfo hints, *res;
   550 int error;
   551 error = getnameinfo(sa, salen, addr, sizeof(addr),
   552     NULL, 0, NI_NAMEREQD);
   553 if (error == 0) {
   554         memset(&hints;, 0, sizeof(hints));
   555         hints.ai_socktype = SOCK_DGRAM; /*dummy*/
   556         hints.ai_flags = AI_NUMERICHOST;
   557         if (getaddrinfo(addr, "0", &hints;, &res;) == 0) {
   558                 /* malicious PTR record */
   559                 freeaddrinfo(res);
   560                 printf("bogus PTR record
   561 ");
   562                 return -1;
   563         }
   564         /* addr is FQDN as a result of PTR lookup */
   565 } else {
   566         /* addr is numeric string */
   567         error = getnameinfo(sa, salen, addr, sizeof(addr),
   568             NULL, 0, NI_NUMERICHOST);
   569 }
   570 
   571 @endcode
   572  
   573 Caveats:
   574 
   575  getnameinfo can return both numeric and FQDN forms of the address specified in sa. There is no return value that indicates whether the string returned in host is a result of binary to numeric-text translation (like inet_ntop or is the result of a DNS reverse lookup.
   576 Because of this, malicious parties could set up a PTR record as follows:
   577 @code
   578 1.0.0.127.in-addr.arpa. IN PTR  10.1.1.1
   579 
   580 @endcode
   581  and trick the caller of getnameinfo into believing that sa is 10.1.1.1
   582 when it is actually 127.0.0.1. To prevent such attacks, the use of NI_NAMEREQD is recommended when the result of getnameinfo is used
   583 for access control purposes:
   584 @code
   585 struct sockaddr *sa;
   586 socklen_t salen;
   587 char addr[NI_MAXHOST];
   588 struct addrinfo hints, *res;
   589 int error;
   590 error = getnameinfo(sa, salen, addr, sizeof(addr),
   591     NULL, 0, NI_NAMEREQD);
   592 if (error == 0) {
   593         memset(&hints;, 0, sizeof(hints));
   594         hints.ai_socktype = SOCK_DGRAM; /*dummy*/
   595         hints.ai_flags = AI_NUMERICHOST;
   596         if (getaddrinfo(addr, "0", &hints;, &res;) == 0) {
   597                 /* malicious PTR record */
   598                 freeaddrinfo(res);
   599                 printf("bogus PTR record
   600 ");
   601                 return -1;
   602         }
   603         /* addr is FQDN as a result of PTR lookup */
   604 } else {
   605         /* addr is numeric string */
   606         error = getnameinfo(sa, salen, addr, sizeof(addr),
   607             NULL, 0, NI_NUMERICHOST);
   608 }
   609 
   610 @endcode
   611  
   612  
   613 
   614 @publishedAll
   615 @externallyDefinedApi
   616 */
   617 
   618 /** @fn  freeaddrinfo(struct addrinfo *ai)
   619 @param ai
   620 Refer to t() for the documentation
   621 @see bind()
   622 @see connect()
   623 @see send()
   624 @see socket()
   625 @see gai_strerror()
   626 @see gethostbyname()
   627 @see getnameinfo()
   628 @see getservent()
   629 
   630 
   631  
   632 
   633 @publishedAll
   634 @externallyDefinedApi
   635 */
   636 
   637 /** @fn  gai_strerror(int ecode)
   638 @param ecode
   639 @return   The gai_strerror function
   640 returns a pointer to the error message string corresponding to ecode. If ecode is out of range, an implementation-specific error message string is returned.
   641 
   642 @code
   643  EAI_AGAIN temporary failure in name resolution
   644  EAI_BADFLAGS
   645   invalid value for ai_flags
   646  EAI_BADHINTS
   647   invalid value for hints
   648  EAI_FAIL non-recoverable failure in name resolution
   649  EAI_FAMILY ai_family not supported
   650  EAI_MEMORY memory allocation failure
   651  EAI_NONAME hostname or servname not provided, or not known
   652  EAI_PROTOCOL
   653   resolved protocol is unknown
   654  EAI_SERVICE servname not supported for ai_socktype
   655  EAI_SOCKTYPE
   656   ai_socktype not supported
   657  EAI_SYSTEM system error returned in errno
   658 
   659 @endcode
   660   The gai_strerror function returns an error message string corresponding to the error code
   661 returned by getaddrinfo or getnameinfo .
   662 
   663  The following error codes and their meaning are defined in \#include \<netdb.h\>
   664 
   665  EAI_AGAIN temporary failure in name resolution EAI_BADFLAGS  invalid value for ai_flags EAI_BADHINTS  invalid value for hints EAI_FAIL non-recoverable failure in name resolution EAI_FAMILY ai_family not supported EAI_MEMORY memory allocation failure EAI_NONAME hostname or servname not provided, or not known EAI_PROTOCOL  resolved protocol is unknown EAI_SERVICE servname not supported for ai_socktype EAI_SOCKTYPE  ai_socktype not supported EAI_SYSTEM system error returned in errno
   666 
   667 Examples:
   668 @code
   669 #include <stdio.h>
   670 #include <netdb.h>
   671 #include <netinet/in.h>
   672 int main()
   673 {
   674       struct addrinfo *result;
   675       char hostname[80];
   676       int error;
   677       if (error = getaddrinfo("www.nokia.com",NULL, NULL, &result;))
   678       {
   679               fprintf(stderr, "error using getaddrinfo: %s
   680 ", gai_strerror(error));
   681       }
   682       if (result)
   683       {
   684               if (error = getnameinfo(result->ai_addr, sizeof(struct sockaddr), hostname, sizeof(hostname), NULL,0,0))
   685               {
   686                       printf( "error using getnameinfo: %s
   687 ", gai_strerror(error));
   688               }
   689       }
   690 return 0;
   691 }
   692 
   693 @endcode
   694 @see getaddrinfo()
   695 @see getnameinfo()
   696 
   697 
   698  
   699 
   700 @publishedAll
   701 @externallyDefinedApi
   702 */
   703 
   704 /** @fn  setservent(int f)
   705 @param f
   706 Refer to  getservent() for the documentation
   707 
   708 
   709  
   710 
   711 @publishedAll
   712 @externallyDefinedApi
   713 */
   714 
   715 /** @def h_errno
   716 
   717 defines errno
   718 
   719 @publishedAll
   720 @externallyDefinedApi
   721 */
   722 
   723 /** @def _PATH_SERVICES
   724 
   725 Defines the services path.
   726 
   727 @publishedAll
   728 @externallyDefinedApi
   729 */
   730 
   731 /** @def NETDB_INTERNAL
   732 
   733 Error return codes from gethostbyname() and gethostbyaddr(). see errno.
   734 
   735 @publishedAll
   736 @externallyDefinedApi
   737 */
   738 
   739 /** @def NETDB_SUCCESS
   740 
   741 Error return codes from gethostbyname() and gethostbyaddr(). No Problem.
   742 
   743 @publishedAll
   744 @externallyDefinedApi
   745 */
   746 
   747 /** @def HOST_NOT_FOUND
   748 
   749 Error return codes from gethostbyname() and gethostbyaddr(). Authoritative Answer Host not found.
   750 
   751 @publishedAll
   752 @externallyDefinedApi
   753 */
   754 
   755 /** @def TRY_AGAIN
   756 
   757 Error return codes from gethostbyname() and gethostbyaddr(). Non-Authoritative Host not found, or SERVERFAIL
   758 
   759 @publishedAll
   760 @externallyDefinedApi
   761 */
   762 
   763 /** @def NO_RECOVERY
   764 
   765 Error return codes from gethostbyname() and gethostbyaddr(). Non recoverable errors, FORMERR, REFUSED, NOTIMP
   766 
   767 @publishedAll
   768 @externallyDefinedApi
   769 */
   770 
   771 /** @def NO_DATA
   772 
   773 Error return codes from gethostbyname() and gethostbyaddr(). Valid name, no data record of requested type
   774 
   775 @publishedAll
   776 @externallyDefinedApi
   777 */
   778 
   779 /** @def NO_ADDRESS
   780 
   781 Error return codes from gethostbyname() and gethostbyaddr(). no address, look for MX record
   782 
   783 @publishedAll
   784 @externallyDefinedApi
   785 */
   786 
   787 /** @def EAI_AGAIN
   788 
   789 Error return codes from getaddrinfo(). emporary failure in name resolution 
   790 
   791 @publishedAll
   792 @externallyDefinedApi
   793 */
   794 
   795 /** @def EAI_BADFLAGS
   796 
   797 Error return codes from getaddrinfo(). invalid value for ai_flags
   798 
   799 @publishedAll
   800 @externallyDefinedApi
   801 */
   802 
   803 /** @def EAI_FAIL
   804 
   805 Error return codes from getaddrinfo(). non-recoverable failure in name resolution
   806 
   807 @publishedAll
   808 @externallyDefinedApi
   809 */
   810 
   811 /** @def EAI_FAMILY
   812 
   813 Error return codes from getaddrinfo(). ai_family not supported 
   814 
   815 @publishedAll
   816 @externallyDefinedApi
   817 */
   818 
   819 /** @def EAI_MEMORY
   820 
   821 Error return codes from getaddrinfo(). memory allocation failure .
   822 
   823 @publishedAll
   824 @externallyDefinedApi
   825 */
   826 
   827 /** @def EAI_NONAME
   828 
   829 Error return codes from getaddrinfo(). hostname nor servname provided, or not known.
   830 
   831 @publishedAll
   832 @externallyDefinedApi
   833 */
   834 
   835 /** @def EAI_SERVICE
   836 
   837 Error return codes from getaddrinfo(). servname not supported for ai_socktype.
   838 
   839 @publishedAll
   840 @externallyDefinedApi
   841 */
   842 
   843 /** @def EAI_SOCKTYPE
   844 
   845 Error return codes from getaddrinfo(). ai_socktype not supported 
   846 
   847 @publishedAll
   848 @externallyDefinedApi
   849 */
   850 
   851 /** @def EAI_SYSTEM
   852 
   853 Error return codes from getaddrinfo(). system error returned in errno.
   854 
   855 @publishedAll
   856 @externallyDefinedApi
   857 */
   858 
   859 /** @def EAI_SOCKTYPE
   860 
   861 Error return codes from getaddrinfo(). 
   862 
   863 @publishedAll
   864 @externallyDefinedApi
   865 */
   866  
   867 /** @def EAI_BADHINTS
   868 
   869 Error return codes from getaddrinfo(). 
   870 
   871 @publishedAll
   872 @externallyDefinedApi
   873 */
   874 
   875 /** @def EAI_PROTOCOL
   876 
   877 Error return codes from getaddrinfo(). 
   878 
   879 @publishedAll
   880 @externallyDefinedApi
   881 */
   882 
   883 /** @def EAI_MAX
   884 
   885 Error return codes from getaddrinfo(). 
   886 
   887 @publishedAll
   888 @externallyDefinedApi
   889 */
   890 
   891 /** @def AI_PASSIVE
   892 
   893 Flag values for getaddrinfo(). get address to use bind() 
   894 
   895 @publishedAll
   896 @externallyDefinedApi
   897 */
   898 
   899 /** @def AI_NUMERICHOST
   900 
   901 Flag values for getaddrinfo(). prevent host name resolution
   902 
   903 @publishedAll
   904 @externallyDefinedApi
   905 */
   906 
   907 /** @def AI_CANONNAME
   908 
   909 Flag values for getaddrinfo(). fill ai_canonname
   910 
   911 @publishedAll
   912 @externallyDefinedApi
   913 */
   914 
   915 /** @def AI_NUMERICSERV
   916 
   917 Flag values for getaddrinfo(). prevent service name resolution 
   918 
   919 @publishedAll
   920 @externallyDefinedApi
   921 */
   922 
   923 /** @def AI_MASK
   924 
   925 valid flags for addrinfo (not a standard def, apps should not use it) 
   926 
   927 @publishedAll
   928 @externallyDefinedApi
   929 */
   930 
   931 /** @def AI_ALL
   932 
   933 IPv6 and IPv4-mapped (with AI_V4MAPPED) 
   934 
   935 @publishedAll
   936 @externallyDefinedApi
   937 */
   938 
   939 /** @def AI_V4MAPPED_CFG
   940 
   941 accept IPv4-mapped if kernel supports
   942 
   943 @publishedAll
   944 @externallyDefinedApi
   945 */
   946 
   947 /** @def AI_ADDRCONFIG
   948 
   949 only if any address is assigned
   950 
   951 @publishedAll
   952 @externallyDefinedApi
   953 */
   954 
   955 /** @def AI_V4MAPPED
   956 
   957 accept IPv4-mapped IPv6 address
   958 
   959 @publishedAll
   960 @externallyDefinedApi
   961 */
   962 
   963 /** @def AI_DEFAULT
   964 
   965 special recommended flags for getipnodebyname
   966 
   967 @publishedAll
   968 @externallyDefinedApi
   969 */
   970 
   971 /** @def NI_MAXHOST
   972 
   973 Constants for getnameinfo()
   974 
   975 @publishedAll
   976 @externallyDefinedApi
   977 */
   978 
   979 /** @def NI_MAXSERV
   980 
   981 Constants for getnameinfo()
   982 
   983 @publishedAll
   984 @externallyDefinedApi
   985 */
   986 
   987 /** @def NI_NOFQDN
   988 
   989 Flag values for getnameinfo().
   990 Only the nodename portion of the FQDN is returned for local hosts.
   991 
   992 @publishedAll
   993 @externallyDefinedApi
   994 */
   995 
   996 /** @def NI_NUMERICHOST
   997 
   998 Flag values for getnameinfo().
   999 The numeric form of the node's address is returned instead of its name.
  1000 
  1001 @publishedAll
  1002 @externallyDefinedApi
  1003 */
  1004 
  1005 /** @def NI_NAMEREQD
  1006 
  1007 Flag values for getnameinfo().
  1008 Return an error if the node's name cannot be located in the database.
  1009 
  1010 @publishedAll
  1011 @externallyDefinedApi
  1012 */
  1013 
  1014 /** @def NI_NUMERICSERV
  1015 
  1016 Flag values for getnameinfo().
  1017 The numeric form of the service address is returned instead of its name.
  1018 
  1019 @publishedAll
  1020 @externallyDefinedApi
  1021 */
  1022 
  1023 /** @def NI_DGRAM
  1024 
  1025 Flag values for getnameinfo().
  1026 Indicates that the service is a datagram service (SOCK_DGRAM).
  1027 
  1028 @publishedAll
  1029 @externallyDefinedApi
  1030 */
  1031 
  1032 /** @def SCOPE_DELIMITER
  1033 
  1034 Scope delimit character
  1035 
  1036 @publishedAll
  1037 @externallyDefinedApi
  1038 */
  1039 
  1040 /** @struct hostent
  1041 
  1042 Structures returned by network data base library.  
  1043 All addresses are supplied in host order, and returned in network order (suitable for use in system calls).
  1044 
  1045 @publishedAll
  1046 @externallyDefinedApi
  1047 */
  1048 
  1049 /** @var hostent::h_name
  1050 official name of host
  1051 */
  1052 
  1053 /** @var hostent::h_aliases
  1054 alias list 
  1055 */
  1056 
  1057 /** @var hostent::h_addrtype
  1058 host address type
  1059 */
  1060 
  1061 /** @var hostent::h_length
  1062 length of address
  1063 */
  1064 
  1065 /** @var hostent::h_addr_list
  1066 list of addresses from name server
  1067 */
  1068 
  1069 /** @struct netent
  1070 
  1071 Contains following members,
  1072 
  1073 @publishedAll
  1074 @externallyDefinedApi
  1075 */
  1076 
  1077 /** @var netent::n_name
  1078 official name of net
  1079 */
  1080 
  1081 /** @var netent::n_aliases
  1082 alias list 
  1083 */
  1084 
  1085 /** @var netent::n_addrtype
  1086 net address type
  1087 */
  1088 
  1089 /** @var netent::n_net
  1090 network
  1091 */
  1092 
  1093 /** @struct servent
  1094 
  1095 Includes following members,
  1096 
  1097 @publishedAll
  1098 @externallyDefinedApi
  1099 */
  1100 
  1101 /** @var servent::s_name
  1102 official service name
  1103 */
  1104 
  1105 /** @var servent::s_aliases
  1106 alias list
  1107 */
  1108 
  1109 /** @var servent::s_port
  1110  port X
  1111 */
  1112 
  1113 /** @var servent::s_proto
  1114 protocol to use 
  1115 */
  1116 
  1117 /** @struct protoent
  1118 
  1119 Includes the following members,
  1120 
  1121 @publishedAll
  1122 @externallyDefinedApi
  1123 */
  1124 
  1125 /** @var protoent::p_name
  1126 official protocol name
  1127 */
  1128 
  1129 /** @var protoent::p_aliases
  1130 alias list
  1131 */
  1132 
  1133 /** @var protoent::p_proto
  1134 protocol X
  1135 */
  1136 
  1137 /** @struct addrinfo
  1138 
  1139 Includes the following members,
  1140 
  1141 @publishedAll
  1142 @externallyDefinedApi
  1143 */
  1144 
  1145 /** @var addrinfo::ai_flags
  1146 AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST 
  1147 */
  1148 
  1149 /** @var addrinfo::ai_family
  1150 PF_xxx
  1151 */
  1152 
  1153 /** @var addrinfo::ai_socktype
  1154 SOCK_xxx 
  1155 */
  1156 
  1157 /** @var addrinfo::ai_protocol
  1158 0 or IPPROTO_xxx for IPv4 and IPv6
  1159 */
  1160 
  1161 /** @var addrinfo::ai_addrlen
  1162 length of ai_addr
  1163 */
  1164 
  1165 /** @var addrinfo::ai_canonname
  1166  canonical name for hostname 
  1167 */
  1168 
  1169 /** @var addrinfo::ai_addr
  1170 binary address
  1171 */
  1172 
  1173 /** @var addrinfo::ai_next
  1174 next structure in linked list
  1175 */
  1176 
  1177 
  1178 /** @typedef  typedef __size_t	size_t
  1179 
  1180 Used for sizes of objects.
  1181 
  1182 @publishedAll
  1183 @externallyDefinedApi
  1184 */
  1185 
  1186 /** @typedef  typedef __socklen_t	socklen_t
  1187 
  1188 Socket address length type.
  1189 
  1190 @publishedAll
  1191 @externallyDefinedApi
  1192 */
  1193 
  1194 /** @typedef  typedef __uint32_t	uint32_t
  1195 
  1196 Unsigned long int
  1197 
  1198 @publishedAll
  1199 @externallyDefinedApi
  1200 */
  1201 
  1202 
  1203 
  1204 
  1205 
  1206 
  1207 
  1208 
  1209 
  1210 
  1211 
  1212 
  1213