X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2F80211Bundle%2FRadiotapPacket.cc;h=8632f3d2d4024ce087c02e8cfaf3f65c843c9775;hb=78a6e233083efa63a9cd0684a92abc64202a9ee7;hp=4bf458d34f1a3fe608754da3c137eab26a1d1866;hpb=01e8fa6cf173c60c3deb47c29c6d56718ef9548e;p=senf.git diff --git a/senf/Packets/80211Bundle/RadiotapPacket.cc b/senf/Packets/80211Bundle/RadiotapPacket.cc index 4bf458d..8632f3d 100644 --- a/senf/Packets/80211Bundle/RadiotapPacket.cc +++ b/senf/Packets/80211Bundle/RadiotapPacket.cc @@ -4,6 +4,7 @@ // Fraunhofer Institute for Open Communication Systems (FOKUS) // Competence Center NETwork research (NET), St. Augustin, GERMANY // Christian Niephaus +// Stefan Bund // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -118,16 +119,6 @@ prefix_ void senf::RadiotapPacketParser::disable_fcs() } prefix_ senf::RadiotapPacketParser::OffsetTable const & -senf::RadiotapPacketParser::currentTable() - const -{ - OffsetTable & table (offsetTable(presentFlags())); - if (! table[MAX_INDEX+1]) - parseOffsetTable(&(*data().begin()), data().size(), table); - return table; -} - -prefix_ senf::RadiotapPacketParser::OffsetTable const & senf::RadiotapPacketParser::getTable(boost::uint32_t presentFlags) const { @@ -194,6 +185,7 @@ prefix_ void senf::RadiotapPacketParser::updatePresentFlags(boost::uint32_t flag b = newTable[index] + FIELD_SIZE[index]; } presentFlags() = flags; + currentTable_ = &newTable; } /////////////////////////////////////////////////////////////////////////// @@ -315,8 +307,9 @@ prefix_ senf::PacketInterpreterBase::factory_t senf::RadiotapPacketType::nextPac prefix_ senf::RadiotapPacketType::optional_range senf::RadiotapPacketType::nextPacketRange(packet p) { - size_type h (senf::bytes(p.parser())); - size_type t (p->flagsPresent() && p->flags().fcsAtEnd() ? 4 : 0); + parser rtParser (p.parser()); + size_type h (senf::bytes(rtParser)); + size_type t (rtParser.flagsPresent() && rtParser.flags().fcsAtEnd() ? 4 : 0); return p.size() <= h+t ? no_range() : optional_range( range(p.data().begin() + h, p.data().end() - t) );