Packets/80211Bundle: RadiotapPacktParser caches offset table
[senf.git] / senf / Packets / 80211Bundle / RadiotapPacket.cci
index 2164b40..606d6ce 100644 (file)
 
 prefix_ senf::RadiotapPacketParser::RadiotapPacketParser(data_iterator i, state_type s)
     : RadiotapPacketParser_Header(i,s)
-{}
+{
+    OffsetTable & table (offsetTable(presentFlags()));
+    if (! table[MAX_INDEX+1])
+        parseOffsetTable(&(*data().begin()), data().size(), table);
+    currentTable_ = &table;
+}
 
 prefix_ senf::RadiotapPacketParser::size_type senf::RadiotapPacketParser::bytes()
     const
@@ -77,6 +82,13 @@ prefix_ senf::RadiotapPacketParser::size_type senf::RadiotapPacketParser::calcul
     return currentTable()[MAX_INDEX+1];
 }
 
+prefix_ senf::RadiotapPacketParser::OffsetTable const &
+senf::RadiotapPacketParser::currentTable()
+    const
+{
+    return *currentTable_;
+}
+
 ///////////////////////////////cci.e///////////////////////////////////////
 #undef prefix_