diff options
Diffstat (limited to 'lib/roken/resolve.h')
| -rw-r--r-- | lib/roken/resolve.h | 165 | 
1 files changed, 59 insertions, 106 deletions
| diff --git a/lib/roken/resolve.h b/lib/roken/resolve.h index fe83115b1ec2..fc1e97fc63b5 100644 --- a/lib/roken/resolve.h +++ b/lib/roken/resolve.h @@ -1,23 +1,23 @@  /* - * Copyright (c) 1995 - 2002 Kungliga Tekniska Högskolan + * Copyright (c) 1995 - 2002 Kungliga Tekniska Högskolan   * (Royal Institute of Technology, Stockholm, Sweden).   * All rights reserved. - *  + *   * Redistribution and use in source and binary forms, with or without   * modification, are permitted provided that the following conditions   * are met: - *  + *   * 1. Redistributions of source code must retain the above copyright   *    notice, this list of conditions and the following disclaimer. - *  + *   * 2. Redistributions in binary form must reproduce the above copyright   *    notice, this list of conditions and the following disclaimer in the   *    documentation and/or other materials provided with the distribution. - *  + *   * 3. Neither the name of the Institute nor the names of its contributors   *    may be used to endorse or promote products derived from this software   *    without specific prior written permission. - *  + *   * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -31,20 +31,26 @@   * SUCH DAMAGE.   */ -/* $Id: resolve.h 14773 2005-04-12 11:29:18Z lha $ */ +/* $Id$ */  #ifndef __RESOLVE_H__  #define __RESOLVE_H__  #ifndef ROKEN_LIB_FUNCTION  #ifdef _WIN32 -#define ROKEN_LIB_FUNCTION _stdcall +#define ROKEN_LIB_FUNCTION +#define ROKEN_LIB_CALL     __cdecl  #else  #define ROKEN_LIB_FUNCTION +#define ROKEN_LIB_CALL  #endif  #endif -typedef enum { +enum { +    rk_ns_c_in = 1 +}; + +enum {  	rk_ns_t_invalid = 0,	/* Cookie. */  	rk_ns_t_a = 1,		/* Host address. */  	rk_ns_t_ns = 2,		/* Authoritative server. */ @@ -99,99 +105,38 @@ typedef enum {  	rk_ns_t_any = 255,	/* Wildcard match. */  	rk_ns_t_zxfr = 256,	/* BIND-specific, nonstandard. */  	rk_ns_t_max = 65536 -} rk_ns_type; - -/* We use these, but they are not always present in <arpa/nameser.h> */ - -#ifndef C_IN -#define C_IN		1 -#endif - -#ifndef T_A -#define T_A		1 -#endif -#ifndef T_NS -#define T_NS		2 -#endif -#ifndef T_CNAME -#define T_CNAME		5 -#endif -#ifndef T_SOA -#define T_SOA		5 -#endif -#ifndef T_PTR -#define T_PTR		12 -#endif -#ifndef T_MX -#define T_MX		15 -#endif -#ifndef T_TXT -#define T_TXT		16 -#endif -#ifndef T_AFSDB -#define T_AFSDB		18 -#endif -#ifndef T_SIG -#define T_SIG		24 -#endif -#ifndef T_KEY -#define T_KEY		25 -#endif -#ifndef T_AAAA -#define T_AAAA		28 -#endif -#ifndef T_SRV -#define T_SRV		33 -#endif -#ifndef T_NAPTR -#define T_NAPTR		35 -#endif -#ifndef T_CERT -#define T_CERT		37 -#endif -#ifndef T_SSHFP -#define T_SSHFP		44 -#endif +};  #ifndef MAXDNAME  #define MAXDNAME	1025  #endif -#define dns_query		rk_dns_query  #define mx_record		rk_mx_record  #define srv_record		rk_srv_record  #define key_record		rk_key_record  #define sig_record		rk_sig_record  #define cert_record		rk_cert_record  #define sshfp_record		rk_sshfp_record -#define resource_record		rk_resource_record -#define dns_reply		rk_dns_reply -#define dns_lookup		rk_dns_lookup -#define dns_free_data		rk_dns_free_data -#define dns_string_to_type	rk_dns_string_to_type -#define dns_type_to_string	rk_dns_type_to_string -#define dns_srv_order		rk_dns_srv_order - -struct dns_query{ +struct rk_dns_query{      char *domain;      unsigned type;      unsigned class;  }; -struct mx_record{ +struct rk_mx_record{      unsigned  preference;      char domain[1];  }; -struct srv_record{ +struct rk_srv_record{      unsigned priority;      unsigned weight;      unsigned port;      char target[1];  }; -struct key_record { +struct rk_key_record {      unsigned flags;      unsigned protocol;      unsigned algorithm; @@ -199,7 +144,7 @@ struct key_record {      u_char   key_data[1];  }; -struct sig_record { +struct rk_sig_record {      unsigned type;      unsigned algorithm;      unsigned labels; @@ -208,11 +153,11 @@ struct sig_record {      unsigned sig_inception;      unsigned key_tag;      char     *signer; -    unsigned sig_len; +    size_t   sig_len;      char     sig_data[1];	/* also includes signer */  }; -struct cert_record { +struct rk_cert_record {      unsigned type;      unsigned tag;      unsigned algorithm; @@ -220,22 +165,22 @@ struct cert_record {      u_char   cert_data[1];  }; -struct sshfp_record { +struct rk_sshfp_record {      unsigned algorithm;      unsigned type;      size_t   sshfp_len;      u_char   sshfp_data[1];  }; -struct ds_record { +struct rk_ds_record {      unsigned key_tag;      unsigned algorithm;      unsigned digest_type; -    unsigned digest_len; +    size_t digest_len;      u_char digest_data[1];  }; -struct resource_record{ +struct rk_resource_record{      char *domain;      unsigned type;      unsigned class; @@ -243,23 +188,23 @@ struct resource_record{      unsigned size;      union {  	void *data; -	struct mx_record *mx; -	struct mx_record *afsdb; /* mx and afsdb are identical */ -	struct srv_record *srv; +	struct rk_mx_record *mx; +	struct rk_mx_record *afsdb; /* mx and afsdb are identical */ +	struct rk_srv_record *srv;  	struct in_addr *a;  	char *txt; -	struct key_record *key; -	struct cert_record *cert; -	struct sig_record *sig; -	struct sshfp_record *sshfp; -	struct ds_record *ds; +	struct rk_key_record *key; +	struct rk_cert_record *cert; +	struct rk_sig_record *sig; +	struct rk_sshfp_record *sshfp; +	struct rk_ds_record *ds;      }u; -    struct resource_record *next; +    struct rk_resource_record *next;  };  #define rk_DNS_MAX_PACKET_SIZE		0xffff -struct dns_header { +struct rk_dns_header {      unsigned id;      unsigned flags;  #define rk_DNS_HEADER_RESPONSE_FLAG		1 @@ -277,22 +222,30 @@ struct dns_header {      unsigned arcount;  }; -struct dns_reply{ -    struct dns_header h; -    struct dns_query q; -    struct resource_record *head; +struct rk_dns_reply{ +    struct rk_dns_header h; +    struct rk_dns_query q; +    struct rk_resource_record *head;  }; -struct dns_reply* ROKEN_LIB_FUNCTION -	dns_lookup(const char *, const char *); -void ROKEN_LIB_FUNCTION -	dns_free_data(struct dns_reply *); -int ROKEN_LIB_FUNCTION -	dns_string_to_type(const char *name); -const char *ROKEN_LIB_FUNCTION -	dns_type_to_string(int type); -void ROKEN_LIB_FUNCTION -	dns_srv_order(struct dns_reply*); +#ifdef __cplusplus +extern "C" { +#endif + +ROKEN_LIB_FUNCTION struct rk_dns_reply* ROKEN_LIB_CALL +	rk_dns_lookup(const char *, const char *); +ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL +	rk_dns_free_data(struct rk_dns_reply *); +ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL +	rk_dns_string_to_type(const char *name); +ROKEN_LIB_FUNCTION const char * ROKEN_LIB_CALL +	rk_dns_type_to_string(int type); +ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL +	rk_dns_srv_order(struct rk_dns_reply*); + +#ifdef __cplusplus +} +#endif  #endif /* __RESOLVE_H__ */ | 
