📄 la3_dnsr.c.svn-base
字号:
break;
}
}
else
break;
}
if (bFound)
return TRUE;
else
return FALSE;
}/* End of IS_Hostname_duplicated */
/*------------------------------------------------------------------------
* BOOLEAN_T LA3_DNSR_Get_Static_Table_Entry
* Purpose: This function gets the static table entry in EEPROM.
* Parameters:
* Input: st The structure with static table information to be
* retrieved from EEPROM.
* index = host_ip , host_name
* Output: None
* returns : TRUE or FALSE.
*------------------------------------------------------------------------
*/
BOOLEAN_T LA3_DNSR_Get_Static_Table_Entry(LA3_Static_Table_T *st)
{
/* LOCAL VARIABLE DECLARATIONS */
UI8_T index;
UI8_T temp_index =0;
DNSR_DB_Static_Table_T get_st;
BOOLEAN_T bFound=FALSE,bSelect = FALSE;
memset(&get_st, 0, sizeof(DNSR_DB_Static_Table_T));
/* BODY */
if (st == 0)
return FALSE;
for (index =0; index<MAX_STATIC_DNS_NUM ; index ++)
{
if (!DNSR_DB_Get_Static_Table_Entry(&get_st, index))
break;
if(_la3_dnsr_strcmpi(st->S_Tab.host_name,get_st.host_name)==0)
{
bSelect = TRUE;
temp_index = index ;
if (st->S_Tab.host_ip == get_st.host_ip)
{
st->S_Tab.status = get_st.status;
bFound = TRUE;
break;
}
}
}
if (bFound)
return TRUE;
else
{
if (bSelect)
{
DNSR_DB_Get_Static_Table_Entry(&get_st, temp_index);
st->S_Tab.host_ip = get_st.host_ip;
memcpy(st->S_Tab.host_name,get_st.host_name,sizeof(get_st.host_name));
st->S_Tab.status = get_st.status;
return TRUE;
}
else
return FALSE;
}
}/* LA3_DNSR_Get_Static_Table_Entry */
/*------------------------------------------------------------------------
* BOOLEAN_T LA3_DNSR_Set_Static_Table_Entry
* Purpose: This function sets the static table entry in EEPROM.
* Parameters:
* Input : st The structure with static table information to be
* set in EEPROM.
* index = host_ip , host_name
* Output: None.
* returns : TRUE or FALSE.
*------------------------------------------------------------------------
*/
BOOLEAN_T LA3_DNSR_Set_Static_Table_Entry(LA3_Static_Table_T *st)
{
/* LOCAL VARIABLE DECLARATIONS */
BOOLEAN_T bHostDuplicate ;
BOOLEAN_T bFound = FALSE;
UI8_T index,i;
DNSR_DB_Static_Table_T get_st;
DNSR_DB_Static_Table_T tmp;
if (!_la3_dnsr_check_ip_hostaddr(st->S_Tab.host_ip))
return FALSE;
memset(&get_st, 0, sizeof(DNSR_DB_Static_Table_T));
/* BODY */
if (st == 0)
return FALSE;
for (index =0; index<MAX_STATIC_DNS_NUM ; index ++)
{
if (DNSR_DB_Get_Static_Table_Entry(&get_st, index))
{
if(_la3_dnsr_strcmpi(st->S_Tab.host_name,get_st.host_name)==0)
{
if (DNSR_DB_Set_Static_Table_Entry(&st->S_Tab, index))
{
bFound=TRUE;
break;
}
}
}
else /* Add one Entry */
{
bHostDuplicate = IS_Hostname_duplicated(st->S_Tab.host_name); /* host name is duplicated or not*/
if (bHostDuplicate)
return FALSE;
if (DNSR_DB_Set_Static_Table_Entry(&st->S_Tab, index))
{
bFound=TRUE;
break;
}
}
}
if (bFound)
{
for (i = 0; i < MAX_STATIC_DNS_NUM; i++)
{
memset(&tmp, 0, sizeof(DNSR_DB_Static_Table_T));
DNSR_DB_Get_Static_Table_Entry(&tmp, i);
DNSR_Set_Static_Table(tmp.host_ip,tmp.host_name,sizeof(tmp.host_name),tmp.status,i);
}
return TRUE;
}
else
return FALSE;
}/* End of LA3_DNSR_Set_Static_Table_Entry */
/*------------------------------------------------------------------------
* BOOLEAN_T LA3_DNSR_Delete_Static_Table_Entry
* Purpose: This function delete the static table entry in EEPROM.
* Parameters:
* Input : st The structure with static table information to be
* set in EEPROM.
* index = host_ip , host_name
* Output: None.
* returns : TRUE or FALSE.
*------------------------------------------------------------------------
*/
BOOLEAN_T LA3_DNSR_Delete_Static_Table_Entry(LA3_Static_Table_T *st)
{
/* LOCAL VARIABLE DECLARATIONS */
BOOLEAN_T bFound = FALSE;
UI8_T index,i;
DNSR_DB_Static_Table_T get_st;
DNSR_DB_Static_Table_T tmp;
memset(&get_st, 0, sizeof(DNSR_DB_Static_Table_T));
/* BODY */
if (st == 0)
return FALSE;
for (index =0; index<MAX_STATIC_DNS_NUM ; index ++)
{
if (DNSR_DB_Get_Static_Table_Entry(&get_st, index))
{
if (st->S_Tab.host_ip == get_st.host_ip)
{
if(_la3_dnsr_strcmpi(st->S_Tab.host_name,get_st.host_name)==0)
{
memset(st, 0, sizeof(LA3_Static_Table_T));
if (DNSR_DB_Set_Static_Table_Entry(&st->S_Tab, index))
{
bFound=TRUE;
break;
}
}
}
}
}
if (bFound)
{
for (i = 0; i < MAX_STATIC_DNS_NUM; i++)
{
memset(&tmp, 0, sizeof(DNSR_DB_Static_Table_T));
DNSR_DB_Get_Static_Table_Entry(&tmp, i);
DNSR_Set_Static_Table(tmp.host_ip,tmp.host_name,sizeof(tmp.host_name),tmp.status,i);
}
return TRUE;
}
else
return FALSE;
}/* End of LA3_DNSR_Delete_Static_Table_Entry */
/*------------------------------------------------------------------------
* BOOLEAN_T LA3_DNSR_Get_Static_Table_PrevEntry
* Purpose: This function gets the static table previous entry in EEPROM.
* Parameters:
* Input : st The structure with static table information to be
* set in EEPROM.
* index = host_ip , host_name
* Output: LA3_Static_Table_T *st.
* returns : TRUE or FALSE.
*------------------------------------------------------------------------
*/
BOOLEAN_T LA3_DNSR_Get_Static_Table_PrevEntry(LA3_Static_Table_T *st)
{
/* LOCAL VARIABLE DECLARATIONS */
UI8_T index;
DNSR_DB_Static_Table_T get_st;
BOOLEAN_T bFound = FALSE;
memset(&get_st, 0, sizeof(DNSR_DB_Static_Table_T));
/* BODY */
if (st == 0)
return FALSE;
for (index =0; index<MAX_STATIC_DNS_NUM ; index ++)
{
if (!DNSR_DB_Get_Static_Table_Entry(&get_st, index))
return FALSE;
if (st->S_Tab.host_ip == get_st.host_ip)
{
if(_la3_dnsr_strcmpi(st->S_Tab.host_name,get_st.host_name)==0)
{
st->S_Tab.status = get_st.status;
bFound = TRUE;
break;
}
}
}
if (index == 0) /* the first entry */
return FALSE;
if (bFound)
{
index --;
if (!DNSR_DB_Get_Static_Table_Entry(&get_st, index))
return FALSE;
st->S_Tab.host_ip = get_st.host_ip;
memcpy(st->S_Tab.host_name, get_st.host_name,sizeof(get_st.host_name));
st->S_Tab.status = get_st.status;
return TRUE;
}
else
return FALSE;
}/* End of LA3_DNSR_Get_Static_Table_PrevEntry */
/*------------------------------------------------------------------------
* BOOLEAN_T LA3_DNSR_Get_Static_Table_NextEntry
* Purpose: This function gets the static table next entry in EEPROM.
* Parameters:
* Input : st The structure with static table information to be
* set in EEPROM.
* index = host_ip , host_name
* Output: LA3_Static_Table_T *st.
* returns : TRUE or FALSE.
*------------------------------------------------------------------------
*/
BOOLEAN_T LA3_DNSR_Get_Static_Table_NextEntry(LA3_Static_Table_T *st)
{
/* LOCAL VARIABLE DECLARATIONS */
UI8_T index;
DNSR_DB_Static_Table_T get_st;
BOOLEAN_T bFound = FALSE;
memset(&get_st, 0, sizeof(DNSR_DB_Static_Table_T));
/* BODY */
if (st == 0)
return FALSE;
if (st->S_Tab.host_ip == 0)
{
if (DNSR_DB_Get_Static_Table_Entry(&get_st, 0))
{
st->S_Tab.host_ip = get_st.host_ip;
memcpy(st->S_Tab.host_name, get_st.host_name,sizeof(get_st.host_name));
st->S_Tab.status = get_st.status;
return TRUE;
}
else
return FALSE;
}
for (index =0; index<MAX_STATIC_DNS_NUM ; index ++)
{
if (!DNSR_DB_Get_Static_Table_Entry(&get_st, index))
return FALSE;
if (st->S_Tab.host_ip == get_st.host_ip)
{
if(_la3_dnsr_strcmpi(st->S_Tab.host_name,get_st.host_name)==0)
{
st->S_Tab.status = get_st.status;
bFound = TRUE;
break;
}
}
}
if (index == MAX_STATIC_DNS_NUM-1) /* overflow */
return FALSE;
if (bFound)
{
index ++;
if (!DNSR_DB_Get_Static_Table_Entry(&get_st, index))
return FALSE;
st->S_Tab.host_ip = get_st.host_ip;
memcpy(st->S_Tab.host_name, get_st.host_name,sizeof(get_st.host_name));
st->S_Tab.status = get_st.status;
return TRUE;
}
else
return FALSE;
}/* End of LA3_DNSR_Get_Static_Table_NextEntry */
/*------------------------------------------------------------------------
* BOOLEAN_T LA3_DNSR_Get_Static_Table_FirstEntry
* Purpose: This function gets the static table first entry in EEPROM.
* Parameters:
* Input : st The structure with static table information to be
* set in EEPROM.
* Output: LA3_Static_Table_T *st.
* returns : TRUE or FALSE.
*------------------------------------------------------------------------
*/
BOOLEAN_T LA3_DNSR_Get_Static_Table_FirstEntry(LA3_Static_Table_T *st)
{
/* BODY */
if (st == 0)
return FALSE;
memset(st, 0, sizeof(LA3_Static_Table_T));
return (LA3_DNSR_Get_Static_Table_NextEntry(st));
}/* End of LA3_DNSR_Get_Static_Table_FirstEntry */
/*------------------------------------------------------------------------
* BOOLEAN_T LA3_DNSR_Get_Num_of_ST_Entry(I8_T *num)
* Purpose: This function gets the number of static table entries in EEPROM.
* Parameters:
* returns : TRUE or FALSE.
*------------------------------------------------------------------------
*/
BOOLEAN_T LA3_DNSR_Get_Num_of_ST_Entry(I32_T *num)
{
LA3_Static_Table_T st;
BOOLEAN_T bFound ;
memset(&st, 0, sizeof(LA3_Static_Table_T));
*num = 0;
bFound = LA3_DNSR_Get_Static_Table_NextEntry(&st);
while(bFound)
{
*num=*num+1;
bFound = LA3_DNSR_Get_Static_Table_NextEntry(&st);
}
return TRUE;
}/* End of LA3_DNSR_Get_Num_of_ST_Entry*/
/* End of DNS Relay L3 package */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -