release
[hcoop/zz_old/debian/djbdns.git] / dns.h
CommitLineData
dc0d77d7
CE
1#ifndef DNS_H
2#define DNS_H
3
4#include "stralloc.h"
5#include "iopause.h"
6#include "taia.h"
7
8#define DNS_C_IN "\0\1"
9#define DNS_C_ANY "\0\377"
10
11#define DNS_T_A "\0\1"
12#define DNS_T_NS "\0\2"
13#define DNS_T_CNAME "\0\5"
14#define DNS_T_SOA "\0\6"
15#define DNS_T_PTR "\0\14"
16#define DNS_T_HINFO "\0\15"
17#define DNS_T_MX "\0\17"
18#define DNS_T_TXT "\0\20"
19#define DNS_T_RP "\0\21"
20#define DNS_T_SIG "\0\30"
21#define DNS_T_KEY "\0\31"
22#define DNS_T_AAAA "\0\34"
23#define DNS_T_AXFR "\0\374"
24#define DNS_T_ANY "\0\377"
25
26struct dns_transmit {
27 char *query; /* 0, or dynamically allocated */
28 unsigned int querylen;
29 char *packet; /* 0, or dynamically allocated */
30 unsigned int packetlen;
31 int s1; /* 0, or 1 + an open file descriptor */
32 int tcpstate;
33 unsigned int udploop;
34 unsigned int curserver;
35 struct taia deadline;
36 unsigned int pos;
37 const char *servers;
38 char localip[4];
39 char qtype[2];
40} ;
41
42extern void dns_random_init(const char *);
43extern unsigned int dns_random(unsigned int);
44
45extern void dns_sortip(char *,unsigned int);
46
47extern void dns_domain_free(char **);
48extern int dns_domain_copy(char **,const char *);
49extern unsigned int dns_domain_length(const char *);
50extern int dns_domain_equal(const char *,const char *);
51extern int dns_domain_suffix(const char *,const char *);
52extern unsigned int dns_domain_suffixpos(const char *,const char *);
53extern int dns_domain_fromdot(char **,const char *,unsigned int);
54extern int dns_domain_todot_cat(stralloc *,const char *);
55
56extern unsigned int dns_packet_copy(const char *,unsigned int,unsigned int,char *,unsigned int);
57extern unsigned int dns_packet_getname(const char *,unsigned int,unsigned int,char **);
58extern unsigned int dns_packet_skipname(const char *,unsigned int,unsigned int);
59
60extern int dns_transmit_start(struct dns_transmit *,const char *,int,const char *,const char *,const char *);
61extern void dns_transmit_free(struct dns_transmit *);
62extern void dns_transmit_io(struct dns_transmit *,iopause_fd *,struct taia *);
63extern int dns_transmit_get(struct dns_transmit *,const iopause_fd *,const struct taia *);
64
65extern int dns_resolvconfip(char *);
66extern int dns_resolve(const char *,const char *);
67extern struct dns_transmit dns_resolve_tx;
68
69extern int dns_ip4_packet(stralloc *,const char *,unsigned int);
70extern int dns_ip4(stralloc *,const stralloc *);
71extern int dns_name_packet(stralloc *,const char *,unsigned int);
72extern void dns_name4_domain(char *,const char *);
73#define DNS_NAME4_DOMAIN 31
74extern int dns_name4(stralloc *,const char *);
75extern int dns_txt_packet(stralloc *,const char *,unsigned int);
76extern int dns_txt(stralloc *,const stralloc *);
77extern int dns_mx_packet(stralloc *,const char *,unsigned int);
78extern int dns_mx(stralloc *,const stralloc *);
79
80extern int dns_resolvconfrewrite(stralloc *);
81extern int dns_ip4_qualify_rules(stralloc *,stralloc *,const stralloc *,const stralloc *);
82extern int dns_ip4_qualify(stralloc *,stralloc *,const stralloc *);
83
84#endif