fix flags (de)serialization in PREQ;

improve some bit operations.
This commit is contained in:
Andrey Mazo
2009-07-01 21:54:24 +04:00
parent 2cd65e7585
commit 96117dfbf4
2 changed files with 8 additions and 14 deletions

View File

@@ -77,8 +77,8 @@ Buffer::Iterator dot11sMeshCapability::Deserialize (Buffer::Iterator i)
}
bool dot11sMeshCapability::Is (uint16_t cap, uint8_t n) const
{
uint16_t mask = 1<<n;
return (cap & mask) == mask;
uint16_t mask = 1 << n;
return (cap & mask);
}
IeConfiguration::IeConfiguration ():
m_APSPId (PROTOCOL_HWMP),

View File

@@ -239,11 +239,11 @@ IePreq::SerializeInformation (Buffer::Iterator i) const
{
uint8_t flags = 0;
if ((*j)->IsDo ())
flags += 128;
flags |= 1 << 0;
if ((*j)->IsRf ())
flags += 64;
flags |= 1 << 1;
if((*j)->IsUsn ())
flags += 32;
flags |= 1 << 2;
i.WriteU8 (flags);
WriteTo (i, (*j)->GetDestinationAddress());
i.WriteHtolsbU32 ((*j)->GetDestSeqNumber ());
@@ -272,17 +272,11 @@ IePreq::DeserializeInformation (Buffer::Iterator start, uint8_t length)
bool rfFlag = false;
bool usnFlag = false;
uint8_t flags = i.ReadU8 ();
if (flags >= 128)
{
if (flags & (1 << 0))
doFlag = true;
flags -=128;
}
if (flags >=64)
{
if (flags & (1 << 1))
rfFlag = true;
flags -= 64;
}
if (flags >= 32)
if (flags & (1 << 2))
usnFlag = true;
new_element->SetFlags (doFlag, rfFlag, usnFlag);
Mac48Address addr;