1*219b2ee8SDavid du Colombier #ifndef __NETDB_H__ 2*219b2ee8SDavid du Colombier #define __NETDB_H__ 3*219b2ee8SDavid du Colombier 4*219b2ee8SDavid du Colombier #ifndef _BSD_EXTENSION 5*219b2ee8SDavid du Colombier This header file is an extension to ANSI/POSIX 6*219b2ee8SDavid du Colombier #endif 7*219b2ee8SDavid du Colombier 8*219b2ee8SDavid du Colombier #pragma lib "/$M/lib/ape/libbsd.a" 9*219b2ee8SDavid du Colombier 10*219b2ee8SDavid du Colombier /*- 11*219b2ee8SDavid du Colombier * Copyright (c) 1980, 1983, 1988 Regents of the University of California. 12*219b2ee8SDavid du Colombier * All rights reserved. 13*219b2ee8SDavid du Colombier * 14*219b2ee8SDavid du Colombier * Redistribution and use in source and binary forms are permitted 15*219b2ee8SDavid du Colombier * provided that: (1) source distributions retain this entire copyright 16*219b2ee8SDavid du Colombier * notice and comment, and (2) distributions including binaries display 17*219b2ee8SDavid du Colombier * the following acknowledgement: ``This product includes software 18*219b2ee8SDavid du Colombier * developed by the University of California, Berkeley and its contributors'' 19*219b2ee8SDavid du Colombier * in the documentation or other materials provided with the distribution 20*219b2ee8SDavid du Colombier * and in all advertising materials mentioning features or use of this 21*219b2ee8SDavid du Colombier * software. Neither the name of the University nor the names of its 22*219b2ee8SDavid du Colombier * contributors may be used to endorse or promote products derived 23*219b2ee8SDavid du Colombier * from this software without specific prior written permission. 24*219b2ee8SDavid du Colombier * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 25*219b2ee8SDavid du Colombier * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 26*219b2ee8SDavid du Colombier * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 27*219b2ee8SDavid du Colombier * 28*219b2ee8SDavid du Colombier * @(#)netdb.h 5.11 (Berkeley) 5/21/90 29*219b2ee8SDavid du Colombier */ 30*219b2ee8SDavid du Colombier 31*219b2ee8SDavid du Colombier #ifdef __cplusplus 32*219b2ee8SDavid du Colombier extern "C" { 33*219b2ee8SDavid du Colombier #endif 34*219b2ee8SDavid du Colombier 35*219b2ee8SDavid du Colombier /* 36*219b2ee8SDavid du Colombier * Structures returned by network data base library. All addresses are 37*219b2ee8SDavid du Colombier * supplied in host order, and returned in network order (suitable for 38*219b2ee8SDavid du Colombier * use in system calls). 39*219b2ee8SDavid du Colombier */ 40*219b2ee8SDavid du Colombier struct hostent { 41*219b2ee8SDavid du Colombier char *h_name; /* official name of host */ 42*219b2ee8SDavid du Colombier char **h_aliases; /* alias list */ 43*219b2ee8SDavid du Colombier int h_addrtype; /* host address type */ 44*219b2ee8SDavid du Colombier int h_length; /* length of address */ 45*219b2ee8SDavid du Colombier char **h_addr_list; /* list of addresses from name server */ 46*219b2ee8SDavid du Colombier #define h_addr h_addr_list[0] /* address, for backward compatiblity */ 47*219b2ee8SDavid du Colombier }; 48*219b2ee8SDavid du Colombier 49*219b2ee8SDavid du Colombier /* 50*219b2ee8SDavid du Colombier * Assumption here is that a network number 51*219b2ee8SDavid du Colombier * fits in 32 bits -- probably a poor one. 52*219b2ee8SDavid du Colombier */ 53*219b2ee8SDavid du Colombier struct netent { 54*219b2ee8SDavid du Colombier char *n_name; /* official name of net */ 55*219b2ee8SDavid du Colombier char **n_aliases; /* alias list */ 56*219b2ee8SDavid du Colombier int n_addrtype; /* net address type */ 57*219b2ee8SDavid du Colombier unsigned long n_net; /* network # */ 58*219b2ee8SDavid du Colombier }; 59*219b2ee8SDavid du Colombier 60*219b2ee8SDavid du Colombier struct servent { 61*219b2ee8SDavid du Colombier char *s_name; /* official service name */ 62*219b2ee8SDavid du Colombier char **s_aliases; /* alias list */ 63*219b2ee8SDavid du Colombier int s_port; /* port # */ 64*219b2ee8SDavid du Colombier char *s_proto; /* protocol to use */ 65*219b2ee8SDavid du Colombier }; 66*219b2ee8SDavid du Colombier 67*219b2ee8SDavid du Colombier struct protoent { 68*219b2ee8SDavid du Colombier char *p_name; /* official protocol name */ 69*219b2ee8SDavid du Colombier char **p_aliases; /* alias list */ 70*219b2ee8SDavid du Colombier int p_proto; /* protocol # */ 71*219b2ee8SDavid du Colombier }; 72*219b2ee8SDavid du Colombier 73*219b2ee8SDavid du Colombier /* from 4.0 RPCSRC */ 74*219b2ee8SDavid du Colombier struct rpcent { 75*219b2ee8SDavid du Colombier char *r_name; /* name of server for this rpc program */ 76*219b2ee8SDavid du Colombier char **r_aliases; /* alias list */ 77*219b2ee8SDavid du Colombier int r_number; /* rpc program number */ 78*219b2ee8SDavid du Colombier }; 79*219b2ee8SDavid du Colombier 80*219b2ee8SDavid du Colombier extern struct hostent *gethostbyname(const char *), 81*219b2ee8SDavid du Colombier *gethostbyaddr(const void *, int, int), 82*219b2ee8SDavid du Colombier *gethostent(void); 83*219b2ee8SDavid du Colombier extern struct netent *getnetbyname(const char *), 84*219b2ee8SDavid du Colombier *getnetbyaddr(long, int), 85*219b2ee8SDavid du Colombier *getnetent(void); 86*219b2ee8SDavid du Colombier extern struct servent *getservbyname(const char *, const char *), 87*219b2ee8SDavid du Colombier *getservbyport(int, const char *), 88*219b2ee8SDavid du Colombier *getservent(void); 89*219b2ee8SDavid du Colombier extern struct protoent *getprotobyname(const char *), 90*219b2ee8SDavid du Colombier *getprotobynumber(int), 91*219b2ee8SDavid du Colombier *getprotoent(void); 92*219b2ee8SDavid du Colombier extern struct rpcent *getrpcbyname(const char *), 93*219b2ee8SDavid du Colombier *getrpcbynumber(int), 94*219b2ee8SDavid du Colombier *getrpcent(void); 95*219b2ee8SDavid du Colombier extern void sethostent(int), endhostent(void), 96*219b2ee8SDavid du Colombier setnetent(int), endnetent(void), 97*219b2ee8SDavid du Colombier setservent(int), endservent(void), 98*219b2ee8SDavid du Colombier setprotoent(int), endprotoent(void), 99*219b2ee8SDavid du Colombier setrpcent(int), endrpcent(void); 100*219b2ee8SDavid du Colombier 101*219b2ee8SDavid du Colombier /* 102*219b2ee8SDavid du Colombier * Error return codes from gethostbyname() and gethostbyaddr() 103*219b2ee8SDavid du Colombier * (left in extern int h_errno). 104*219b2ee8SDavid du Colombier */ 105*219b2ee8SDavid du Colombier extern int h_errno; 106*219b2ee8SDavid du Colombier extern void herror(const char *); 107*219b2ee8SDavid du Colombier extern char *hstrerror(int); 108*219b2ee8SDavid du Colombier 109*219b2ee8SDavid du Colombier #define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found */ 110*219b2ee8SDavid du Colombier #define TRY_AGAIN 2 /* Non-Authoritive Host not found, or SERVERFAIL */ 111*219b2ee8SDavid du Colombier #define NO_RECOVERY 3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */ 112*219b2ee8SDavid du Colombier #define NO_DATA 4 /* Valid name, no data record of requested type */ 113*219b2ee8SDavid du Colombier #define NO_ADDRESS NO_DATA /* no address, look for MX record */ 114*219b2ee8SDavid du Colombier 115*219b2ee8SDavid du Colombier #define __HOST_SVC_NOT_AVAIL 99 /* libc internal use only */ 116*219b2ee8SDavid du Colombier 117*219b2ee8SDavid du Colombier #ifdef __cplusplus 118*219b2ee8SDavid du Colombier } 119*219b2ee8SDavid du Colombier #endif 120*219b2ee8SDavid du Colombier 121*219b2ee8SDavid du Colombier #endif /* !__NETDB_H__ */ 122