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

📄 dnsr_if.h.svn-base

📁 域名解析器的实现
💻 SVN-BASE
字号:
#ifndef __DNSR_IF_H__
#define __DNSR_IF_H__

#include <inc/ctypes.h>

#include <socket.h>

#include <l3/ap/dnsr/h/dnsr_db.h>


#define     DNSR_DEBUG               0
/* DNS Queue Max entry */
#define     DNS_MAX_QUERY            32    /* max queries occur concurrently */

#define	    DNSR_MAX_DATA_LEN		512

/* DNS cache parameter */
/* average rr size =80 bytes   we reserve about 80*800 = 64K bytes for DNS cache */
#define MAX_DNS_CACHE_RR          L3_MAX_DNS_CACHE_RR
#define MAX_DNS_CACHE_TTL         80000     /* (secs) max life time of rr in cache */


#define DNS_CACHE_MARK_PERIOD     (6L*60L*60L*1000L) /* msecs */
#define DNS_CACHE_SWEEP_PERIOD    (24L*60L*60L*1000L)


/* DNS Realy parameter */
#define DNSR_MAX_NAME_SERVER       MAX_NAME_SERVER
#define DNSR_MAX_STATIC_TAB        MAX_STATIC_DNS_NUM 


#define     GLUE_NOW()          OS_Time_GetSystemByMiniSec()
#define     OS_mem_alloc(len)   OS_Layer3_Mem_Allocate(len)  
#define     OS_mem_free(mem)    OS_Layer3_Mem_Free(mem) 

struct dns_cfg
{   
   UI32_T       n_servers;                     /* Maximum num of DNS Server */
   UI8_T        lookup_stat;                   /* 0:disable, 1:enable */
   UI8_T        cache_stat;                    /* 0:disable, 1:enable */
   UI8_T        dns_stat;                      /* 0:disable, 1:enable */
   UI32_T       ip_addr[DNSR_MAX_NAME_SERVER]; /* DNS query server IP address */      
   UI8_T        max_tries_per_server;          /* Max packets per server per query */
   UI32_T       max_ttl;                       /* Maximum TTL for received RRs */
};

struct static_dns_tab
{
   UI32_T       ip_addr;                      /* server IP address */
   UI8_T        dns_name[255];/*MAX_STATIC_DNS_NAME];*/ /* server Domain Name */
   BOOLEAN_T    stat;                          /* 0:disable, 1:enable */
};

/* 
 * Store DNSR request/reply 
 */
typedef struct PENDING_DNSR_MSG_T 
{	
	UI16_T      query_id;                       /* client query id */	
	UI32_T      request_server;                 /* the number of request server */
	UI32_T	    udp_len;
	UI8_T	    udp_data[DNSR_MAX_DATA_LEN];    		
	struct      sockaddr			client;    
    UI16_T      qtype;     
    UI16_T      qclass;    
    unsigned char *qsec_ptr;
    UI16_T      qsec_len;	      	
} PENDING_DNSR_MSG, *PENDING_DNSR_MSG_PTR ;


/*------------------------------------------------------------------------
 * UI16_T  DNSR_Restore_Config()
 * Purpose: restore config from EEPROM
 *          
 * Parameters:
 *    Input:
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */
void DNSR_Restore_Config(void);

/*------------------------------------------------------------------------
 * void  DNSR_Get_Max_TTL()
 * Purpose: get DNSR default ttl
 *          
 * Parameters:
 *    Input: status 
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */
UI32_T DNSR_Get_Max_TTL(void);

/*------------------------------------------------------------------------
 * void  DNSR_Set_Status()
 * Purpose: set DNSR status
 *          
 * Parameters:
 *    Input: enable 
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */
BOOLEAN_T DNSR_Set_Status(BOOLEAN_T enable);

/*------------------------------------------------------------------------
 * void  DNSR_Get_Status()
 * Purpose: get DNSR status
 *          
 * Parameters:
 *    Input: status 
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */
BOOLEAN_T DNSR_Get_Status(void);

/*------------------------------------------------------------------------
 * BOOLEAN_T  DNSR_Set_Cache_Status()
 * Purpose: set DNSR cache status
 *          
 * Parameters:
 *    Input: status 
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */
BOOLEAN_T DNSR_Set_Cache_Status(BOOLEAN_T enable);

/*------------------------------------------------------------------------
 * void  DNSR_Get_Cache_Status()
 * Purpose: get DNSR status
 *          
 * Parameters:
 *    Input: status 
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */
BOOLEAN_T DNSR_Get_Cache_Status(void);

/*------------------------------------------------------------------------
 * BOOLEAN_T  DNSR_Set_LookUp_Status()
 * Purpose: set DNSR Look up status
 *          
 * Parameters:
 *    Input: status 
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */
BOOLEAN_T DNSR_Set_Lookup_Status(BOOLEAN_T enable);

/*------------------------------------------------------------------------
 * void  DNSR_Get_Lookup_Status()
 * Purpose: get DNSR status
 *          
 * Parameters:
 *    Input: status 
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */
BOOLEAN_T DNSR_Get_Lookup_Status(void);

/*------------------------------------------------------------------------
 * BOOLEAN_T  DNSR_Set_DNS_Server()
 * Purpose: set DNS Name Server
 *          
 * Parameters:
 *    Input: server IP, index
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */
BOOLEAN_T DNSR_Set_DNS_Server(UI32_T addr,UI32_T index);

/*------------------------------------------------------------------------
 * BOOLEAN_T  DNSR_Set_DNS_Server()
 * Purpose: set DNS Name Server
 *          
 * Parameters:
 *    Input: server IP, index
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */
UI32_T DNSR_Get_DNS_Server(UI32_T index);

/*------------------------------------------------------------------------
 * BOOLEAN_T  DNSR_Set_DNS_Server()
 * Purpose: set DNS Name Server
 *          
 * Parameters:
 *    Input: IP,IP Name, Name size, status, index
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */
BOOLEAN_T DNSR_Set_Static_Table(UI32_T addr,UI8_T *name,UI32_T name_size,BOOLEAN_T status ,UI32_T index);


/*------------------------------------------------------------------------
 * BOOLEAN_T  DNSR_Send_Packet_To_Server()
 * Purpose:   send pkt to socket API
 *          
 * Parameters:
 *    Input:
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */                    
BOOLEAN_T DNSR_Send_Packet_To_Server(unsigned char *pkt, 
                                int len, 
                                PENDING_DNSR_MSG_PTR pMsg
                                );

/*------------------------------------------------------------------------
 * BOOLEAN_T  DNSR_Send_Packet_To_Client()
 * Purpose:   send pkt to socket API
 *          
 * Parameters:
 *    Input:
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */                    
void DNSR_Send_Packet_To_Client(unsigned char *pkt, 
                                int len, 
                                PENDING_DNSR_MSG_PTR pMsg
                                );
                                
/*------------------------------------------------------------------------
 * BOOLEAN_T  DNSR_Lock()
 * Purpose:   dns lock semaphore
 *          
 * Parameters:
 *    Input:
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */                    
void DNSR_Lock(void);

/*------------------------------------------------------------------------
 * BOOLEAN_T  DNSR_UnLock()
 * Purpose:   dns unlock semaphore
 *          
 * Parameters:
 *    Input:
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */                    
void DNSR_UnLock(void);                                
                                
                                

#endif /* DNSR_IF_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -