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)
 
CAMutex * getLoginMutex ()
 
SINT32 connectToNextMix (CASocketAddr *a_pAddrNext)
 
SINT32 getMixedPackets (UINT64 &ppackets)
 
UINT32 getNrOfUsers ()
 
SINT32 getLevel (SINT32 *puser, SINT32 *prisk, SINT32 *ptraffic)
 
TermsAndConditions * getTermsAndConditions (const UINT8 *opSki)
 
DOMNode * getTermsAndConditionsTemplate (UINT8 *templateRefID)
 
SINT32 getMixCount ()
 
tMixParameters * getMixParameters ()
 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 ()
 
CADatabase * getReplayDB () 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 ()
 
CAControlChannelDispatcher * getDownstreamControlChannelDispatcher () const
 
CAControlChannelDispatcher * getUpstreamControlChannelDispatcher () 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
CAIPList * m_pIPList
 
CATempIPBlockList * m_pIPBlockList
 
CAQueue * m_pQueueSendToMix
 
CAQueue * m_pQueueReadFromMix
 
volatile UINT32 m_nUser
 
UINT32 m_nSocketsIn
 
volatile bool m_bRestart
 
CASocket ** m_arrSocketsIn
 
UINT32 m_u32MixCount
 
tMixParameters * m_arMixParameters
 
CAFirstMixChannelList * m_pChannelList
 
CASocketGroupEpoll * m_psocketgroupUsersRead
 
CASocketGroupEpoll * m_psocketgroupUsersWrite
 
CAMuxSocket * m_pMuxOut
 
UINT8 * m_xmlKeyInfoBuff
 
UINT16 m_xmlKeyInfoSize
 
XERCES_CPP_NAMESPACE::DOMDocument * m_docMixCascadeInfo
 
UINT64 m_nMixedPackets
 
CAASymCipher * m_pRSA
 
CAMutex * m_pmutexUser
 
CAMutex * m_pmutexMixedPackets
 
CAMutex * m_pmutexLoginThreads
 
CAThread * m_pthreadAcceptUsers
 
CAThreadPool * m_pthreadsLogin
 
CAThread * m_pthreadSendToMix
 
CAThread * m_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
 
tUINT32withLock * m_PacketsPerCountryIN
 
tUINT32withLock * m_PacketsPerCountryOUT
 
bool m_bIsShuttingDown
 
volatile bool m_bRunLog
 
CAMutex * m_pmutexLogin
 
- Protected Attributes inherited from CAMixWithReplayDB
CADatabase * m_pReplayDB
 
CAReplayCtrlChannelMsgProc * m_pReplayMsgProc
 
- Protected Attributes inherited from CAMix
volatile bool m_bLoop
 
bool m_bReconfiguring
 
volatile bool m_bShutDown
 
CAMultiSignature * m_pMultiSignature
 
CAInfoService * m_pInfoService
 
UINT32 m_u32KeepAliveRecvInterval
 
UINT32 m_u32KeepAliveSendInterval
 
bool m_acceptReconfiguration
 
volatile bool m_bConnected
 
volatile UINT32 m_lLastConnectionTime
 
XERCES_CPP_NAMESPACE::DOMDocument * m_docMixCascadeInfo
 
CAControlChannelDispatcher * m_pMuxOutControlChannelDispatcher
 
CAControlChannelDispatcher * m_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