X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2F80211Bundle%2FRadiotapPacket.cc;h=521301e5c03de75e7ba23f353cc915bd55e875bb;hb=e3179a2123ad51d0d9eb63834a581145c4f77c92;hp=70a3c27d5c1ef0db2eecdc2880dd55a80e35d483;hpb=5e6a9673486c8806d807702d1136443822a3ffa1;p=senf.git diff --git a/senf/Packets/80211Bundle/RadiotapPacket.cc b/senf/Packets/80211Bundle/RadiotapPacket.cc index 70a3c27..521301e 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 & @@ -63,7 +64,7 @@ prefix_ void senf::RadiotapPacketParser::parseOffsetTable(boost::uint8_t * data, unsigned size (8u); while (ieee80211_radiotap_iterator_next(&iter) == 0) { if (iter.is_radiotap_ns && - iter.this_arg_index <= int(senf::RadiotapPacketParser::MAX_INDEX)) + iter.this_arg_index <= int(RadiotapPacketParser::MAX_INDEX)) table[iter.this_arg_index] = iter.this_arg - data; // We need to set size here in the loop since the iter fields are only valid // when at least one present bit is set ... @@ -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,14 +184,15 @@ 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) +prefix_ void senf::RadiotapPacketType::dump(packet p, std::ostream & os) { boost::io::ios_all_saver ias(os); os << "Radiotap:\n" @@ -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_