memset(&tCurTime, 0, sizeof(struct timeval));
for (i = 0;i < MAX_ACL_GROUP_NUM;i++)
{
if (0 == gtDomainInfo[i].dwGroupId)
{
continue;
}
OssUserLogInfo("ApMonitorMgrUpdateDomainInfo:Begin Find host[%s] in group[%d]\n", pHostName, gtDomainInfo[i].dwGroupId);
for (j = 0;j < gtDomainInfo[i].byDomainAclNum;j++)
{
//if (0 == strcmp(gtDomainInfo[i].atDomainInfo[j].DomainName, pHostName))
if (NULL != (pchDomainTmp = strstr(pHostName, gtDomainInfo[i].atDomainInfo[j].DomainName)))
{
bFound = FALSE;
byFreeIndex = 0xFFF;
byAgingIndex = 0xFFF;
iBakTimeDiff = 0;
bWildcard = FALSE;
bBroken = FALSE;
bWildcard = gtDomainInfo[i].atDomainInfo[j].bWildcard;
if(bWildcard)
{
for (w = j; w < gtDomainInfo[i].byDomainAclNum; w++)
{
if (0 == strcmp(gtDomainInfo[i].atDomainInfo[w].DomainName, pHostName))
{
bBroken = TRUE;
break;
}
}
if(bBroken)
{
continue;
}
if(strlen(pchDomainTmp) != strlen(gtDomainInfo[i].atDomainInfo[j].DomainName))
{
continue;
}
}
else if (0 != strcmp(gtDomainInfo[i].atDomainInfo[j].DomainName, pHostName))
{
continue;
}
for (k = 0; k < MAX_DOMAIN_ADDRESS_POOL; k++)
{
if (0 == gtDomainInfo[i].atDomainIpPool[k].tIpAddr)
{
if (0xFFF == byFreeIndex)
{
byFreeIndex = k;
}
continue;
}
gettimeofday(&tCurTime, NULL);
if (tIpv4Addr.s_addr == gtDomainInfo[i].atDomainIpPool[k].tIpAddr &&
j == gtDomainInfo[i].atDomainIpPool[k].dwDomainID)
{
bFound = TRUE;
memcpy(>DomainInfo[i].atDomainIpPool[k].tCfgTime, &tCurTime, sizeof(struct timeval));
//gtDomainInfo[i].bUpdate = FALSE;
OssUserLogInfo("ApMonitorMgrUpdateDomainInfo:Find host[%s] ip[%d] in group[%d],update aging time[%d]\n",
pHostName, tIpv4Addr.s_addr, gtDomainInfo[i].dwGroupId, tCurTime.tv_sec);
break;
}
iTimeDiff = tCurTime.tv_sec - gtDomainInfo[i].atDomainIpPool[k].tCfgTime.tv_sec;
if (MIN_AGING_TIME < iTimeDiff)
{
if ((0xFFF == byAgingIndex) || (iBakTimeDiff < iTimeDiff))
{
iBakTimeDiff = iTimeDiff;
byAgingIndex = k;
}
}
}
if(FALSE == bFound)
{
if (byFreeIndex < MAX_DOMAIN_ADDRESS_POOL)
{
byIndex = byFreeIndex;
}
else if (byAgingIndex < MAX_DOMAIN_ADDRESS_POOL)
{
byIndex = byAgingIndex;
}
else
{
byIndex = MAX_DOMAIN_ADDRESS_POOL - 1;
}
gtDomainInfo[i].atDomainIpPool[byIndex].tIpAddr = tIpv4Addr.s_addr;
memcpy(>DomainInfo[i].atDomainIpPool[byIndex].tCfgTime, &tCurTime, sizeof(struct timeval));
gtDomainInfo[i].atDomainIpPool[byIndex].byAction = gtDomainInfo[i].atDomainInfo[j].byAction;
gtDomainInfo[i].atDomainIpPool[byIndex].dwDomainID = j;
gtDomainInfo[i].bUpdate = TRUE;
bUpdate = TRUE;
OssUserLogInfo("ApMonitorMgrFindDomainInfo:need update group[%d], ip[%d], hostname[%s], curtime[%d]! \n",
gtDomainInfo[i].dwGroupId, tIpv4Addr.s_addr, pHostName, tCurTime.tv_sec);
}
break;
}
}
}
网络数据老化代码
最新推荐文章于 2023-12-18 23:06:08 发布