Mixes for Privacy and Anonymity in the Internet
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
CAFirstMix Class Referenceabstract
Inheritance diagram for CAFirstMix:
CAMixWithReplayDB CAMix CAFirstMixA CAFirstMixB

Public Member Functions

 CAFirstMix ()
 
virtual ~CAFirstMix ()
 
tMixType getType () const
 
bool forceKickout (fmHashTableEntry *pHashTableEntry, const XERCES_CPP_NAMESPACE::DOMDocument *pErrDoc=NULL)
 
CAMutexgetLoginMutex ()
 
SINT32 connectToNextMix (CASocketAddr *a_pAddrNext)
 
SINT32 getMixedPackets (UINT64 &ppackets)
 
UINT32 getNrOfUsers ()
 
SINT32 getLevel (SINT32 *puser, SINT32 *prisk, SINT32 *ptraffic)
 
TermsAndConditionsgetTermsAndConditions (const UINT8 *opSki)
 
DOMNode * getTermsAndConditionsTemplate (UINT8 *templateRefID)
 
SINT32 getMixCount ()
 
tMixParametersgetMixParameters ()
 Returns the ordered list of the mix parameters from the first mix to the last mix. More...
 
SINT32 setMixParameters (const tMixParameters &params)
 Sets the parameters for the mix specified in the params.m_strMixID field. More...
 
SINT32 handleKeyInfoExtensions (DOMElement *root)
 
SINT32 handleTermsAndConditionsExtension (DOMElement *extensionRoot)
 
- Public Member Functions inherited from CAMixWithReplayDB
 CAMixWithReplayDB ()
 
CADatabasegetReplayDB () const
 
- Public Member Functions inherited from CAMix
 CAMix ()
 
virtual ~CAMix ()
 
SINT32 start ()
 
virtual void shutDown ()
 
virtual bool isShutDown ()
 
SINT32 getMixCascadeInfo (XERCES_CPP_NAMESPACE::DOMDocument *&docMixCascadeInfo)
 Returns the Mix-Cascade info which should be send to the InfoService. More...
 
bool acceptsReconfiguration ()
 
CAControlChannelDispatchergetDownstreamControlChannelDispatcher () const
 
CAControlChannelDispatchergetUpstreamControlChannelDispatcher () const
 
UINT32 getLastConnectionTime ()
 
bool isConnected ()
 

Public Attributes

UINT64 m_u64LastTimestampReceived
 
- Public Attributes inherited from CAMixWithReplayDB
UINT64 m_u64ReferenceTime
 

Protected Member Functions

virtual SINT32 loop ()=0
 
bool isShuttingDown ()
 
SINT32 init ()
 
SINT32 clean ()
 
virtual SINT32 initOnce ()
 
virtual SINT32 processKeyExchange ()
 
SINT32 initMixParameters (DOMElement *elemMixes)
 Initialises the MixParameters info for each mix form the <Mixes> element received from the second mix. More...
 
SINT32 incUsers (LP_fmHashTableEntry pHashEntry)
 
SINT32 decUsers (LP_fmHashTableEntry pHashEntry)
 
SINT32 incMixedPackets ()
 
SINT32 doUserLogin (CAMuxSocket *pNewUSer, UINT8 perrIP[4])
 
SINT32 reconfigure ()
 
SINT32 deleteCountryStats ()
 
- Protected Member Functions inherited from CAMix
SINT32 checkCompatibility (DOMNode *a_parent, const char *a_mixPosition)
 
SINT32 appendCompatibilityInfo (DOMNode *a_parent)
 
SINT32 addMixInfo (DOMNode *a_element, bool a_bForceFirstNode)
 
virtual SINT32 initMixCascadeInfo (DOMElement *elemMixes)
 This will initialize the XML Cascade Info struct XMLFirstMixToInfoService that is sent to the InfoService in CAInfoService::sendCascadeHelo() More...
 
SINT32 signXML (DOMNode *a_element)
 

Protected Attributes

CAIPListm_pIPList
 
CATempIPBlockListm_pIPBlockList
 
CAQueuem_pQueueSendToMix
 
CAQueuem_pQueueReadFromMix
 
CAFirstMixChannelListm_pChannelList
 
volatile UINT32 m_nUser
 
UINT32 m_nSocketsIn
 
volatile bool m_bRestart
 
CASocket ** m_arrSocketsIn
 
UINT32 m_u32MixCount
 
tMixParametersm_arMixParameters
 
CASocketGroupEpollm_psocketgroupUsersRead
 
CASocketGroupEpollm_psocketgroupUsersWrite
 
CAMuxSocketm_pMuxOut
 
UINT8m_xmlKeyInfoBuff
 
UINT16 m_xmlKeyInfoSize
 
XERCES_CPP_NAMESPACE::DOMDocument * m_docMixCascadeInfo
 
UINT64 m_nMixedPackets
 
CAASymCipherm_pRSA
 
CAMutexm_pmutexUser
 
CAMutexm_pmutexMixedPackets
 
CAMutexm_pmutexLoginThreads
 
CAThreadm_pthreadAcceptUsers
 
CAThreadPoolm_pthreadsLogin
 
CAThreadm_pthreadSendToMix
 
CAThreadm_pthreadReadFromMix
 
UINT32 m_nrOfTermsAndConditionsDefs
 
TermsAndConditions ** m_tnCDefs
 
UINT32 m_nrOfTermsAndConditionsTemplates
 
DOMNode ** m_tcTemplates
 
XERCES_CPP_NAMESPACE::DOMDocument * m_templatesOwner
 
const XMLCh * TNC_REQUEST
 
const XMLCh * TNC_CONFIRM
 
const XMLCh * TNC_INTERRUPT
 
tUINT32withLockm_PacketsPerCountryIN
 
tUINT32withLockm_PacketsPerCountryOUT
 
bool m_bIsShuttingDown
 
volatile bool m_bRunLog
 
CAMutexm_pmutexLogin
 
- Protected Attributes inherited from CAMixWithReplayDB
CADatabasem_pReplayDB
 
CAReplayCtrlChannelMsgProcm_pReplayMsgProc
 
- Protected Attributes inherited from CAMix
volatile bool m_bLoop
 
bool m_bReconfiguring
 
volatile bool m_bShutDown
 
CAMultiSignaturem_pMultiSignature
 
CAInfoServicem_pInfoService
 
UINT32 m_u32KeepAliveRecvInterval
 
UINT32 m_u32KeepAliveSendInterval
 
bool m_acceptReconfiguration
 
volatile bool m_bConnected
 
volatile UINT32 m_lLastConnectionTime
 
XERCES_CPP_NAMESPACE::DOMDocument * m_docMixCascadeInfo
 
CAControlChannelDispatcherm_pMuxOutControlChannelDispatcher
 
CAControlChannelDispatcherm_pMuxInControlChannelDispatcher
 

Private Member Functions

SINT32 initCountryStats (char *db_host, char *db_user, char *db_passwd)
 
SINT32 updateCountryStats (const UINT8 ip[4], UINT32 a_countryID, bool bRemove)
 Update the statisitics of the countries users come from. More...
 
SINT32 sendReplayTimestampRequestsToAllMixes ()
 
SINT32 doUserLogin_internal (CAMuxSocket *pNewUSer, UINT8 perrIP[4])
 Sends and receives all data neccessary for a User to "login". More...
 
SINT32 isAllowedToPassRestrictions (CASocket *pNewMuxSocket)
 
termsAndConditionMixAnswer_thandleTermsAndConditionsLogin (XERCES_CPP_NAMESPACE::DOMDocument *request)
 
void incNewConnections ()
 
void decNewConnections ()
 

Private Attributes

volatile bool m_bRunLogCountries
 
volatile UINT32m_CountryStats
 
CAThreadm_threadLogLoop
 
MYSQL * m_mysqlCon
 
volatile UINT32 m_newConnections
 
CAMutexm_pmutexNewConnections
 

Static Private Attributes

static const UINT32 MAX_CONCURRENT_NEW_CONNECTIONS = NUM_LOGIN_WORKER_TRHEADS * 2
 

Friends

THREAD_RETURN fm_loopSendToMix (void *)
 How to end this thread: 0. More...
 
THREAD_RETURN fm_loopReadFromMix (void *)
 
THREAD_RETURN fm_loopAcceptUsers (void *)
 
THREAD_RETURN fm_loopReadFromUsers (void *)
 
THREAD_RETURN fm_loopDoUserLogin (void *param)
 
THREAD_RETURN iplist_loopDoLogCountries (void *param)
 
THREAD_RETURN fm_loopLog (void *)
 

Additional Inherited Members

- Public Types inherited from CAMix
enum  tMixType { FIRST_MIX, MIDDLE_MIX, LAST_MIX, JAP }
 
- Static Public Attributes inherited from CAMix
static const UINT32 TIMEOUT_MIX_CONNECTION_ESTABLISHEMENT = 60000
 

Constructor & Destructor Documentation

◆ CAFirstMix()

CAFirstMix::CAFirstMix ( )

◆ ~CAFirstMix()

virtual CAFirstMix::~CAFirstMix ( )
virtual

Member Function Documentation

◆ clean()

SINT32 CAFirstMix::clean ( )
protectedvirtual

◆ connectToNextMix()

SINT32 CAFirstMix::connectToNextMix ( CASocketAddr a_pAddrNext)

◆ decNewConnections()

void CAFirstMix::decNewConnections ( )
private

◆ decUsers()

SINT32 CAFirstMix::decUsers ( LP_fmHashTableEntry  pHashEntry)
protected

◆ deleteCountryStats()

SINT32 CAFirstMix::deleteCountryStats ( )
protected

◆ doUserLogin()

SINT32 CAFirstMix::doUserLogin ( CAMuxSocket pNewUSer,
UINT8  perrIP[4] 
)
protected

◆ doUserLogin_internal()

SINT32 CAFirstMix::doUserLogin_internal ( CAMuxSocket pNewUser,
UINT8  peerIP[4] 
)
private

Sends and receives all data neccessary for a User to "login".

This means sending the public key of the Mixes and receiving the sym keys of JAP. This is done in a thread on a per user basis

Todo:
Cleanup of runing thread if mix restarts...

TODO: move to the if-statement above

