to create StreamId, use random number generator instead of IP address

pull/122/head
SASANO Takayoshi 6 years ago
parent c3f444175b
commit e091d2e666

@ -67,6 +67,11 @@ bool CYsfProtocol::Init(void)
// update time
m_LastKeepaliveTime.Now();
// random number generator
std::random_device rd;
std::mt19937 mt(rd());
m_Random = mt;
// done
return ok;
}
@ -438,7 +443,7 @@ bool CYsfProtocol::IsValidDvHeaderPacket(const CIp &Ip, const CYSFFICH &Fich, co
if ( Fich.getFI() == YSF_FI_HEADER )
{
// get stream id
uint32 uiStreamId = IpToStreamId(Ip);
uint32 uiStreamId = CreateStreamId();
// get header data
CYSFPayload ysfPayload;
@ -507,7 +512,7 @@ bool CYsfProtocol::IsValidDvFramePacket(const CIp &Ip, const CYSFFICH &Fich, con
if ( Fich.getFI() == YSF_FI_COMMUNICATIONS )
{
// get stream id
uint32 uiStreamId = IpToStreamId(Ip);
uint32 uiStreamId = CreateStreamId();
// get DV frames
uint8 ambe0[AMBEPLUS_SIZE];
@ -564,7 +569,7 @@ bool CYsfProtocol::IsValidDvLastFramePacket(const CIp &Ip, const CYSFFICH &Fich,
if ( Fich.getFI() == YSF_FI_TERMINATOR )
{
// get stream id
uint32 uiStreamId = IpToStreamId(Ip);
uint32 uiStreamId = CreateStreamId();
// get DV frames
{
@ -927,9 +932,9 @@ bool CYsfProtocol::IsValidwirexPacket(const CBuffer &Buffer, CYSFFICH *Fich, CCa
// uiStreamId helpers
uint32 CYsfProtocol::IpToStreamId(const CIp &ip) const
uint32 CYsfProtocol::CreateStreamId(void) const
{
return ip.GetAddr() ^ (uint32)(MAKEDWORD(ip.GetPort(), ip.GetPort()));
return m_Random();
}
////////////////////////////////////////////////////////////////////////////////////////

@ -113,7 +113,7 @@ protected:
bool IsValidwirexPacket(const CBuffer &, CYSFFICH *, CCallsign *, int *, int*);
// uiStreamId helpers
uint32 IpToStreamId(const CIp &) const;
uint32 CreateStreamId(void) const;
// debug
bool DebugTestDecodePacket(const CBuffer &);
@ -128,6 +128,9 @@ protected:
// for queue header caches
std::array<CYsfStreamCacheItem, NB_OF_MODULES> m_StreamsCache;
// random number generator
mutable std::mt19937 m_Random;
// for wires-x
CWiresxCmdHandler m_WiresxCmdHandler;
unsigned char m_seqNo;

Loading…
Cancel
Save

Powered by TurnKey Linux.