Beispiel #1
0
bool COXEventManager::EnterAttender(LPCHARACTER pkChar)
{
	DWORD pid = pkChar->GetPlayerID();
	
	if (CheckIpAddress(pkChar))
	{
		m_map_char.insert(std::make_pair(pid, pid));
		m_map_attender.insert(std::make_pair(pid, pid));
		return true;
	}

	return false;
}
/*
* fn: 设置网卡的子网掩码
* pIf: 网卡名字,例如eth0
* netMask: 所指定的子网掩码
*/
int NetSetMask( char *pIf, const char *netMask )
{
	int fd;
	struct ifreq ifr;
	struct sockaddr_in addr;    

	if( NULL == netMask )
    {
    	SVPrint( "error:NULL == netMask!\r\n" );
    	return FI_FAILED;
    }

	if( CheckIpAddress(netMask) < 0 )
    {
    	SVPrint( "error netMask:%s!\r\n", netMask );
    	return FI_FAILED;
    }
	if( (fd = socket (AF_INET, SOCK_DGRAM, 0)) < 0 )
    {
    	SVPrint( "socket() error:%s!\r\n", STRERROR_ERRNO );
    	return FI_FAILED;
    }
	strncpy( ifr.ifr_name, pIf, IFNAMSIZ );
	ifr.ifr_name[IFNAMSIZ - 1] = '\0';
	bzero( &addr, sizeof(struct sockaddr_in) );
	if( inet_pton(AF_INET, netMask, &addr.sin_addr) < 0 )
    {        
    	Close(fd);
    	SVPrint( "inet_pton() error:%s!\r\n", STRERROR_ERRNO );
        return FI_FAILED;
    }
    addr.sin_family = AF_INET;
    addr.sin_port = 0;
    memcpy( &ifr.ifr_addr, &addr, sizeof(struct sockaddr) );
    if( ioctl(fd, SIOCSIFNETMASK, &ifr) < 0 )
    {
    	Close( fd );
    	SVPrint( "ioctl() error:%s!\r\n", STRERROR_ERRNO );
        return FI_FAILED;
    }
	Close( fd );
	return FI_SUCCESSFUL;
}