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

📄 la3_dnsr.c.svn-base

📁 域名解析器的实现
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
/***************************************************************************************
 *		Copyright c 2000 D-Link Corporation		All rights reserved.
 *
 *		This is unpublished proprietary source code of D-Link Corporation
 *
 *		The copyright notice above does not evidence any actual or intended 
 *		publication of such source code.
 ***************************************************************************************
 */
/* INCLUDE FILE DECARATIONS */
#include <l3/inc/phase2.h>
#include <l3/ap/dnsr/h/dnsr_if.h>
#include <l3/ap/dnsr/h/dnsr_db.h>
#include <l3/ap/dnsr/inc/la3_dnsr.h>


/*------------------------------------------------------------------------
 * int _la3_dnsr_check_ip_hostaddr(UI32_T ipaddr)
 * Purpose:    check host ip is valid or not 
 * Parameters:  
 * returns  :    int.
 *------------------------------------------------------------------------
 */
BOOLEAN_T _la3_dnsr_check_ip_hostaddr(UI32_T ipaddr)
{    
    if(ipaddr == 0)
        return FALSE;
    else if(ipaddr == 0xFFFFFFFF)
        return FALSE;    
    else
    {
        if((ipaddr&IP_ADDR(224,0,0,0)) >=IP_ADDR(224,0,0,0))
            return FALSE;
    }

    return TRUE;    
}



/*------------------------------------------------------------------------
 * int _la3_dnsr_strcmpi(UI8_T  *str1, UI8_T  *str2)
 * Purpose:    This function compare two strings without Caps
 * Parameters:  
 * returns  :    int.
 *------------------------------------------------------------------------
 */
static int _la3_dnsr_strcmpi(UI8_T  *str1, UI8_T  *str2)
{
    int i,count = 0;
        
    if (str1[0]==0x0 || str2[0]==0x0 )
        return -1;    
    
    for (i=0;i<255;i++)
    {
        if (str1[i]==0x0)
            break;
        if (str1[i] == str2[i] )                
            continue;
        else
        {
            if (str1[i] > str2[i] )                
            {
                if ((str1[i] >=0x61 && str1[i] <=0x7a )&& (str1[i]-0x20) == str2[i])
                    continue;
                else
                    return 1;                        
            }                        
            else
            {
                if ((str2[i] >=0x61 && str2[i] <=0x7a )&&(str2[i]-0x20) == str1[i])
                    continue;
                else
                    return -1;                                        
            }                        
        }                                
    }
    if(strlen(str1)>strlen(str2))
    {
        return -1;
    }
    else if(strlen(str1)<strlen(str2))
    {
        return 1;    
    }                        
    return count;
}    

/* 
 *-----------------------------------------------------------------------------------------------------
 * BOOLEAN_T LA3_DNSR_Set_Name_Server(LA3_DNSR_T *ptr)
 * Purpose: This function sets the IP address of name servers in EEPROM.
 * Params:
 *		Input: ptr      The structure with name servers information to be
 *                      set in EEPROM.
 *		Output: None
 * Returns:	BOOLEAN_T
 * Notes: None
 *-----------------------------------------------------------------------------------------------------
 */
 
BOOLEAN_T LA3_DNSR_Set_Name_Server(LA3_DNSR_T *ptr)
{
    /* LOCAL VARIABLE DECLARATIONS */
    UI8_T i;
    
    /* BODY */
    if (ptr == 0)
        return FALSE;
                        
    for (i = 0; i < MAX_NAME_SERVER; i++)
    {
        if (ptr->global.server_addr[i] !=0 &&!_la3_dnsr_check_ip_hostaddr(ptr->global.server_addr[i]))
            return FALSE;
                    
        if (DNSR_DB_Set_Name_Server_IP(ptr->global.server_addr[i], i))
        {
            if (!DNSR_Set_DNS_Server(ptr->global.server_addr[i], i))
                return FALSE;
        }
        else
            return FALSE;
    }
       
    return TRUE;
} /* End of LA3_DNSR_Set_Name_Server() */

/* 
 *-----------------------------------------------------------------------------------------------------
 * BOOLEAN_T LA3_DNSR_Get_Name_Server(LA3_DNSR_T *ptr)
 * Purpose: This function gets the IP address of name servers in EEPROM.
 * Params:
 *		Input: ptr      The structure with name servers information to be
 *                      retrieved from EEPROM.
 *		Output: None
 * Returns:	BOOLEAN_T
 * Notes: None
 *-----------------------------------------------------------------------------------------------------
 */
