#define DEBUG 0
enum {
- /* Can tweak this */
+ /* can tweak this */
DEFAULT_TTL = 120,
-/* Cannot get bigger packets than 512 per RFC1035.
- * In practice this can be set considerably smaller:
- * Length of response packet is header (12B) + 2*type(4B) + 2*class(4B) +
- * ttl(4B) + rlen(2B) + r (MAX_NAME_LEN = 21B) +
- * 2*querystring (2 MAX_NAME_LEN = 42B), all together 90 Bytes
- */
+ /* cannot get bigger packets than 512 per RFC1035. */
MAX_PACK_LEN = 512,
IP_STRING_LEN = sizeof(".xxx.xxx.xxx.xxx"),
MAX_NAME_LEN = IP_STRING_LEN - 1 + sizeof(".in-addr.arpa"),
2 server status request (STATUS)
AA Authoritative Answer - this bit is valid in responses.
Responding name server is an authority for the domain name
- in question section. Answer section may have multiple owner names
- because of aliases. The AA bit corresponds to the name which matches
- the query name, or the first owner name in the answer section.
+ in question section. Answer section may have multiple owner names
+ because of aliases. The AA bit corresponds to the name which matches
+ the query name, or the first owner name in the answer section.
TC TrunCation - this message was truncated.
RD Recursion Desired - this bit may be set in a query and
is copied into the response. If RD is set, it directs
0 No error condition
1 Format error
2 Server failure - server was unable to process the query
- due to a problem with the name server.
+ due to a problem with the name server.
3 Name Error - meaningful only for responses from
- an authoritative name server. The referenced domain name
- does not exist.
+ an authoritative name server. The referenced domain name
+ does not exist.
4 Not Implemented.
5 Refused.
QDCOUNT number of entries in the question section.
255 a request for all records
QCLASS a two octet code that specifies the class of the query.
1 the Internet
- (others are historic only)
+ (others are historic only)
255 any class
4.1.3. Resource record format
unsigned lsa_size;
int udps, opts;
uint16_t port = 53;
- /* Paranoid sizing: querystring x2 + ttl + outr_rlen + answstr */
- /* I'd rather see process_packet() fixed instead... */
- uint8_t buf[MAX_PACK_LEN * 2 + 4 + 2 + (MAX_NAME_LEN+1)];
+ uint8_t buf[MAX_PACK_LEN + 1];
opts = getopt32(argv, "vi:c:t:p:d", &listen_interface, &fileconf, &sttl, &sport);
//if (opts & 0x1) // -v