11 #ifndef _PROTOCOL_PARSERS_DNS_
12 #define _PROTOCOL_PARSERS_DNS_
21 #include <sys/types.h>
22 #include <sys/socket.h>
23 #include <netinet/in.h>
24 #include <arpa/inet.h>
28 #define DNS_HEADER_SIZE 12
29 #define DNS_MAX_DOMAIN_NAME_LENGTH 100
30 #define DNS_QR_FLAG_MASK 0x8000
31 #define DNS_CLASS_MASK 0x7fff
32 #define DNS_COMPRESSION_MASK 0x3fff
129 dns_header_t dns_parse_header(uint8_t *data, uint16_t *offset);
139 dns_question_t* dns_parse_questions(uint16_t qdcount, uint8_t *data, uint16_t *offset);
172 bool dns_contains_suffix_domain_name(
dns_question_t *questions, uint16_t qdcount,
char *suffix, uint16_t suffix_length);
182 bool dns_contains_full_domain_name(
dns_question_t *questions, uint16_t qdcount,
char *domain_name);
216 void dns_convert_qname(
char *dst,
char *src, uint16_t len);
226 int dns_send_query(
char *qname,
int sockfd,
struct sockaddr_in *server_addr);
271 void dns_print_questions(uint16_t qdcount,
dns_question_t *questions);
281 char* dns_rdata_to_str(dns_rr_type_t rtype, uint16_t rdlength,
rdata_t rdata);
Implementation of a DNS domain name to IP addresses mapping, using Joshua J Baker's hashmap....
Utilitaries for payload manipulation and display.
IP (v4 or v6) address.
Definition: packet_utils.h:37