References CASocketGroupEpoll::add(), CAFirstMixChannelList::add(), AI_LOGIN_SO_TIMEOUT, AUTH_LOGIN_FAILED, AUTH_LOGIN_NOT_FINISHED, AUTH_LOGIN_SKIP_SETTLEMENT, AUTH_WAITING_FOR_FIRST_SETTLED_CC, BEGIN_STACK, t_MixPacket::channel, cleanupTnCMixAnswer(), t_fmhashtableentry::countryID, createDOMDocument(), createDOMElement(), CABase64::decode(), decryptXMLElement(), DOM_Output::dumpToMem(), E_SOCKETCLOSED, E_SUCCESS, E_TIMEDOUT, E_UNKNOWN, CABase64::encode(), equals(), CAAccountingInstance::finishLoginProcess(), FIRST_MIX_RECEIVE_SYM_KEY_FROM_JAP_TIME_OUT, CAQueue::get(), CAFirstMixChannelList::get(), GET_NET_ERROR, GET_NET_ERROR_STR, CAMuxSocket::getCASocket(), getDOMChildByName(), getDOMElementValue(), getMixCount(), CACmdLnOptions::getMixId(), CALibProxytest::getOptions(), CAQueue::getSize(), handleTermsAndConditionsLogin(), t_fmhashtableentry::id, incUsers(), INIT_STACK, CATempIPBlockList::insertIP(), CASocket::isClosed(), CAAccountingInstance::loginProcessStatus(), m_arMixParameters, m_pChannelList, m_pIPBlockList, m_pIPList, CAMix::m_pMultiSignature, CAMixWithReplayDB::m_pReplayMsgProc, m_pRSA, m_psocketgroupUsersRead, m_psocketgroupUsersWrite, m_u64LastTimestampReceived, CAMixWithReplayDB::m_u64ReferenceTime, m_xmlKeyInfoBuff, m_xmlKeyInfoSize, MIXPACKET_SIZE, CAAccountingInstance::newSettlementTransaction(), parseDOMDocument(), t_fmhashtableentry::pControlChannelDispatcher, t_fmhashtableentry::pControlMessageQueue, T_UserLoginData::pNewUser, CAMuxSocket::prepareForSend(), CAMsg::printMsg(), CAControlChannelDispatcher::proccessMixPacket(), t_fmhashtableentry::pSymCipher, CAFirstMixChannelList::pushTimeoutEntry(), CAMuxSocket::receive(), CASocket::receiveFullyT(), CAControlChannelDispatcher::registerControlChannel(), CAFirstMixChannelList::remove(), CAIPList::removeIP(), REPLAY_BASE, termsAndConditionMixAnswer_t::result, SAVE_STACK, CASocket::sendFullyTimeOut(), SET_NET_ERROR, CAMuxSocket::setCrypt(), setDOMElementAttribute(), setDOMElementValue(), CASymCipher::setIVs(), CASocket::setKeepAlive(), CASymCipher::setKey(), CASocket::setNonBlocking(), CAMuxSocket::setReceiveKey(), CAMuxSocket::setSendKey(), CAMultiSignature::sign(), strerror(), TC_FAILED, TC_UNFINISHED, CAAccountingInstance::unlockLogin(), and termsAndConditionMixAnswer_t::xmlAnswer.

Referenced by doUserLogin().

◆ forceKickout()

bool CAFirstMix::forceKickout ( fmHashTableEntry pHashTableEntry,
const XERCES_CPP_NAMESPACE::DOMDocument *  pErrDoc = NULL 
)

◆ getLevel()

SINT32 CAFirstMix::getLevel ( SINT32 puser,
SINT32 prisk,
SINT32 ptraffic 
)

References E_SUCCESS, and getNrOfUsers().

◆ getLoginMutex()

CAMutex* CAFirstMix::getLoginMutex ( )

◆ getMixCount()

SINT32 CAFirstMix::getMixCount ( )

Referenced by doUserLogin_internal().

◆ getMixedPackets()

SINT32 CAFirstMix::getMixedPackets ( UINT64 ppackets)

References E_SUCCESS, m_nMixedPackets, and set64().

◆ getMixParameters()

tMixParameters* CAFirstMix::getMixParameters ( )

Returns the ordered list of the mix parameters from the first mix to the last mix.

◆ getNrOfUsers()

UINT32 CAFirstMix::getNrOfUsers ( )

◆ getTermsAndConditions()

TermsAndConditions * CAFirstMix::getTermsAndConditions ( const UINT8 opSki)

◆ getTermsAndConditionsTemplate()

DOMNode * CAFirstMix::getTermsAndConditionsTemplate ( UINT8 templateRefID)

◆ getType()

tMixType CAFirstMix::getType ( ) const
virtual

Implements CAMix.

References CAMix::FIRST_MIX.

Referenced by isAllowedToPassRestrictions().

◆ handleKeyInfoExtensions()

SINT32 CAFirstMix::handleKeyInfoExtensions ( DOMElement *  root)

◆ handleTermsAndConditionsExtension()

SINT32 CAFirstMix::handleTermsAndConditionsExtension ( DOMElement *  extensionRoot)

