X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2F80211Bundle%2FRadiotapPacket.cc;h=d9d97bc891edc1502e2e719f06f0d768a63e8f90;hb=57daeae6f2e924ce3f16f9677c3474f531cba9e5;hp=70a3c27d5c1ef0db2eecdc2880dd55a80e35d483;hpb=5e6a9673486c8806d807702d1136443822a3ffa1;p=senf.git diff --git a/senf/Packets/80211Bundle/RadiotapPacket.cc b/senf/Packets/80211Bundle/RadiotapPacket.cc index 70a3c27..d9d97bc 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 @@ -35,9 +36,9 @@ extern "C" { } #define prefix_ -///////////////////////////////cc.p////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // Offset table management prefix_ senf::RadiotapPacketParser::OffsetTable & @@ -93,7 +94,7 @@ prefix_ void senf::RadiotapPacketParser::buildOffsetTable(boost::uint32_t presen parseOffsetTable((boost::uint8_t*)&header, header.it_len, table); } -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::RadiotapPacketParser unsigned const senf::RadiotapPacketParser_Header::FIELD_SIZE[] = { @@ -183,11 +184,12 @@ prefix_ void senf::RadiotapPacketParser::updatePresentFlags(boost::uint32_t flag cumulativeNewBytes += newBytes; b = newTable[index] + FIELD_SIZE[index]; } + length() += cumulativeNewBytes; presentFlags() = flags; currentTable_ = &newTable; } -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::RadiotapPacketType prefix_ void senf::RadiotapPacketType::dump(packet p, std::ostream &os) @@ -287,11 +289,11 @@ prefix_ void senf::RadiotapPacketType::dump(packet p, std::ostream &os) # undef FIELD } - -prefix_ void senf::RadiotapPacketType::finalize(packet p) +prefix_ void senf::RadiotapPacketType::init(packet p) { - ///\fixme Is this really correct ? shouldn't I use nextPacket.begin() - begin() here ? - p->length() << p->calculateSize(); + // ?? Why the heck do we need the +0? Otherwise we get an + // 'undefined reference to 'RadiotapPacketParser_Header::fixed_bytes' + p->length() << RadiotapPacketParser_Header::fixed_bytes+0; } prefix_ senf::PacketInterpreterBase::factory_t senf::RadiotapPacketType::nextPacketType(packet p) @@ -306,14 +308,15 @@ 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) ); } -///////////////////////////////cc.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_