1 /*
2  * Copyright (c) 1998-1999 by Sun Microsystems, Inc.
3  */
4 
5 #ifndef	_RESOLV_MT_H
6 #define	_RESOLV_MT_H
7 
8 #pragma ident	"%Z%%M%	%I%	%E% SMI"
9 
10 #ifdef	__cplusplus
11 extern "C" {
12 #endif
13 
14 #ifdef	SUNW_MT_RESOLVER
15 
16 #include <sys/types.h>
17 #include <netinet/in.h>
18 #include <arpa/nameser.h>
19 #include <resolv.h>
20 
21 /* Access functions for the libresolv private interface */
22 
23 int			__res_enable_mt(void);
24 int			__res_disable_mt(void);
25 
26 /* Per-thread context */
27 
28 typedef struct {
29 #ifdef SUNW_HOSTS_FALLBACK
30 	int				no_hosts_fallback_private;
31 #endif /* SUNW_HOSTS_FALLBACK */
32 #ifdef	SUNW_OVERRIDE_RETRY
33 	int				retry_save;
34 	int				retry_private;
35 #endif	/* SUNW_OVERRIDE_RETRY */
36 	char				inet_nsap_ntoa_tmpbuf[255*3];
37 	char				sym_ntos_unname[20];
38 	char				sym_ntop_unname[20];
39 	char				p_option_nbuf[40];
40 	char				p_time_nbuf[40];
41 	char				precsize_ntoa_retbuf[sizeof "90000000.00"];
42 	char				loc_ntoa_tmpbuf[sizeof
43 "1000 60 60.000 N 1000 60 60.000 W -12345678.00m 90000000.00m 90000000.00m 90000000.00m"];
44 	char				p_secstodate_output[15];
45 } mtctxres_t;
46 
47 /* Thread-specific data (TSD) */
48 
49 extern mtctxres_t			*___mtctxres();
50 #define	mtctxres			(___mtctxres())
51 
52 /* Various static data that should be TSD */
53 
54 #define	sym_ntos_unname			(mtctxres->sym_ntos_unname)
55 #define	sym_ntop_unname			(mtctxres->sym_ntop_unname)
56 #define	inet_nsap_ntoa_tmpbuf		(mtctxres->inet_nsap_ntoa_tmpbuf)
57 #define	p_option_nbuf			(mtctxres->p_option_nbuf)
58 #define	p_time_nbuf			(mtctxres->p_time_nbuf)
59 #define	precsize_ntoa_retbuf		(mtctxres->precsize_ntoa_retbuf)
60 #define	loc_ntoa_tmpbuf			(mtctxres->loc_ntoa_tmpbuf)
61 #define	p_secstodate_output		(mtctxres->p_secstodate_output)
62 
63 #endif /* SUNW_MT_RESOLVER */
64 
65 #ifdef	__cplusplus
66 }
67 #endif
68 
69 #endif /* _RESOLV_MT_H */
70