#ifndef _DNS_H_ #define _DNS_H_ #include "w5500api.h" extern uint8 BUFPUB[1024]; extern uint8 dns_num; #define SOCK_DNS 1 //extern uint8 domain_name[]; #define DNS_RESPONSE_TIMEOUT 3 // 3 seconds #define DNS_RETRY 3 //3 times #define DNS_RET_PROGRESS 0 #define DNS_RET_FAIL 1 #define DNS_RET_SUCCESS 2 #define EXTERN_DNS_SERVERIP NET_CONFIG.dns #define EXTERN_DNS_SOCKBUF gBUFPUBLIC #define EXTERN_DNS_ANYPORT 2000//tsvDEVCONFnew.any_port #define MAX_DNS_BUF_SIZE 256 /* maximum size of DNS buffer. */ #define INITRTT 2000L /* Initial smoothed response time */ #define MAXCNAME 10 /* Maximum amount of cname recursion */ #define TYPE_A 1 /* Host address */ #define TYPE_NS 2 /* Name server */ #define TYPE_MD 3 /* Mail destination (obsolete) */ #define TYPE_MF 4 /* Mail forwarder (obsolete) */ #define TYPE_CNAME 5 /* Canonical name */ #define TYPE_SOA 6 /* Start of Authority */ #define TYPE_MB 7 /* Mailbox name (experimental) */ #define TYPE_MG 8 /* Mail group member (experimental) */ #define TYPE_MR 9 /* Mail rename name (experimental) */ #define TYPE_NULL 10 /* Null (experimental) */ #define TYPE_WKS 11 /* Well-known sockets */ #define TYPE_PTR 12 /* Pointer record */ #define TYPE_HINFO 13 /* Host information */ #define TYPE_MINFO 14 /* Mailbox information (experimental)*/ #define TYPE_MX 15 /* Mail exchanger */ #define TYPE_TXT 16 /* Text strings */ #define TYPE_ANY 255/* Matches any type */ #define CLASS_IN 1 /* The ARPA Internet */ /* Round trip timing parameters */ #define AGAIN 8 /* Average RTT gain = 1/8 */ #define LAGAIN 3 /* Log2(AGAIN) */ #define DGAIN 4 /* Mean deviation gain = 1/4 */ #define LDGAIN 2 /* log2(DGAIN) */ #define IPPORT_DOMAIN 53 /* Header for all domain messages */ struct dhdr { uint16 id; /* Identification */ uint8 qr; /* Query/Response */ #define QUERY 0 #define RESPONSE 1 uint8 opcode; #define IQUERY 1 uint8 aa; /* Authoratative answer */ uint8 tc; /* Truncation */ uint8 rd; /* Recursion desired */ uint8 ra; /* Recursion available */ uint8 rcode; /* Response code */ #define NO_ERROR 0 #define FORMAT_ERROR 1 #define SERVER_FAIL 2 #define NAME_ERROR 3 #define NOT_IMPL 4 #define REFUSED 5 uint16 qdcount; /* Question count */ uint16 ancount; /* Answer count */ uint16 nscount; /* Authority (name server) count */ uint16 arcount; /* Additional record count */ }; extern uint8 DNS_GET_IP[4]; uint8 dns_query(uint8 s, uint8 * name); uint16 do_dns(uint8 *domain_name); #endif /* _DNS_H_ */