/*	$NetBSD: resolv_mt.h,v 1.1.1.3 2009/04/12 16:35:44 christos Exp $	*/

#ifndef _RESOLV_MT_H
#define _RESOLV_MT_H

#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>

/* Access functions for the libresolv private interface */

int	__res_enable_mt(void);
int	__res_disable_mt(void);

/* Per-thread context */

typedef struct {
int	no_hosts_fallback_private;
int	retry_save;
int	retry_private;
char	inet_nsap_ntoa_tmpbuf[255*3];
char	sym_ntos_unname[20];
char	sym_ntop_unname[20];
char	p_option_nbuf[40];
char	p_time_nbuf[40];
char	precsize_ntoa_retbuf[sizeof "90000000.00"];
char	loc_ntoa_tmpbuf[sizeof
"1000 60 60.000 N 1000 60 60.000 W -12345678.00m 90000000.00m 90000000.00m 90000000.00m"];
char	p_secstodate_output[15];
} mtctxres_t;

/* Thread-specific data (TSD) */

mtctxres_t	*___mtctxres(void);
#define mtctxres	(___mtctxres())

/* Various static data that should be TSD */

#define sym_ntos_unname		(mtctxres->sym_ntos_unname)
#define sym_ntop_unname		(mtctxres->sym_ntop_unname)
#define inet_nsap_ntoa_tmpbuf	(mtctxres->inet_nsap_ntoa_tmpbuf)
#define p_option_nbuf		(mtctxres->p_option_nbuf)
#define p_time_nbuf		(mtctxres->p_time_nbuf)
#define precsize_ntoa_retbuf	(mtctxres->precsize_ntoa_retbuf)
#define loc_ntoa_tmpbuf		(mtctxres->loc_ntoa_tmpbuf)
#define p_secstodate_output	(mtctxres->p_secstodate_output)

#endif /* _RESOLV_MT_H */