◆ handleTermsAndConditionsLogin()

termsAndConditionMixAnswer_t * CAFirstMix::handleTermsAndConditionsLogin ( XERCES_CPP_NAMESPACE::DOMDocument *  request)
private

◆ incMixedPackets()

SINT32 CAFirstMix::incMixedPackets ( )
protected

References E_SUCCESS, and inc64().

Referenced by CAFirstMixB::loop(), and CAFirstMixA::loop().

◆ incNewConnections()

void CAFirstMix::incNewConnections ( )
private

References CAMutex::lock(), and CAMutex::unlock().

Referenced by fm_loopAcceptUsers().

◆ incUsers()

SINT32 CAFirstMix::incUsers ( LP_fmHashTableEntry  pHashEntry)
protected

◆ init()

SINT32 CAFirstMix::init ( )
protectedvirtual

Connect to the next mix

Implements CAMix.

References CATargetInterface::cleanAddr(), connectToNextMix(), CASocket::create(), createDOMDocument(), CACmdLnOptions::createSockets(), E_SHUTDOWN, E_SUCCESS, E_UNKNOWN, ev_net_keyExchangeNextSuccessful, ev_net_nextConnected, ev_net_nextConnectionClosed, fm_loopAcceptUsers, fm_loopReadFromMix, fm_loopSendToMix, FM_PACKET_STATS_LOG_INTERVALL, GET_NET_ERROR_STR, CATargetInterface::getAddr(), CAMuxSocket::getCASocket(), CACmdLnOptions::getCountryStatsDBConnectionLoginData(), CALibProxytest::getOptions(), CASocket::getRecvBuff(), CASocket::getSendBuff(), CACmdLnOptions::getTargetInterface(), CACmdLnOptions::getTargetInterfaceCount(), CATargetInterface::getTargetType(), CASocketAddr::getType(), CAAccountingInstance::init(), CAAccountingDBInterface::init(), initCountryStats(), isShuttingDown(), m_arrSocketsIn, m_bRestart, m_nMixedPackets, m_nSocketsIn, m_pChannelList, m_pIPBlockList, m_pIPList, m_pMuxOut, CAMix::m_pMuxOutControlChannelDispatcher, m_pQueueReadFromMix, m_pQueueSendToMix, CAMixWithReplayDB::m_pReplayDB, CAMixWithReplayDB::m_pReplayMsgProc, m_psocketgroupUsersRead, m_psocketgroupUsersWrite, m_pthreadAcceptUsers, m_pthreadReadFromMix, m_pthreadSendToMix, m_pthreadsLogin, m_templatesOwner, m_u64LastTimestampReceived, CAMixWithReplayDB::m_u64ReferenceTime, MAX_LOGIN_QUEUE, MIXPACKET_SIZE, MONITORING_FIRE_NET_EVENT, NUM_LOGIN_WORKER_TRHEADS, CAMsg::printMsg(), processKeyExchange(), CASocket::setKeepAlive(), CAThread::setMainLoop(), CASocket::setRecvBuff(), CASocket::setSendBuff(), CADatabase::start(), CAThread::start(), and TARGET_MIX.

◆ initCountryStats()

SINT32 CAFirstMix::initCountryStats ( char *  db_host,
char *  db_user,
char *  db_passwd 
)
private

◆ initMixParameters()

SINT32 CAFirstMix::initMixParameters ( DOMElement *  elemMixes)
protected

Initialises the MixParameters info for each mix form the <Mixes> element received from the second mix.

set u32MixCount and m_arMixParameters from the <Mixes> element received from the second mix.

References E_SUCCESS, getDOMElementAttribute(), getElementsByTagName(), CACmdLnOptions::getMixId(), CALibProxytest::getOptions(), len, m_arMixParameters, t_mix_parameters::m_strMixID, and m_u32MixCount.

Referenced by processKeyExchange().

◆ initOnce()