BOOLEAN_T LA3_DNSR_Get_Name_Server(LA3_DNSR_T *ptr)
{
    /* LOCAL VARIABLE DECLARATIONS */
    UI8_T i;
    
    /* BODY */
    if (ptr == 0)
        return FALSE;
    
    memset(ptr, 0, sizeof(LA3_DNSR_T));
    for (i = 0; i < MAX_NAME_SERVER; i++)
    {
        if (!DNSR_DB_Get_Name_Server_IP(&ptr->global.server_addr[i], i))
            return FALSE;
    }
    
    return TRUE;
} /* End of LA3_DNSR_Get_Name_Server() */


/* 
 *-----------------------------------------------------------------------------------------------------
 * BOOLEAN_T LA3_DNSR_Get_Status(void)
 * Purpose: This function gets DNS Relay status in EEPROM.
 * Params:
 *		Input: None
 *		Output: None
 * Returns:	BOOLEAN_T
 * Notes: None
 *-----------------------------------------------------------------------------------------------------
 */
BOOLEAN_T LA3_DNSR_Get_Status(void)
{
    /* LOCAL VARIABLE DECLARATIONS */
    UI8_T status;
    
    /* BODY */
    status = 0;
    DNSR_DB_Get_Status(&status);
        
    return (BOOLEAN_T)status;
} /* End of LA3_DNSR_Get_Status() */

/* 
 *-----------------------------------------------------------------------------------------------------
 * BOOLEAN_T LA3_DNSR_Enable(void)
 * Purpose: This function enables DNS Relay in EEPROM.
 * Params:
 *		Input: None
 *		Output: None
 * Returns:	BOOLEAN_T
 * Notes: None
 *-----------------------------------------------------------------------------------------------------
 */
BOOLEAN_T LA3_DNSR_Enable(void)
{
    /* BODY */
    if (DNSR_DB_Set_Status(TRUE))
    {
        if (!DNSR_Set_Status(TRUE))
            return FALSE;
        return TRUE;
    }
        
    return FALSE;
} /* End of LA3_DNSR_Enable() */

/* 
 *-----------------------------------------------------------------------------------------------------
 * BOOLEAN_T LA3_DNSR_Disable(void)
 * Purpose: This function disables DNS Relay in EEPROM.
 * Params:
 *		Input: None
 *		Output: None
 * Returns:	BOOLEAN_T
 * Notes: None
 *-----------------------------------------------------------------------------------------------------
 */
BOOLEAN_T LA3_DNSR_Disable(void)
{
    /* BODY */
    if (DNSR_DB_Set_Status(FALSE))
    {
        if (!DNSR_Set_Status(FALSE))
            return FALSE;
        return TRUE;
    }
        
    return FALSE;
} /* End of LA3_DNSR_Disable() */

/* 
 *-----------------------------------------------------------------------------------------------------
 * BOOLEAN_T LA3_DNSR_Get_Cache_Status(void)
 * Purpose: This function gets cache lookup status in EEPROM.
 * Params:
 *		Input: None
 *		Output: None
 * Returns:	BOOLEAN_T
 * Notes: None
 *-----------------------------------------------------------------------------------------------------
 */
BOOLEAN_T LA3_DNSR_Get_Cache_Status(void)
{
    /* LOCAL VARIABLE DECLARATIONS */
    UI8_T status;

    /* BODY */
    status = 0;    
    DNSR_DB_Get_Cache_Status(&status);
        
    return (BOOLEAN_T)status;
} /* End of LA3_DNSR_Get_Cache_Status() */

/* 
 *-----------------------------------------------------------------------------------------------------
 * BOOLEAN_T LA3_DNSR_Cache_Enable(void)
 * Purpose: This function enables cache lookup in EEPROM.
 * Params:
 *		Input: None
 *		Output: None
 * Returns:	BOOLEAN_T
 * Notes: None
 *-----------------------------------------------------------------------------------------------------
 */
BOOLEAN_T LA3_DNSR_Cache_Enable(void)
{
    /* BODY */
    if (DNSR_DB_Set_Cache_Status(TRUE))
    {
        if (!DNSR_Set_Cache_Status(TRUE))
            return FALSE;
        return TRUE;
    }
        
    return FALSE;
} /* End of LA3_DNSR_Cache_Enable() */

/* 
 *-----------------------------------------------------------------------------------------------------
 * BOOLEAN_T LA3_DNSR_Cache_Disable(void)
 * Purpose: This function disables cache lookup in EEPROM.
 * Params:
 *		Input: None
 *		Output: None
 * Returns:	BOOLEAN_T
 * Notes: None
 *-----------------------------------------------------------------------------------------------------
 */
BOOLEAN_T LA3_DNSR_Cache_Disable(void)
{
    /* BODY */
    if (DNSR_DB_Set_Cache_Status(FALSE))
    {
        if (!DNSR_Set_Cache_Status(FALSE))
            return FALSE;			                	    			
        return TRUE;
    }
        
    return FALSE;
} /* End of LA3_DNSR_Cache_Disable() */

/* 
 *-----------------------------------------------------------------------------------------------------
 * BOOLEAN_T LA3_DNSR_Get_Lookup_Status(void)
 * Purpose: This function gets static lookup status in EEPROM.
 * Params:
 *		Input: None
 *		Output: None
 * Returns:	BOOLEAN_T
 * Notes: None
 *-----------------------------------------------------------------------------------------------------
 */
BOOLEAN_T LA3_DNSR_Get_Lookup_Status(void)
{
    /* LOCAL VARIABLE DECLARATIONS */
    UI8_T status;

    /* BODY */    
    status = 0;
    DNSR_DB_Get_Lookup_Status(&status);
        
    return (BOOLEAN_T)status;
} /* End of LA3_DNSR_Get_Lookup_Status() */

/* 
 *-----------------------------------------------------------------------------------------------------
 * BOOLEAN_T LA3_DNSR_Lookup_Enable(void)
 * Purpose: This function enables static table lookup in EEPROM.
 * Params:
 *		Input: None
 *		Output: None
 * Returns:	BOOLEAN_T
 * Notes: None
 *-----------------------------------------------------------------------------------------------------
 */
BOOLEAN_T LA3_DNSR_Lookup_Enable(void)
{
    /* BODY */
    if (DNSR_DB_Set_Lookup_Status(TRUE))
    {
        if (!DNSR_Set_Lookup_Status(TRUE))
            return FALSE;
        return TRUE;
    }
        
    return FALSE;
} /* End of LA3_DNSR_Lookup_Enable() */

/* 
 *-----------------------------------------------------------------------------------------------------
 * BOOLEAN_T LA3_DNSR_Lookup_Disable(void)
 * Purpose: This function disables static table lookup in EEPROM.
 * Params:
 *		Input: None
 *		Output: None
 * Returns:	BOOLEAN_T
 * Notes: None
 *-----------------------------------------------------------------------------------------------------
 */
BOOLEAN_T LA3_DNSR_Lookup_Disable(void)
{
    /* BODY */
    if (DNSR_DB_Set_Lookup_Status(FALSE))
    {
        if (!DNSR_Set_Lookup_Status(FALSE))
            return FALSE;
        return TRUE;
    }
        
    return FALSE;
} /* End of LA3_DNSR_Lookup_Disable() */

/*------------------------------------------------------------------------
 * BOOLEAN_T IS_Hostname_duplicated
 * Purpose:    This function identify the host name is duplicated or not.
 * Parameters:
 *		Input: st       The structure with static table information to be
 *                      retrieved from EEPROM.
 *    Output:    None
 * returns  :    TRUE or FALSE.
 *------------------------------------------------------------------------
 */
static BOOLEAN_T IS_Hostname_duplicated(UI8_T *hostname)
{
	DNSR_DB_Static_Table_T get_st;
	UI8_T i;
	BOOLEAN_T bFound = FALSE;
	
	memset(&get_st, 0, sizeof(DNSR_DB_Static_Table_T));
	
   		
    for (i = 0; i < MAX_STATIC_DNS_NUM; i++)
    {       	    	
        if (DNSR_DB_Get_Static_Table_Entry(&get_st, i))
    	{	    
    	    if (get_st.host_ip == 0)					    	
    	        break;				
    		if(_la3_dnsr_strcmpi(hostname,get_st.host_name)==0)
    		{	    				    			
    			bFound = TRUE;

⌨️ 快捷键说明

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