📄 la3_dnsr.c.svn-base
字号:
/***************************************************************************************
* 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 + -