📄 dns.h
字号:
/**
* \addtogroup dns
* @{
*/
/**
* \file dns.h
* \brief DNS Application Declaration Header File.
* \author Xiaofei Rui <xfrui@fameg.com>
*/
#ifndef __DNS_H__
#define __DNS_H__
#include "kernel/system.h"
/*****************************************************************************
* CONSTANT DEFINES *
*****************************************************************************/
#define DNS_QR_QUERY 0
#define DNS_QR_RESPONSE 1
#define DNS_OPCODE_STD 0 /* standard query */
#define DNS_OPCODE_IVSQ 1 /* inverse query */
#define DNS_OPCODE_STAQ 2 /* Server status query */
#define DNS_AA 1 /* Authoriative Answer */
#define DNS_TC 1 /* Truncated */
#define DNS_RD 1 /* Recursion Desired */
#define DNS_RA 1 /* Recursion Available */
/* Response Code */
#define DNS_RCODE_NOERR 0 /* No error */
#define DNS_RCODE_FMTERR 1 /* Format error */
#define DNS_RCODE_SVRFAIL 2 /* Server fail */
#define DNS_RCODE_NAMEERR 3 /* Name Error */
#define DNS_MAKE_FLAG(qr, opcode, aa, tc, rd, ra, rcode) ((UINT16)qr<<15)|((UINT16)(opcode&0x0f)<<11)|\
((UINT16)aa<<10)|((UINT16)tc<<9)|((UINT16)rd<<8)|\
((UINT16)ra<<7)|(rcode&0x0f)
/* Query Type for question */
#define DNS_QTYPE_A 1 /* IP address */
#define DNS_QTYPE_NS 2 /* Name Server */
#define DNS_QTYPE_CNAME 5 /* Canonical Name */
#define DNS_QTYPE_PTR 12 /* Pointer Record */
#define DNS_QTYPE_HINFO 13 /* Host Information */
#define DNS_QTYPE_MX 15 /* Mail Exchange Record */
#define DNS_QTYPE_AXFR 252 /* Request for Zone Transfer */
#define DNS_QTYPE_ANY 255 /* Request for All Records */
#define DNS_QCLASS_IN 1 /* Internet */
#define DNS_QCLASS_CH 3 /* CHAOS class */
/* Type for response */
#define DNS_TYPE_A 1 /* IP address */
#define DNS_TYPE_NS 2 /* Name Server */
#define DNS_TYPE_CNAME 5 /* Canonical Name */
#define DNS_TYPE_PTR 12 /* Pointer Record */
#define DNS_TYPE_HINFO 13 /* Host Information */
#define DNS_TYPE_MX 15 /* Mail Exchange Record */
#define DNS_CLASS_IN 1 /* Internet */
#define DNS_CLASS_CH 3 /* CHAOS class */
/// @endcond
/*****************************************************************************
* MACROS *
*****************************************************************************/
/*****************************************************************************
* DATA TYPES *
*****************************************************************************/
typedef enum dns_mod_t {BYNAME, BYIP}dns_mod;
/// @cond DOXYGEN_SKIP
struct dns_hdr_t {
UINT16 id;
UINT16 flag;
UINT16 qscnt;
UINT16 ancnt; /* answer count */
UINT16 aucnt; /* authoritative count */
UINT16 adcnt; /* additional record count */
};
struct dns_question_t{
UINT16 qtype;
UINT16 qclass;
};
struct dns_resrecord_t{
UINT16 type;
UINT16 class;
UINT32 ttl;
UINT16 datlen;
};
/*****************************************************************************
* FUNCTIONS DECLARATION *
*****************************************************************************/
extern void dns_init(UINT32 dns_svr);
extern INT8 gethostbyaddr(UINT32 ip_addr, char * domain_name);
extern UINT32 gethostbyname(char *domain_name);
/*****************************************************************************
* GLOBAL VARIABLES DECLARATION *
*****************************************************************************/
#endif /* __DNS_H__ */
/** @} */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -