Esempio n. 1
0
/*
@func int32 | rtl865x_deReferPpp |dereference ppp table entry.
@parm uint32 | sessionId | ppp session ID
@rvalue SUCCESS | Success.
@rvalue FAILED | Failed
@comm	
*/
int32 rtl865x_deReferPpp(uint32 sessionId)
{
	int32 retval = FAILED;
	unsigned long flags;	
	//rtl_down_interruptible(&ppp_sem);
	local_irq_save(flags);
	retval = _rtl865x_deReferPpp(sessionId);
	//rtl_up(&ppp_sem);
	local_irq_restore(flags);
	return retval;
}
Esempio n. 2
0
static int32 _rtl865x_delNxtHop(uint32 attr, uint32 entryIdx)
{
	rtl865x_nextHopEntry_t *entry;
	//int32 retval = 0;

	if(entryIdx >= NXTHOP_ENTRY_NUM)
		return RTL_EINVALIDINPUT;

	entry = &rtl865x_nxtHopTable[entryIdx];

	if(entry->valid == 0)
		return RTL_EENTRYNOTFOUND;

	if(entry->refCnt > 1)
	{
		printk("%s(%d),refcnt(%d)\n",__FUNCTION__,__LINE__,entry->refCnt);
		return SUCCESS;
	}

	/*now delete the entry*/
	//if(entry->srcIp_t)
		//retval = rtl865x_delIp(entry->srcIp_t->extIp);

	if((entry->nextHopType == IF_PPPOE)
			|| (entry->nextHopType == IF_PPTP)
			|| (entry->nextHopType == IF_L2TP)
			)
	{
		
		#if LINUX_VERSION_CODE > KERNEL_VERSION(3,4,0)
		_rtl865x_deReferPpp(entry->nexthop);
		#else
		rtl865x_deReferPpp(entry->nexthop);
		#endif
		
	}

	rtl865x_deReferNetif(entry->dstNetif->name);	
	memset(entry,0,sizeof(rtl865x_nextHopEntry_t));
	
	/*update asic nextHop table*/
	//_rtl865x_arrangeNxtHop(entryIdx,1);

	return SUCCESS;
	
}