xref: /freebsd/lib/libc/net/netdb_private.h (revision a2a775011ce266113bd38d22d618fa6258d4d8cb)
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