📄 initval.c
字号:
for( i = 0; i < _MAX_GTALK_HASH_BUCKET; i ++ )
kfree( gVar.pGtalkHash[ i ] );
return 0;
}
char FreeGVar( )
{
int i;
PWEB_MAIL_CONFIG pWebMailConfig = NULL;
PSMTP_HASH_HEAD pSmtpHashHead;
PSHORT_DOUBLE_LIST_PACKET pShortPacket;
PDOUBLE_LIST_PACKET pPacket;
for( i = 0; i < _MAX_CYC_ARRAY_DEPTH; i ++ )
kfree( gVar.TcpCycArrayHead.PacketArray[ i ] );
for( i = 0; i < _MAX_CYC_ARRAY_DEPTH; i ++ )
kfree( gVar.UdpCycArrayHead.PacketArray[ i ] );
while( gVar.pShortPacketPool->iNumber )
{
pShortPacket = (PSHORT_DOUBLE_LIST_PACKET)_RemoveTailList( gVar.pShortPacketPool );
PutPacketPool( (PDOUBLE_LIST_PACKET)pShortPacket );
}
while( gVar.pLongPacketPool->iNumber )
{
pPacket = (PDOUBLE_LIST_PACKET)_RemoveTailList( gVar.pLongPacketPool );
PutPacketPool( pPacket );
}
kfree( gVar.pSmtpQueque );
kfree( gVar.pHttpQueque );
kfree( gVar.pMsnQueque);
kfree( gVar.pPop3Queque );
kfree( gVar.pHttpUrlQueque );
kfree( gVar.pFtpQueque );
kfree( gVar.pTelnetQueque );
kfree( gVar.pYahooQueque );
kfree( gVar.pIcqQueque );
kfree( gVar.pIrcQueque);
kfree( gVar.pAolQueque);
kfree( gVar.pPpQueque );
kfree( gVar.pGtalkQueque );
kfree( gVar.pHashHeadQueque );
pSmtpHashHead = (PSMTP_HASH_HEAD)_RemoveTailListNonLock( gVar.pFileQueque );
while( gVar.pFileQueque->iNumber )
{
FREE_HASHHEAD( pSmtpHashHead );
pSmtpHashHead = (PSMTP_HASH_HEAD)_RemoveTailListNonLock( gVar.pFileQueque );
}
kfree( gVar.pFileQueque );
kfree( gVar.pWebLoginFileQueque );
kfree( gVar.pWebMailFileQueque );
kfree( gVar.pBBSFileQueque );
kfree( gVar.pMsnFileQueque );
kfree( gVar.pFtpFileQueque );
kfree( gVar.pTelnetFileQueque );
kfree( gVar.pIcqFileQueque );
kfree( gVar.pYahooFileQueque );
kfree( gVar.pHttpUrlFileQueque );
kfree( gVar.pPpFileQueque );
kfree( gVar.pGtalkFileQueque );
kfree( gVar.pIrcFileQueque );
for( i = 0; i < _MAX_SMTP_HASH_BUCKET; i ++ )
{
while( gVar.pSmtpHash[ i ]->iNumber )
{
pSmtpHashHead = (PSMTP_HASH_HEAD)_RemoveTailListNonLock( gVar.pSmtpHash[ i ] );
FREE_HASHHEAD( pSmtpHashHead );
}
kfree( gVar.pSmtpHash[ i ] );
}
for( i = 0; i < _MAX_HTTP_HASH_BUCKET; i ++ )
kfree( gVar.pHttpHash[ i ] );
for( i = 0; i < _MAX_MSN_HASH_BUCKET; i ++ )
kfree( gVar.pMsnHash[ i ] );
for( i = 0; i < _MAX_HTTP_POST_BUCKET; i ++ )
kfree( gVar.pPostHash[ i ] );
for( i = 0; i < _MAX_FTP_HASH_BUCKET; i ++ )
kfree( gVar.pFtpHash[ i ] );
for( i = 0; i < _MAX_TELNET_HASH_BUCKET; i ++ )
kfree( gVar.pTelnetHash[ i ] );
for( i = 0; i < _MAX_ICQ_HASH_BUCKET; i ++ )
kfree( gVar.pIcqHash[ i ] );
for( i = 0; i < _MAX_YAHOO_HASH_BUCKET; i ++ )
kfree( gVar.pYahooHash[ i ] );
for( i = 0; i < _MAX_IRC_HASH_BUCKET; i ++ )
kfree( gVar.pIrcHash[ i ] );
for( i = 0; i < _MAX_AOL_HASH_BUCKET; i ++ )
kfree( gVar.pAolHash[ i ] );
for( i = 0; i < _MAX_PP_HASH_BUCKET; i ++ )
kfree( gVar.pPpHash[ i ] );
for( i = 0; i < _MAX_GTALK_HASH_BUCKET; i ++ )
kfree( gVar.pGtalkHash[ i ] );
while( 1 )
{
pWebMailConfig = gVar.gWebMailConfig;
gVar.gWebMailConfig = pWebMailConfig->pNext;
if( gVar.gWebMailConfig )
kfree( pWebMailConfig );
else
break;
}
if( gVar.shortPacketHeadInfo.pPacketLookside )
kmem_cache_destroy( gVar.shortPacketHeadInfo.pPacketLookside );
if( gVar.longPacketHeadInfo.pPacketLookside )
kmem_cache_destroy( gVar.longPacketHeadInfo.pPacketLookside );
if( gVar.hashHeadInfo.pHashLookside )
kmem_cache_destroy( gVar.hashHeadInfo.pHashLookside );
return 1;
}
void FreeDoubleListPool( PDOUBLE_LIST_HEAD pListHead )
{
PDOUBLE_LIST_ITEM pItem = NULL;
pItem = pListHead->pHead;
while( pItem )
{
pListHead->pHead = pItem->pNext;
kfree( (PDOUBLE_LIST_PACKET)pItem );
pItem = pListHead->pHead;
}
}
char InitHash()
{
if( !InitSmtpHash() )
return 0;
if( !InitHttpHash() )
return 0;
if( !InitIPHash() )
return 0;
if( !InitDomainHash() )
return 0;
if( !InitMsnHash() )
return 0;
if( !InitFtpHash() )
return 0;
if( !InitTelnetHash() )
return 0;
if( !InitIcqHash() )
return 0;
if( !InitYahooHash() )
return 0;
if( !InitRuleHash() )
return 0;
if( !InitRuleIPHash() )
return 0;
if( !InitIrcHash() )
return 0;
if( !InitPpHash() )
return 0;
if( !InitGtalkHash() )
return 0;
if( !InitPostHash() )
return 0;
return 1;
}
char InitIPHash()
{
UINT i;
for( i = 0; i<_MAX_IP_HASH_BUCKET; i++ )
{
gVar.pIPHash[i] = NULL;
}
gVar.IPNumber = 0;
return 1;
}
char InitRuleIPHash()
{
UINT i;
for( i = 0; i < _MAX_RULE_IP_HASH_BUCKET; i ++ )
{
gVar.ruleIPHash[ i ].pHead= NULL;
spin_lock_init( &gVar.ruleIPHash[i].spinLock );
}
return 1;
}
char InitDomainHash()
{
UINT i;
for( i = 0; i < _MAX_DOMAIN_HASH_BUCKET; i ++ )
{
gVar.pDomainHash[ i ] = NULL;
}
gVar.domainNumber = 0;
return 1;
}
char InitSmtpHash()
{
UINT i, j;
for( i = 0; i < _MAX_SMTP_HASH_BUCKET; i ++ )
{
gVar.pSmtpHash[i] = (PDOUBLE_LIST_HEAD)kmalloc( sizeof(DOUBLE_LIST_HEAD), GFP_KERNEL );
if( gVar.pSmtpHash[i] == NULL )
{
printk("Allocate gVar.pSmtpHash fail\r\n");
for( j=0; j<i; j++ )
kfree( gVar.pSmtpHash[j] );
return 0;
}
_InitializeList( gVar.pSmtpHash[i]);
}
return 1;
}
char InitHttpHash()
{
UINT i, j;
for( i = 0; i < _MAX_HTTP_HASH_BUCKET; i ++ )
{
gVar.pHttpHash[ i ] = NULL;
gVar.pHttpHash[ i ] = (PDOUBLE_LIST_HEAD)kmalloc( sizeof(DOUBLE_LIST_HEAD), GFP_KERNEL);
if( gVar.pHttpHash[i] == NULL )
{
printk("Allocate gVar.pHttpHash fail\r\n");
for( j = 0; j < i; j ++ )
kfree( gVar.pHttpHash[ j ] );
return 0;
}
_InitializeList( gVar.pHttpHash[ i ]);
}
return 1;
}
char InitRuleHash()
{
UINT i;
for( i = 0; i<MAIL_HASH_LEN; i++ )
{
gVar.ruleHash.mail[i].pRule = NULL;
sema_init( &gVar.ruleHash.mail[ i ].fastMutex, 1 );
}
for( i = 0; i<MSN_HASH_LEN; i++ )
{
gVar.ruleHash.msn[i].pRule = NULL;
sema_init( &gVar.ruleHash.msn[i].fastMutex, 1 );
}
for( i = 0; i<QQ_HASH_LEN; i++ )
{
gVar.ruleHash.qq[i].pRule = NULL;
sema_init( &gVar.ruleHash.qq[i].fastMutex, 1 );
}
for( i = 0; i<ICQ_HASH_LEN; i++ )
{
gVar.ruleHash.icq[i].pRule = NULL;
sema_init( &gVar.ruleHash.icq[i].fastMutex, 1 );
}
for( i = 0; i<YAHOO_HASH_LEN; i++ )
{
gVar.ruleHash.yahoo[i].pRule = NULL;
sema_init( &gVar.ruleHash.yahoo[i].fastMutex, 1 );
}
for( i = 0; i<AOL_HASH_LEN; i++ )
{
gVar.ruleHash.aol[i].pRule = NULL;
sema_init( &gVar.ruleHash.aol[i].fastMutex, 1 );
}
for( i = 0; i<PP_HASH_LEN; i++ )
{
gVar.ruleHash.pp[i].pRule = NULL;
sema_init( &gVar.ruleHash.pp[i].fastMutex, 1 );
}
for( i = 0; i<IRC_HASH_LEN; i++ )
{
gVar.ruleHash.irc[i].pRule = NULL;
sema_init( &gVar.ruleHash.irc[i].fastMutex, 1 );
}
for( i = 0; i<GTALK_HASH_LEN; i++ )
{
gVar.ruleHash.gtalk[i].pRule = NULL;
sema_init( &gVar.ruleHash.gtalk[i].fastMutex, 1 );
}
return 1;
}
char InitMsnHash()
{
UINT i, j;
for( i = 0; i<_MAX_MSN_HASH_BUCKET; i++ )
{
gVar.pMsnHash[i] = (PDOUBLE_LIST_HEAD)kmalloc( sizeof(DOUBLE_LIST_HEAD), GFP_KERNEL );
if( gVar.pMsnHash[i] == NULL )
{
printk("Allocate gVar.pHttpHash fail\r\n");
for( j = 0; j < i; j ++ )
kfree( gVar.pMsnHash[j] );
return 0;
}
_InitializeList( gVar.pMsnHash[i]);
}
return 1;
}
char InitPostHash()
{
UINT i, j;
for( i = 0; i<_MAX_HTTP_POST_BUCKET; i++ )
{
gVar.pPostHash[ i ] = (PDOUBLE_LIST_HEAD)kmalloc( sizeof(DOUBLE_LIST_HEAD), GFP_KERNEL );
if( gVar.pPostHash[ i ] == NULL )
{
printk( "Allocate gVar.pPostHash fail\r\n" );
for( j = 0; j < i; j ++ )
kfree( gVar.pPostHash[ j ] );
return 0;
}
_InitializeList( gVar.pPostHash[ i ]);
}
return 1;
}
char InitFtpHash()
{
UINT i, j;
for( i = 0; i < _MAX_FTP_HASH_BUCKET; i ++ )
{
gVar.pFtpHash[ i ] = (PDOUBLE_LIST_HEAD)kmalloc( sizeof(DOUBLE_LIST_HEAD), GFP_KERNEL );
if( gVar.pFtpHash[i] == NULL )
{
printk("Allocate gVar.pHttpHash fail\r\n");
for( j=0; j<i; j++ )
kfree( gVar.pFtpHash[j] );
return 0;
}
_InitializeList( gVar.pFtpHash[i]);
}
return 1;
}
char InitTelnetHash()
{
UINT i, j;
for( i = 0; i<_MAX_TELNET_HASH_BUCKET; i++ )
{
gVar.pTelnetHash[i] = (PDOUBLE_LIST_HEAD)kmalloc( sizeof(DOUBLE_LIST_HEAD), GFP_KERNEL );
if( gVar.pTelnetHash[i] == NULL )
{
printk("Allocate gVar.pHttpHash fail\r\n");
for( j = 0; j < i; j ++ )
kfree( gVar.pTelnetHash[j] );
return 0;
}
_InitializeList( gVar.pTelnetHash[i]);
}
return 1;
}
char InitIcqHash()
{
UINT i, j;
for( i = 0; i<_MAX_ICQ_HASH_BUCKET; i++ )
{
gVar.pIcqHash[i] = (PDOUBLE_LIST_HEAD)kmalloc( sizeof(DOUBLE_LIST_HEAD), GFP_KERNEL );
if( gVar.pIcqHash[i] == NULL )
{
printk("Allocate gVar.pHttpHash fail\r\n");
for( j=0; j<i; j++ )
kfree( gVar.pIcqHash[ j ] );
return 0;
}
_InitializeList( gVar.pIcqHash[i]);
}
return 1;
}
char InitIrcHash()
{
UINT i, j;
for( i = 0; i<_MAX_IRC_HASH_BUCKET; i++ )
{
gVar.pIrcHash[i] = (PDOUBLE_LIST_HEAD)kmalloc( sizeof(DOUBLE_LIST_HEAD),
GFP_KERNEL );
if( gVar.pIrcHash[i] == NULL )
{
printk("Allocate gVar.pHttpHash fail\r\n");
for( j = 0; j < i; j ++ )
kfree( gVar.pIrcHash[j] );
return 0;
}
_InitializeList( gVar.pIrcHash[i]);
}
return 1;
}
char InitPpHash()
{
UINT i, j;
for( i = 0; i<_MAX_PP_HASH_BUCKET; i++ )
{
gVar.pPpHash[i] = (PDOUBLE_LIST_HEAD)kmalloc( sizeof(DOUBLE_LIST_HEAD), GFP_KERNEL );
if( gVar.pPpHash[i] == NULL )
{
printk("Allocate gVar.pHttpHash fail\r\n");
for( j=0; j<i; j++ )
kfree( gVar.pPpHash[j] );
return 0;
}
_InitializeList( gVar.pPpHash[i]);
}
return 1;
}
char InitGtalkHash()
{
UINT i, j;
for( i = 0; i<_MAX_GTALK_HASH_BUCKET; i++ )
{
gVar.pGtalkHash[i] = (PDOUBLE_LIST_HEAD)kmalloc( sizeof(DOUBLE_LIST_HEAD), GFP_KERNEL );
if( gVar.pGtalkHash[i] == NULL )
{
printk("Allocate gVar.pHttpHash fail\r\n");
for( j = 0; j<i; j++ )
kfree( gVar.pGtalkHash[j] );
return 0;
}
_InitializeList( gVar.pGtalkHash[i]);
}
return 1;
}
char InitYahooHash()
{
UINT i, j;
for( i = 0; i<_MAX_YAHOO_HASH_BUCKET; i++ )
{
gVar.pYahooHash[i] = (PDOUBLE_LIST_HEAD)kmalloc( sizeof(DOUBLE_LIST_HEAD),
GFP_KERNEL );
if( gVar.pYahooHash[i] == NULL )
{
printk("Allocate gVar.pHttpHash fail\r\n");
for( j=0; j<i; j++ )
kfree( gVar.pYahooHash[j] );
return 0;
}
_InitializeList( gVar.pYahooHash[i]);
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -