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

Public Member Functions

virtual void shutDown ()
 
- Public Member Functions inherited from CAFirstMix
 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 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 ()
 

Protected Member Functions

SINT32 loop ()
 
SINT32 closeConnection (fmHashTableEntry *pHashEntry)
 
- Protected Member Functions inherited from CAFirstMix
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)
 

Private Member Functions

bool sendToUsers ()
 
void notifyAllUserChannels (fmHashTableEntry *pfmHashEntry, UINT16 flags)
 
void finishPacket (fmHashTableEntry *pfmHashEntry)
 
void checkUserConnections ()
 
SINT32 accountTrafficUpstream (fmHashTableEntry *pHashEntry)
 
SINT32 accountTrafficDownstream (fmHashTableEntry *pfmHashEntry)
 

Friends

THREAD_RETURN fm_loopPacketProcessing (void *params)
 

Additional Inherited Members

- Public Types inherited from CAMix
enum  tMixType { FIRST_MIX , MIDDLE_MIX , LAST_MIX , JAP }
 
- Public Attributes inherited from CAFirstMix
UINT64 m_u64LastTimestampReceived
 
- Public Attributes inherited from CAMixWithReplayDB
UINT64 m_u64ReferenceTime
 
- Static Public Attributes inherited from CAMix
static const UINT32 TIMEOUT_MIX_CONNECTION_ESTABLISHEMENT = 60000
 
- Protected Attributes inherited from CAFirstMix
CAIPListm_pIPList
 
CATempIPBlockListm_pIPBlockList
 
CAQueuem_pQueueSendToMix
 
CAQueuem_pQueueReadFromMix
 
volatile UINT32 m_nUser
 
UINT32 m_nSocketsIn
 
volatile bool m_bRestart
 
CASocket ** m_arrSocketsIn
 
UINT32 m_u32MixCount
 
tMixParametersm_arMixParameters
 
CAFirstMixChannelListm_pChannelList
 
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
 

Member Function Documentation

◆ accountTrafficDownstream()

SINT32 CAFirstMixA::accountTrafficDownstream ( fmHashTableEntry pfmHashEntry)
private

◆ accountTrafficUpstream()

SINT32 CAFirstMixA::accountTrafficUpstream ( fmHashTableEntry pHashEntry)
private

◆ checkUserConnections()

void CAFirstMixA::checkUserConnections ( )
private

◆ closeConnection()

SINT32 CAFirstMixA::closeConnection ( fmHashTableEntry pHashEntry)
protected

◆ finishPacket()

void CAFirstMixA::finishPacket ( fmHashTableEntry pfmHashEntry)
private

◆ loop()

SINT32 CAFirstMixA::loop ( )
protectedvirtual
Todo:
check if thread is closed

Implements CAFirstMix.

References accountTrafficUpstream(), CASocketGroupEpoll::add(), CAQueue::add(), CAFirstMixChannelList::addChannel(), t_fmhashtableentry::bRecoverTimeout, t_MixPacket::channel, CHANNEL_CLOSE, CHANNEL_DATA, CHANNEL_DEBUG, CHANNEL_DUMMY, CHANNEL_OPEN, CHANNEL_SIG_CRIME, t_firstmixchannellist::channelIn, t_firstmixchannellist::channelOut, checkUserConnections(), CAFirstMix::clean(), closeConnection(), t_fmhashtableentry::countryID, CASymChannelCipherFactory::createCipher(), CASymChannelCipher::crypt1(), CASymChannelCipher::crypt2(), t_MixPacket::data, DATA_SIZE, diff64(), E_SUCCESS, E_UNKNOWN, FIRST_MIX_SIZE_OF_SYMMETRIC_KEYS, t_MixPacket::flags, CAFirstMix::fm_loopLog, CAFirstMixChannelList::get(), CAQueue::get(), getcurrentTimeMicros(), CAFirstMixChannelList::getFirst(), CASocketGroupEpoll::getFirstSignaledSocketData(), CAFirstMixChannelList::getNext(), CASocketGroupEpoll::getNextSignaledSocketData(), CALibProxytest::getOptions(), getRandom(), CAQueue::getSize(), t_fmhashtableentry::id, tUINT32withLock::inc(), CAFirstMix::incMixedPackets(), CADatabase::insert(), CASocketGroupEpoll::isSignaled(), CAThread::join(), CALockAble::lock(), CAMutex::lock(), LOG_ENCRYPTED, CAFirstMix::m_bRestart, CAFirstMix::m_bRunLog, CAFirstMix::m_nUser, CAFirstMix::m_PacketsPerCountryIN, CAFirstMix::m_PacketsPerCountryOUT, CAFirstMix::m_pChannelList, CAFirstMix::m_pmutexLogin, CAFirstMix::m_pQueueReadFromMix, CAFirstMix::m_pQueueSendToMix, CAMixWithReplayDB::m_pReplayDB, CAFirstMix::m_psocketgroupUsersRead, CAFirstMix::m_psocketgroupUsersWrite, MAX_NEXT_MIX_QUEUE_SIZE, MIXPACKET_SIZE, msSleep(), t_queue_entry::packet, t_firstmixchannellist::pCipher, t_fmhashtableentry::pControlChannelDispatcher, t_fmhashtableentry::peerIP, t_firstmixchannellist::pHead, t_fmhashtableentry::pMuxSocket, t_fmhashtableentry::pQueueSend, CAMsg::printMsg(), CAControlChannelDispatcher::proccessMixPacket(), t_fmhashtableentry::pSymCipher, CAFirstMixChannelList::pushTimeoutEntry(), CAMuxSocket::receive(), CAFirstMixChannelList::removeChannel(), RSA_SIZE, CASocketGroupEpoll::select(), sendToUsers(), set64(), CAFirstMixChannelList::setDelayParameters(), CASymChannelCipher::setIV2(), CASymChannelCipher::setKeys(), CAThread::setMainLoop(), setZero64(), CAThread::start(), and CAMutex::unlock().

◆ notifyAllUserChannels()

void CAFirstMixA::notifyAllUserChannels ( fmHashTableEntry pfmHashEntry,
UINT16  flags 
)
private

◆ sendToUsers()

bool CAFirstMixA::sendToUsers ( )
private

◆ shutDown()

void CAFirstMixA::shutDown ( )
virtual

Friends And Related Function Documentation

◆ fm_loopPacketProcessing

THREAD_RETURN fm_loopPacketProcessing ( void *  params)
friend