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 31a2a77501SHajimu UMEMOTO #include <stdio.h> /* XXX: for FILE */ 3296f79dcaSHajimu UMEMOTO 33a2a77501SHajimu UMEMOTO #define _MAXALIASES 35 34a2a77501SHajimu UMEMOTO #define _MAXLINELEN 1024 35a2a77501SHajimu UMEMOTO #define _MAXADDRS 35 36a2a77501SHajimu UMEMOTO #define _NETBUFSIZE 1025 37a2a77501SHajimu UMEMOTO 38a2a77501SHajimu UMEMOTO struct netent_data { 39a2a77501SHajimu UMEMOTO char *net_aliases[_MAXALIASES]; 40a2a77501SHajimu UMEMOTO char netbuf[_NETBUFSIZE]; 41a2a77501SHajimu UMEMOTO FILE *netf; 42a2a77501SHajimu UMEMOTO int stayopen; 43a2a77501SHajimu UMEMOTO #ifdef YP 44a2a77501SHajimu UMEMOTO char *yp_domain; 45a2a77501SHajimu UMEMOTO #endif 46a2a77501SHajimu UMEMOTO }; 4796f79dcaSHajimu UMEMOTO 4892b6f7beSHajimu UMEMOTO struct protoent_data { 4992b6f7beSHajimu UMEMOTO FILE *fp; 50a2a77501SHajimu UMEMOTO char *aliases[_MAXALIASES]; 5192b6f7beSHajimu UMEMOTO int stayopen; 52a2a77501SHajimu UMEMOTO char line[_MAXLINELEN + 1]; 5392b6f7beSHajimu UMEMOTO }; 5492b6f7beSHajimu UMEMOTO 5596f79dcaSHajimu UMEMOTO struct servent_data { 5696f79dcaSHajimu UMEMOTO FILE *fp; 57a2a77501SHajimu UMEMOTO char *aliases[_MAXALIASES]; 5896f79dcaSHajimu UMEMOTO int stayopen; 59a2a77501SHajimu UMEMOTO char line[_MAXLINELEN + 1]; 6096f79dcaSHajimu UMEMOTO #ifdef YP 61a87b3988SHajimu UMEMOTO int yp_stepping; 62a87b3988SHajimu UMEMOTO char *yp_name; 63a87b3988SHajimu UMEMOTO char *yp_proto; 64a87b3988SHajimu UMEMOTO int yp_port; 6596f79dcaSHajimu UMEMOTO char *yp_domain; 66a87b3988SHajimu UMEMOTO char *yp_key; 67a87b3988SHajimu UMEMOTO int yp_keylen; 6896f79dcaSHajimu UMEMOTO #endif 6996f79dcaSHajimu UMEMOTO }; 7096f79dcaSHajimu UMEMOTO 71a2a77501SHajimu UMEMOTO struct netdata { 72a2a77501SHajimu UMEMOTO struct netent net; 73a2a77501SHajimu UMEMOTO struct netent_data data; 74a2a77501SHajimu UMEMOTO }; 75a2a77501SHajimu UMEMOTO 76a2a77501SHajimu UMEMOTO struct protodata { 77a2a77501SHajimu UMEMOTO struct protoent proto; 78a2a77501SHajimu UMEMOTO struct protoent_data data; 79a2a77501SHajimu UMEMOTO }; 80a2a77501SHajimu UMEMOTO 8196f79dcaSHajimu UMEMOTO struct servdata { 8296f79dcaSHajimu UMEMOTO struct servent serv; 8396f79dcaSHajimu UMEMOTO struct servent_data data; 8496f79dcaSHajimu UMEMOTO }; 8596f79dcaSHajimu UMEMOTO 86a2a77501SHajimu UMEMOTO #define endnetent_r __endnetent_r 8792b6f7beSHajimu UMEMOTO #define endprotoent_r __endprotoent_r 88109e5709SHajimu UMEMOTO #define endservent_r __endservent_r 89a2a77501SHajimu UMEMOTO #define getnetbyaddr_r __getnetbyaddr_r 90a2a77501SHajimu UMEMOTO #define getnetbyname_r __getnetbyname_r 91a2a77501SHajimu UMEMOTO #define getnetent_r __getnetent_r 9292b6f7beSHajimu UMEMOTO #define getprotobyname_r __getprotobyname_r 9392b6f7beSHajimu UMEMOTO #define getprotobynumber_r __getprotobynumber_r 9492b6f7beSHajimu UMEMOTO #define getprotoent_r __getprotoent_r 95109e5709SHajimu UMEMOTO #define getservbyname_r __getservbyname_r 96109e5709SHajimu UMEMOTO #define getservbyport_r __getservbyport_r 97109e5709SHajimu UMEMOTO #define getservent_r __getservent_r 98a2a77501SHajimu UMEMOTO #define setnetent_r __setnetent_r 9992b6f7beSHajimu UMEMOTO #define setprotoent_r __setprotoent_r 100109e5709SHajimu UMEMOTO #define setservent_r __setservent_r 10196f79dcaSHajimu UMEMOTO 102a2a77501SHajimu UMEMOTO struct netdata *__netdata_init(void); 10392b6f7beSHajimu UMEMOTO struct protodata *__protodata_init(void); 104109e5709SHajimu UMEMOTO struct servdata *__servdata_init(void); 105bcb131aaSHajimu UMEMOTO void _endhostdnsent(void); 106bcb131aaSHajimu UMEMOTO void _endhosthtent(void); 107bcb131aaSHajimu UMEMOTO void _endnetdnsent(void); 108a2a77501SHajimu UMEMOTO void _endnethtent(struct netent_data *); 109bcb131aaSHajimu UMEMOTO struct hostent *_gethostbynisaddr(const char *, int, int); 110bcb131aaSHajimu UMEMOTO struct hostent *_gethostbynisname(const char *, int); 111bcb131aaSHajimu UMEMOTO void _map_v4v6_address(const char *, char *); 112bcb131aaSHajimu UMEMOTO void _map_v4v6_hostent(struct hostent *, char **, char **); 113bcb131aaSHajimu UMEMOTO void _sethostdnsent(int); 114bcb131aaSHajimu UMEMOTO void _sethosthtent(int); 115bcb131aaSHajimu UMEMOTO void _setnetdnsent(int); 116a2a77501SHajimu UMEMOTO void _setnethtent(int, struct netent_data *); 117a2a77501SHajimu UMEMOTO void endnetent_r(struct netent_data *); 11892b6f7beSHajimu UMEMOTO void endprotoent_r(struct protoent_data *); 11996f79dcaSHajimu UMEMOTO void endservent_r(struct servent_data *); 120a2a77501SHajimu UMEMOTO int getnetbyaddr_r(unsigned long addr, int af, struct netent *, 121a2a77501SHajimu UMEMOTO struct netent_data *); 122a2a77501SHajimu UMEMOTO int getnetbyname_r(const char *, struct netent *, struct netent_data *); 123a2a77501SHajimu UMEMOTO int getnetent_r(struct netent *, struct netent_data *); 12492b6f7beSHajimu UMEMOTO int getprotobyname_r(const char *, struct protoent *, struct protoent_data *); 12592b6f7beSHajimu UMEMOTO int getprotobynumber_r(int, struct protoent *, struct protoent_data *); 12692b6f7beSHajimu UMEMOTO int getprotoent_r(struct protoent *, struct protoent_data *); 12796f79dcaSHajimu UMEMOTO int getservbyname_r(const char *, const char *, struct servent *, 12896f79dcaSHajimu UMEMOTO struct servent_data *); 12996f79dcaSHajimu UMEMOTO int getservbyport_r(int, const char *, struct servent *, 13096f79dcaSHajimu UMEMOTO struct servent_data *); 13196f79dcaSHajimu UMEMOTO int getservent_r(struct servent *, struct servent_data *); 132a2a77501SHajimu UMEMOTO void setnetent_r(int, struct netent_data *); 13392b6f7beSHajimu UMEMOTO void setprotoent_r(int, struct protoent_data *); 13496f79dcaSHajimu UMEMOTO void setservent_r(int, struct servent_data *); 13596f79dcaSHajimu UMEMOTO 13696f79dcaSHajimu UMEMOTO #endif /* _NETDB_PRIVATE_H_ */ 137