SINT32 CAFirstMix::initOnce ( )
protectedvirtual

◆ isAllowedToPassRestrictions()

SINT32 CAFirstMix::isAllowedToPassRestrictions ( CASocket pNewMuxSocket)
private

Referenced by fm_loopAcceptUsers().

◆ isShuttingDown()

bool CAFirstMix::isShuttingDown ( )
protected

References m_bIsShuttingDown.

Referenced by init().

◆ loop()

virtual SINT32 CAFirstMix::loop ( )
protectedpure virtual

Implements CAMix.

Implemented in CAFirstMixA, and CAFirstMixB.

◆ processKeyExchange()

SINT32 CAFirstMix::processKeyExchange ( )
protectedvirtual

Getting the KeepAlive Traffic...

initialises MixParameters struct

Implements CAMix.

References CAMix::addMixInfo(), CAMix::appendCompatibilityInfo(), CAMix::checkCompatibility(), createDOMDocument(), createDOMElement(), CABase64::decode(), DOM_Output::dumpToMem(), E_SUCCESS, E_UNKNOWN, CABase64::encode(), encodeXMLEncryptedKey(), equals(), CAASymCipher::generateKeyPair(), GET_NET_ERROR, GET_NET_ERROR_STR, CAMuxSocket::getCASocket(), getDOMChildByName(), getDOMElementAttribute(), getDOMElementValue(), CACmdLnOptions::getKeepAliveRecvInterval(), CACmdLnOptions::getKeepAliveSendInterval(), CACmdLnOptions::getNextMixTestCertificate(), CALibProxytest::getOptions(), CAASymCipher::getPublicKeyAsDOMElement(), getRandom(), getTermsAndConditions(), CACmdLnOptions::getTrustedCertificateStore(), handleKeyInfoExtensions(), CAMix::initMixCascadeInfo(), initMixParameters(), len, CAMix::m_pMultiSignature, m_pMuxOut, m_pRSA, CAMix::m_u32KeepAliveRecvInterval, CAMix::m_u32KeepAliveSendInterval, m_xmlKeyInfoBuff, m_xmlKeyInfoSize, max, MIX_CASCADE_PROTOCOL_VERSION, parseDOMDocument(), PAYMENT_VERSION, CAMsg::printMsg(), readFile(), CAMuxSocket::receiveFully(), saveFile(), CASocket::send(), CAMuxSocket::setCrypt(), setDOMElementAttribute(), setDOMElementValue(), CACmdLnOptions::setNextMixTestCertificate(), CAASymCipher::setPublicKeyAsDOMNode(), CAMuxSocket::setReceiveKey(), CAMuxSocket::setSendKey(), CAMultiSignature::signXML(), CAMix::signXML(), CAMix::TIMEOUT_MIX_CONNECTION_ESTABLISHEMENT, CACertStore::verifyMixCert(), CACmdLnOptions::verifyMixCertificates(), and CAMultiSignature::verifyXML().

Referenced by init().

◆ reconfigure()

SINT32 CAFirstMix::reconfigure ( )
protectedvirtual

◆ sendReplayTimestampRequestsToAllMixes()

SINT32 CAFirstMix::sendReplayTimestampRequestsToAllMixes ( )
private

◆ setMixParameters()

SINT32 CAFirstMix::setMixParameters ( const tMixParameters params)

Sets the parameters for the mix specified in the params.m_strMixID field.

Only the values which are set are copied to the stored parameters of the mixes of this cascade.

References E_SUCCESS, m_arMixParameters, t_mix_parameters::m_strMixID, m_u32MixCount, t_mix_parameters::m_u32ReplayBase, t_mix_parameters::m_u32ReplayOffset, and m_u64LastTimestampReceived.

Referenced by CAReplayCtrlChannelMsgProc::proccessGotTimestamp().

◆ updateCountryStats()

