From 96117dfbf40addec56ff20f18cf709ce387ca4c4 Mon Sep 17 00:00:00 2001 From: Andrey Mazo Date: Wed, 1 Jul 2009 21:54:24 +0400 Subject: [PATCH] fix flags (de)serialization in PREQ; improve some bit operations. --- .../mesh/dot11s/ie-dot11s-configuration.cc | 4 ++-- src/devices/mesh/dot11s/ie-dot11s-preq.cc | 18 ++++++------------ 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/devices/mesh/dot11s/ie-dot11s-configuration.cc b/src/devices/mesh/dot11s/ie-dot11s-configuration.cc index e3051a324..fbc3e0813 100644 --- a/src/devices/mesh/dot11s/ie-dot11s-configuration.cc +++ b/src/devices/mesh/dot11s/ie-dot11s-configuration.cc @@ -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<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;