123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- #ifndef MAIN_DNS_SERVER_H_
- #define MAIN_DNS_SERVER_H_
- #include <esp_system.h>
- #include <stdbool.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- #define DNS_QUERY_MAX_SIZE 80
- #define DNS_ANSWER_MAX_SIZE (DNS_QUERY_MAX_SIZE+16)
- typedef enum dns_reply_code_t {
- DNS_REPLY_CODE_NO_ERROR = 0,
- DNS_REPLY_CODE_FORM_ERROR = 1,
- DNS_REPLY_CODE_SERVER_FAILURE = 2,
- DNS_REPLY_CODE_NON_EXISTANT_DOMAIN = 3,
- DNS_REPLY_CODE_NOT_IMPLEMENTED = 4,
- DNS_REPLY_CODE_REFUSED = 5,
- DNS_REPLY_CODE_YXDOMAIN = 6,
- DNS_REPLY_CODE_YXRRSET = 7,
- DNS_REPLY_CODE_NXRRSET = 8
- }dns_reply_code_t;
- typedef enum dns_opcode_code_t {
- DNS_OPCODE_QUERY = 0,
- DNS_OPCODE_IQUERY = 1,
- DNS_OPCODE_STATUS = 2
- }dns_opcode_code_t;
- typedef struct __attribute__((__packed__)) dns_header_t{
- uint16_t ID;
- uint8_t RD : 1;
- uint8_t TC : 1;
- uint8_t AA : 1;
- uint8_t OPCode : 4;
- uint8_t QR : 1;
- uint8_t RCode : 4;
- uint8_t Z : 3;
- uint8_t RA : 1;
- uint16_t QDCount;
- uint16_t ANCount;
- uint16_t NSCount;
- uint16_t ARCount;
- }dns_header_t;
- typedef enum dns_answer_type_t {
- DNS_ANSWER_TYPE_A = 1,
- DNS_ANSWER_TYPE_NS = 2,
- DNS_ANSWER_TYPE_CNAME = 5,
- DNS_ANSWER_TYPE_SOA = 6,
- DNS_ANSWER_TYPE_WKS = 11,
- DNS_ANSWER_TYPE_PTR = 12,
- DNS_ANSWER_TYPE_MX = 15,
- DNS_ANSWER_TYPE_SRV = 33,
- DNS_ANSWER_TYPE_AAAA = 28
- }dns_answer_type_t;
- typedef enum dns_answer_class_t {
- DNS_ANSWER_CLASS_IN = 1
- }dns_answer_class_t;
- typedef struct __attribute__((__packed__)) dns_answer_t{
- uint16_t NAME;
- uint16_t TYPE;
- uint16_t CLASS;
- uint32_t TTL;
- uint16_t RDLENGTH;
- uint32_t RDATA;
- }dns_answer_t;
- void dns_server(void *pvParameters);
- void dns_server_start();
- void dns_server_stop();
- #ifdef __cplusplus
- }
- #endif
- #endif
|