196f79dcaSHajimu UMEMOTO /*- 296f79dcaSHajimu UMEMOTO * Copyright (C) 2005 The FreeBSD Project. All rights reserved. 396f79dcaSHajimu UMEMOTO * 496f79dcaSHajimu UMEMOTO * Redistribution and use in source and binary forms, with or without 596f79dcaSHajimu UMEMOTO * modification, are permitted provided that the following conditions 696f79dcaSHajimu UMEMOTO * are met: 796f79dcaSHajimu UMEMOTO * 1. Redistributions of source code must retain the above copyright 896f79dcaSHajimu UMEMOTO * notice, this list of conditions and the following disclaimer. 996f79dcaSHajimu UMEMOTO * 2. Redistributions in binary form must reproduce the above copyright 1096f79dcaSHajimu UMEMOTO * notice, this list of conditions and the following disclaimer in the 1196f79dcaSHajimu UMEMOTO * documentation and/or other materials provided with the distribution. 1296f79dcaSHajimu UMEMOTO * 1396f79dcaSHajimu UMEMOTO * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1496f79dcaSHajimu UMEMOTO * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1596f79dcaSHajimu UMEMOTO * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1696f79dcaSHajimu UMEMOTO * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 1796f79dcaSHajimu UMEMOTO * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1896f79dcaSHajimu UMEMOTO * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 1996f79dcaSHajimu UMEMOTO * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2096f79dcaSHajimu UMEMOTO * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2196f79dcaSHajimu UMEMOTO * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2296f79dcaSHajimu UMEMOTO * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2396f79dcaSHajimu UMEMOTO * SUCH DAMAGE. 2496f79dcaSHajimu UMEMOTO * 2596f79dcaSHajimu UMEMOTO * $FreeBSD$ 2696f79dcaSHajimu UMEMOTO */ 2796f79dcaSHajimu UMEMOTO 2896f79dcaSHajimu UMEMOTO #ifndef _NETDB_PRIVATE_H_ 2996f79dcaSHajimu UMEMOTO #define _NETDB_PRIVATE_H_ 3096f79dcaSHajimu UMEMOTO 31aa2f4ec7SHajimu UMEMOTO #include <sys/_types.h> 32a2a77501SHajimu UMEMOTO #include <stdio.h> /* XXX: for FILE */ 3396f79dcaSHajimu UMEMOTO 34aa2f4ec7SHajimu UMEMOTO #ifndef _UINT32_T_DECLARED 35aa2f4ec7SHajimu UMEMOTO typedef __uint32_t uint32_t; 36aa2f4ec7SHajimu UMEMOTO #define _UINT32_T_DECLARED 37aa2f4ec7SHajimu UMEMOTO #endif 38aa2f4ec7SHajimu UMEMOTO 39a2a77501SHajimu UMEMOTO #define _MAXALIASES 35 40a2a77501SHajimu UMEMOTO #define _MAXLINELEN 1024 41a2a77501SHajimu UMEMOTO #define _MAXADDRS 35 42aa2f4ec7SHajimu UMEMOTO #define _HOSTBUFSIZE (8 * 1024) 43a2a77501SHajimu UMEMOTO #define _NETBUFSIZE 1025 44a2a77501SHajimu UMEMOTO 45aa2f4ec7SHajimu UMEMOTO struct hostent_data { 46aa2f4ec7SHajimu UMEMOTO uint32_t host_addr[4]; /* IPv4 or IPv6 */ 47aa2f4ec7SHajimu UMEMOTO char *h_addr_ptrs[_MAXADDRS + 1]; 48aa2f4ec7SHajimu UMEMOTO char *host_aliases[_MAXALIASES]; 49aa2f4ec7SHajimu UMEMOTO char hostbuf[_HOSTBUFSIZE]; 50aa2f4ec7SHajimu UMEMOTO FILE *hostf; 51aa2f4ec7SHajimu UMEMOTO int stayopen; 52aa2f4ec7SHajimu UMEMOTO #ifdef YP 53aa2f4ec7SHajimu UMEMOTO char *yp_domain; 54aa2f4ec7SHajimu UMEMOTO #endif 55aa2f4ec7SHajimu UMEMOTO }; 56aa2f4ec7SHajimu UMEMOTO 57a2a77501SHajimu UMEMOTO struct netent_data { 58a2a77501SHajimu UMEMOTO char *net_aliases[_MAXALIASES]; 59a2a77501SHajimu UMEMOTO char netbuf[_NETBUFSIZE]; 60a2a77501SHajimu UMEMOTO FILE *netf; 61a2a77501SHajimu UMEMOTO int stayopen; 62a2a77501SHajimu UMEMOTO #ifdef YP 63a2a77501SHajimu UMEMOTO char *yp_domain; 64a2a77501SHajimu UMEMOTO #endif 65a2a77501SHajimu UMEMOTO }; 6696f79dcaSHajimu UMEMOTO 6792b6f7beSHajimu UMEMOTO struct protoent_data { 6892b6f7beSHajimu UMEMOTO FILE *fp; 69a2a77501SHajimu UMEMOTO char *aliases[_MAXALIASES]; 7092b6f7beSHajimu UMEMOTO int stayopen; 71a2a77501SHajimu UMEMOTO char line[_MAXLINELEN + 1]; 7292b6f7beSHajimu UMEMOTO }; 7392b6f7beSHajimu UMEMOTO 7496f79dcaSHajimu UMEMOTO struct servent_data { 7596f79dcaSHajimu UMEMOTO FILE *fp; 76a2a77501SHajimu UMEMOTO char *aliases[_MAXALIASES]; 7796f79dcaSHajimu UMEMOTO int stayopen; 78a2a77501SHajimu UMEMOTO char line[_MAXLINELEN + 1]; 7996f79dcaSHajimu UMEMOTO #ifdef YP 80a87b3988SHajimu UMEMOTO int yp_stepping; 81a87b3988SHajimu UMEMOTO char *yp_name; 82a87b3988SHajimu UMEMOTO char *yp_proto; 83a87b3988SHajimu UMEMOTO int yp_port; 8496f79dcaSHajimu UMEMOTO char *yp_domain; 85a87b3988SHajimu UMEMOTO char *yp_key; 86a87b3988SHajimu UMEMOTO int yp_keylen; 8796f79dcaSHajimu UMEMOTO #endif 8896f79dcaSHajimu UMEMOTO }; 8996f79dcaSHajimu UMEMOTO 90aa2f4ec7SHajimu UMEMOTO struct hostdata { 91aa2f4ec7SHajimu UMEMOTO struct hostent host; 92aa2f4ec7SHajimu UMEMOTO struct hostent_data data; 93aa2f4ec7SHajimu UMEMOTO }; 94aa2f4ec7SHajimu UMEMOTO 95a2a77501SHajimu UMEMOTO struct netdata { 96a2a77501SHajimu UMEMOTO struct netent net; 97a2a77501SHajimu UMEMOTO struct netent_data data; 98a2a77501SHajimu UMEMOTO }; 99a2a77501SHajimu UMEMOTO 100a2a77501SHajimu UMEMOTO struct protodata { 101a2a77501SHajimu UMEMOTO struct protoent proto; 102a2a77501SHajimu UMEMOTO struct protoent_data data; 103a2a77501SHajimu UMEMOTO }; 104a2a77501SHajimu UMEMOTO 10596f79dcaSHajimu UMEMOTO struct servdata { 10696f79dcaSHajimu UMEMOTO struct servent serv; 10796f79dcaSHajimu UMEMOTO struct servent_data data; 10896f79dcaSHajimu UMEMOTO }; 10996f79dcaSHajimu UMEMOTO 110aa2f4ec7SHajimu UMEMOTO #define endhostent_r __endhostent_r 111a2a77501SHajimu UMEMOTO #define endnetent_r __endnetent_r 11292b6f7beSHajimu UMEMOTO #define endprotoent_r __endprotoent_r 113109e5709SHajimu UMEMOTO #define endservent_r __endservent_r 114aa2f4ec7SHajimu UMEMOTO #define gethostbyaddr_r __gethostbyaddr_r 115aa2f4ec7SHajimu UMEMOTO #define gethostbyname_r __gethostbyname_r 116aa2f4ec7SHajimu UMEMOTO #define gethostbyname2_r __gethostbyname2_r 117aa2f4ec7SHajimu UMEMOTO #define gethostent_r __gethostent_r 118a2a77501SHajimu UMEMOTO #define getnetbyaddr_r __getnetbyaddr_r 119a2a77501SHajimu UMEMOTO #define getnetbyname_r __getnetbyname_r 120a2a77501SHajimu UMEMOTO #define getnetent_r __getnetent_r 12192b6f7beSHajimu UMEMOTO #define getprotobyname_r __getprotobyname_r 12292b6f7beSHajimu UMEMOTO #define getprotobynumber_r __getprotobynumber_r 12392b6f7beSHajimu UMEMOTO #define getprotoent_r __getprotoent_r 124109e5709SHajimu UMEMOTO #define getservbyname_r __getservbyname_r 125109e5709SHajimu UMEMOTO #define getservbyport_r __getservbyport_r 126109e5709SHajimu UMEMOTO #define getservent_r __getservent_r 127aa2f4ec7SHajimu UMEMOTO #define sethostent_r __sethostent_r 128a2a77501SHajimu UMEMOTO #define setnetent_r __setnetent_r 12992b6f7beSHajimu UMEMOTO #define setprotoent_r __setprotoent_r 130109e5709SHajimu UMEMOTO #define setservent_r __setservent_r 13196f79dcaSHajimu UMEMOTO 132aa2f4ec7SHajimu UMEMOTO struct hostdata *__hostdata_init(void); 133a2a77501SHajimu UMEMOTO struct netdata *__netdata_init(void); 13492b6f7beSHajimu UMEMOTO struct protodata *__protodata_init(void); 135109e5709SHajimu UMEMOTO struct servdata *__servdata_init(void); 136bcb131aaSHajimu UMEMOTO void _endhostdnsent(void); 137aa2f4ec7SHajimu UMEMOTO void _endhosthtent(struct hostent_data *); 138bcb131aaSHajimu UMEMOTO void _endnetdnsent(void); 139a2a77501SHajimu UMEMOTO void _endnethtent(struct netent_data *); 140bcb131aaSHajimu UMEMOTO struct hostent *_gethostbynisaddr(const char *, int, int); 141bcb131aaSHajimu UMEMOTO struct hostent *_gethostbynisname(const char *, int); 142bcb131aaSHajimu UMEMOTO void _map_v4v6_address(const char *, char *); 143850bc9afSHajimu UMEMOTO void _map_v4v6_hostent(struct hostent *, char **, char *); 144bcb131aaSHajimu UMEMOTO void _sethostdnsent(int); 145aa2f4ec7SHajimu UMEMOTO void _sethosthtent(int, struct hostent_data *); 146bcb131aaSHajimu UMEMOTO void _setnetdnsent(int); 147a2a77501SHajimu UMEMOTO void _setnethtent(int, struct netent_data *); 148aa2f4ec7SHajimu UMEMOTO void endhostent_r(struct hostent_data *); 149a2a77501SHajimu UMEMOTO void endnetent_r(struct netent_data *); 15092b6f7beSHajimu UMEMOTO void endprotoent_r(struct protoent_data *); 15196f79dcaSHajimu UMEMOTO void endservent_r(struct servent_data *); 152aa2f4ec7SHajimu UMEMOTO int gethostbyaddr_r(const char *, int, int, struct hostent *, 153aa2f4ec7SHajimu UMEMOTO struct hostent_data *); 154aa2f4ec7SHajimu UMEMOTO int gethostbyname_r(const char *, struct hostent *, struct hostent_data *); 155aa2f4ec7SHajimu UMEMOTO int gethostbyname2_r(const char *, int, struct hostent *, 156aa2f4ec7SHajimu UMEMOTO struct hostent_data *); 157aa2f4ec7SHajimu UMEMOTO int gethostent_r(struct hostent *, struct hostent_data *); 158a2a77501SHajimu UMEMOTO int getnetbyaddr_r(unsigned long addr, int af, struct netent *, 159a2a77501SHajimu UMEMOTO struct netent_data *); 160a2a77501SHajimu UMEMOTO int getnetbyname_r(const char *, struct netent *, struct netent_data *); 161a2a77501SHajimu UMEMOTO int getnetent_r(struct netent *, struct netent_data *); 16292b6f7beSHajimu UMEMOTO int getprotobyname_r(const char *, struct protoent *, struct protoent_data *); 16392b6f7beSHajimu UMEMOTO int getprotobynumber_r(int, struct protoent *, struct protoent_data *); 16492b6f7beSHajimu UMEMOTO int getprotoent_r(struct protoent *, struct protoent_data *); 16596f79dcaSHajimu UMEMOTO int getservbyname_r(const char *, const char *, struct servent *, 16696f79dcaSHajimu UMEMOTO struct servent_data *); 16796f79dcaSHajimu UMEMOTO int getservbyport_r(int, const char *, struct servent *, 16896f79dcaSHajimu UMEMOTO struct servent_data *); 16996f79dcaSHajimu UMEMOTO int getservent_r(struct servent *, struct servent_data *); 170aa2f4ec7SHajimu UMEMOTO void sethostent_r(int, struct hostent_data *); 171a2a77501SHajimu UMEMOTO void setnetent_r(int, struct netent_data *); 17292b6f7beSHajimu UMEMOTO void setprotoent_r(int, struct protoent_data *); 17396f79dcaSHajimu UMEMOTO void setservent_r(int, struct servent_data *); 17496f79dcaSHajimu UMEMOTO 17596f79dcaSHajimu UMEMOTO #endif /* _NETDB_PRIVATE_H_ */ 176