SINT32 CAFirstMix::updateCountryStats ( const UINT8  ip[4],
UINT32  a_countryID,
bool  bRemove 
)
private

Update the statisitics of the countries users come from.

The dependency between the argumenst is as follow:

Parameters
bRemoveif true the number of users of a given country is decreased, if false it is increased
a_countryIDthe country the user comes from. Must be set if bRemove==true. If bRemove==false and ip==NULL, than if also must be set to the country the user comes from. In case ip!=NULL if holdes the default country id, if no country for the ip could be found
ipthe ip the user comes from. this ip is looked up in the databse to find the corresponding country. it is only used if bRemove==false. If no country for that ip could be found a_countryID is used as default value
Returns
the countryID which was asigned to the user. This may be the default value a_countryID, if no country could be found.

References m_CountryStats, m_mysqlCon, NR_OF_COUNTRIES, and CAMsg::printMsg().

Friends And Related Function Documentation

◆ fm_loopAcceptUsers

THREAD_RETURN fm_loopAcceptUsers ( void *  )
friend

Referenced by init().

◆ fm_loopDoUserLogin

THREAD_RETURN fm_loopDoUserLogin ( void *  param)
friend

Referenced by fm_loopAcceptUsers().

◆ fm_loopLog

THREAD_RETURN fm_loopLog ( void *  )
friend

Referenced by CAFirstMixA::loop().

◆ fm_loopReadFromMix

THREAD_RETURN fm_loopReadFromMix ( void *  )
friend

ToDo: check if keep-alive is really correct here - should it not be moved upwards?

Referenced by init().

◆ fm_loopReadFromUsers

THREAD_RETURN fm_loopReadFromUsers ( void *  )
friend

◆ fm_loopSendToMix

THREAD_RETURN fm_loopSendToMix ( void *  )
friend

How to end this thread: 0.

set bRestart=true;

  1. Close connection to next mix
  2. put some bytes (len>MIX_PACKET_SIZE) in the Mix-Output-Queue

Referenced by init().

◆ iplist_loopDoLogCountries

THREAD_RETURN iplist_loopDoLogCountries ( void *  param)
friend

Referenced by initCountryStats().

Member Data Documentation

◆ m_arMixParameters

tMixParameters* CAFirstMix::m_arMixParameters
protected

◆ m_arrSocketsIn

CASocket** CAFirstMix::m_arrSocketsIn
protected

◆ m_bIsShuttingDown

bool CAFirstMix::m_bIsShuttingDown
protected

◆ m_bRestart

volatile bool CAFirstMix::m_bRestart
protected

◆ m_bRunLog

volatile bool CAFirstMix::m_bRunLog
protected

◆ m_bRunLogCountries

volatile bool CAFirstMix::m_bRunLogCountries
private

◆ m_CountryStats

volatile UINT32* CAFirstMix::m_CountryStats
private

◆ m_docMixCascadeInfo

XERCES_CPP_NAMESPACE::DOMDocument* CAFirstMix::m_docMixCascadeInfo
protected

Referenced by clean().

◆ m_mysqlCon

MYSQL* CAFirstMix::m_mysqlCon
private

◆ m_newConnections

volatile UINT32 CAFirstMix::m_newConnections
private

Referenced by fm_loopAcceptUsers().

◆ m_nMixedPackets

UINT64 CAFirstMix::m_nMixedPackets
protected

Referenced by clean(), getMixedPackets(), and init().

◆ m_nrOfTermsAndConditionsDefs

UINT32 CAFirstMix::m_nrOfTermsAndConditionsDefs
protected

◆ m_nrOfTermsAndConditionsTemplates

UINT32 CAFirstMix::m_nrOfTermsAndConditionsTemplates
protected

◆ m_nSocketsIn

UINT32 CAFirstMix::m_nSocketsIn
protected

◆ m_nUser

volatile UINT32 CAFirstMix::m_nUser
protected

◆ m_PacketsPerCountryIN

