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

📄 la3_dnsr.c.svn-base

📁 域名解析器的实现
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
    			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 + -