⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dns.h

📁 这同样是FS8610相关的代码.看起来不错啊.
💻 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 + -