tUINT32withLock* CAFirstMix::m_PacketsPerCountryIN
protected

◆ m_PacketsPerCountryOUT

tUINT32withLock* CAFirstMix::m_PacketsPerCountryOUT
protected

◆ m_pChannelList

CAFirstMixChannelList* CAFirstMix::m_pChannelList
protected

◆ m_pIPBlockList

CATempIPBlockList* CAFirstMix::m_pIPBlockList
protected

◆ m_pIPList

CAIPList* CAFirstMix::m_pIPList
protected

◆ m_pmutexLogin

CAMutex* CAFirstMix::m_pmutexLogin
protected

Referenced by CAFirstMixA::loop().

◆ m_pmutexLoginThreads

CAMutex* CAFirstMix::m_pmutexLoginThreads
protected

◆ m_pmutexMixedPackets

CAMutex* CAFirstMix::m_pmutexMixedPackets
protected

◆ m_pmutexNewConnections

CAMutex* CAFirstMix::m_pmutexNewConnections
private

◆ m_pmutexUser

CAMutex* CAFirstMix::m_pmutexUser
protected

◆ m_pMuxOut

CAMuxSocket* CAFirstMix::m_pMuxOut
protected

◆ m_pQueueReadFromMix

CAQueue* CAFirstMix::m_pQueueReadFromMix
protected

◆ m_pQueueSendToMix

CAQueue* CAFirstMix::m_pQueueSendToMix
protected

◆ m_pRSA

CAASymCipher* CAFirstMix::m_pRSA
protected

◆ m_psocketgroupUsersRead

CASocketGroupEpoll* CAFirstMix::m_psocketgroupUsersRead
protected

◆ m_psocketgroupUsersWrite

CASocketGroupEpoll* CAFirstMix::m_psocketgroupUsersWrite
protected

◆ m_pthreadAcceptUsers

CAThread* CAFirstMix::m_pthreadAcceptUsers
protected

◆ m_pthreadReadFromMix

CAThread* CAFirstMix::m_pthreadReadFromMix
protected

Referenced by clean(), init(), and CAFirstMixB::loop().

◆ m_pthreadSendToMix

CAThread* CAFirstMix::m_pthreadSendToMix
protected

Referenced by clean(), init(), and CAFirstMixB::loop().

◆ m_pthreadsLogin

CAThreadPool* CAFirstMix::m_pthreadsLogin
protected

◆ m_tcTemplates

DOMNode** CAFirstMix::m_tcTemplates
protected

◆ m_templatesOwner

XERCES_CPP_NAMESPACE::DOMDocument* CAFirstMix::m_templatesOwner
protected

◆ m_threadLogLoop

CAThread* CAFirstMix::m_threadLogLoop
private

◆ m_tnCDefs

TermsAndConditions** CAFirstMix::m_tnCDefs
protected

◆ m_u32MixCount

UINT32 CAFirstMix::m_u32MixCount
protected

◆ m_u64LastTimestampReceived

UINT64 CAFirstMix::m_u64LastTimestampReceived

◆ m_xmlKeyInfoBuff

UINT8* CAFirstMix::m_xmlKeyInfoBuff
protected

◆ m_xmlKeyInfoSize

UINT16 CAFirstMix::m_xmlKeyInfoSize
protected

◆ MAX_CONCURRENT_NEW_CONNECTIONS

const UINT32 CAFirstMix::MAX_CONCURRENT_NEW_CONNECTIONS = NUM_LOGIN_WORKER_TRHEADS * 2
staticprivate

Referenced by fm_loopAcceptUsers().

◆ TNC_CONFIRM

const XMLCh* CAFirstMix::TNC_CONFIRM
protected

◆ TNC_INTERRUPT

const XMLCh* CAFirstMix::TNC_INTERRUPT
protected

◆ TNC_REQUEST

const XMLCh* CAFirstMix::TNC_REQUEST
protected