rfc1035.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3  *
4  * Squid software is distributed under GPLv2+ license and includes
5  * contributions from numerous individuals and organizations.
6  * Please see the COPYING and CONTRIBUTORS files for details.
7  */
8 
9 #ifndef SQUID_SRC_DNS_RFC1035_H
10 #define SQUID_SRC_DNS_RFC1035_H
11 
12 #if HAVE_SYS_TYPES_H
13 #include <sys/types.h>
14 #endif
15 #if HAVE_NETINET_IN_H
16 #include <netinet/in.h>
17 #endif
18 #if HAVE_ARPA_INET_H
19 #include <arpa/inet.h>
20 #endif
21 
22 #include "rfc2181.h"
23 
32 #define RFC1035_MAXHOSTNAMESZ RFC2181_MAXHOSTNAMELEN
33 
34 #define RFC1035_DEFAULT_PACKET_SZ 512
35 
37 {
38 public:
40  unsigned short type;
41  unsigned short _class;
42  unsigned int ttl;
43  unsigned short rdlength;
44  char *rdata;
45 };
46 
50  unsigned short qtype;
51  unsigned short qclass;
52 };
53 
56  unsigned short id;
57  unsigned int qr:1;
58  unsigned int opcode:4;
59  unsigned int aa:1;
60  unsigned int tc:1;
61  unsigned int rd:1;
62  unsigned int ra:1;
63  unsigned int rcode:4;
64  unsigned short qdcount;
65  unsigned short ancount;
66  unsigned short nscount;
67  unsigned short arcount;
70 };
71 
72 ssize_t rfc1035BuildAQuery(const char *hostname,
73  char *buf,
74  size_t sz,
75  unsigned short qid,
76  rfc1035_query * query,
77  ssize_t edns_sz);
78 ssize_t rfc1035BuildPTRQuery(const struct in_addr,
79  char *buf,
80  size_t sz,
81  unsigned short qid,
82  rfc1035_query * query,
83  ssize_t edns_sz);
84 void rfc1035SetQueryID(char *, unsigned short qid);
85 int rfc1035MessageUnpack(const char *buf,
86  size_t sz,
87  rfc1035_message ** answer);
88 int rfc1035QueryCompare(const rfc1035_query *, const rfc1035_query *);
89 void rfc1035RRDestroy(rfc1035_rr ** rr, int n);
90 void rfc1035MessageDestroy(rfc1035_message ** message);
91 const char * rfc1035ErrorMessage(int n);
92 
93 #define RFC1035_TYPE_A 1
94 #define RFC1035_TYPE_CNAME 5
95 #define RFC1035_TYPE_PTR 12
96 #define RFC1035_CLASS_IN 1
97 
98 /* Child Library RFC3596 Depends on some otherwise internal functions */
99 int rfc1035HeaderPack(char *buf,
100  size_t sz,
101  rfc1035_message * hdr);
102 int rfc1035HeaderUnpack(const char *buf,
103  size_t sz,
104  unsigned int *off,
105  rfc1035_message * h);
106 int rfc1035QuestionPack(char *buf,
107  size_t sz,
108  const char *name,
109  const unsigned short type,
110  const unsigned short _class);
111 int rfc1035RRPack(char *buf, size_t sz, const rfc1035_rr * RR);
112 
113 #endif /* SQUID_SRC_DNS_RFC1035_H */
114 
rfc1035_query * query
Definition: rfc1035.h:68
unsigned short type
Definition: rfc1035.h:40
unsigned short rdlength
Definition: rfc1035.h:43
ssize_t rfc1035BuildAQuery(const char *hostname, char *buf, size_t sz, unsigned short qid, rfc1035_query *query, ssize_t edns_sz)
Definition: rfc1035.cc:663
const char * rfc1035ErrorMessage(int n)
Definition: rfc1035.cc:449
rfc1035_rr * answer
Definition: rfc1035.h:69
unsigned int opcode
Definition: rfc1035.h:58
unsigned int tc
Definition: rfc1035.h:60
int rfc1035HeaderPack(char *buf, size_t sz, rfc1035_message *hdr)
Definition: rfc1035.cc:56
unsigned short qdcount
Definition: rfc1035.h:64
void rfc1035RRDestroy(rfc1035_rr **rr, int n)
Definition: rfc1035.cc:488
unsigned int ra
Definition: rfc1035.h:62
#define RFC1035_MAXHOSTNAMESZ
Definition: rfc1035.h:32
int rfc1035HeaderUnpack(const char *buf, size_t sz, unsigned int *off, rfc1035_message *h)
Definition: rfc1035.cc:185
char * rdata
Definition: rfc1035.h:44
void rfc1035SetQueryID(char *, unsigned short qid)
Definition: rfc1035.cc:744
unsigned short _class
Definition: rfc1035.h:41
int rfc1035MessageUnpack(const char *buf, size_t sz, rfc1035_message **answer)
Definition: rfc1035.cc:589
void rfc1035MessageDestroy(rfc1035_message **message)
Definition: rfc1035.cc:535
int rfc1035RRPack(char *buf, size_t sz, const rfc1035_rr *RR)
Definition: rfc1035.cc:330
ssize_t rfc1035BuildPTRQuery(const struct in_addr, char *buf, size_t sz, unsigned short qid, rfc1035_query *query, ssize_t edns_sz)
Definition: rfc1035.cc:702
unsigned short qtype
Definition: rfc1035.h:50
unsigned short id
Definition: rfc1035.h:56
unsigned int ttl
Definition: rfc1035.h:42
char name[RFC1035_MAXHOSTNAMESZ]
Definition: rfc1035.h:49
unsigned short qclass
Definition: rfc1035.h:51
unsigned int rcode
Definition: rfc1035.h:63
unsigned short nscount
Definition: rfc1035.h:66
unsigned short ancount
Definition: rfc1035.h:65
unsigned int aa
Definition: rfc1035.h:59
unsigned int rd
Definition: rfc1035.h:61
unsigned short arcount
Definition: rfc1035.h:67
char name[RFC1035_MAXHOSTNAMESZ]
Definition: rfc1035.h:39
int rfc1035QuestionPack(char *buf, size_t sz, const char *name, const unsigned short type, const unsigned short _class)
Definition: rfc1035.cc:154
int rfc1035QueryCompare(const rfc1035_query *, const rfc1035_query *)
Definition: rfc1035.cc:555
unsigned int qr
Definition: rfc1035.h:57

 

Introduction

Documentation

Support

Miscellaneous