struct WLANPacket_MgtFrameParser : public senf::PacketParserBase
{
# include SENF_FIXED_PARSER()
-
- SENF_PARSER_PRIVATE_BITFIELD ( subtype, 4, unsigned );
+
+ SENF_PARSER_PRIVATE_BITFIELD ( subtype, 4, unsigned ); //<pkgdraw: hide
+ //skip type and version
+ SENF_PARSER_SKIP_BITS ( 4 ); //<pkgdraw: hide
//jump to fist address field
- SENF_PARSER_SKIP_BITS ( 28 );
+ SENF_PARSER_SKIP ( 3 ); //<pkgdraw: hide
SENF_PARSER_FIELD ( destinationAddress, MACAddressParser );
SENF_PARSER_FIELD ( sourceAddress, MACAddressParser );
SENF_PARSER_FIELD ( bssid, MACAddressParser );
struct WLANPacket_CtrlFrameParser : public senf::PacketParserBase
{
# include SENF_PARSER()
-
- SENF_PARSER_PRIVATE_BITFIELD ( subtype, 4, unsigned );
+
+ SENF_PARSER_PRIVATE_BITFIELD ( subtype, 4, unsigned ); //<pkgdraw: hide
+ //skip type and version
+ SENF_PARSER_SKIP_BITS ( 4 ); //<pkgdraw: hide
//jump to fist address field
- SENF_PARSER_SKIP_BITS ( 28 );
+ SENF_PARSER_SKIP ( 3, 3 ); //<pkgdraw: hide
SENF_PARSER_FIELD ( receiverAddress, MACAddressParser );
//only RTS frame contains a source address field
struct WLANPacket_DataFrameParser : public senf::PacketParserBase
{
# include SENF_PARSER()
- SENF_PARSER_PRIVATE_BITFIELD ( subtype, 4, unsigned );
+ SENF_PARSER_PRIVATE_BITFIELD ( subtype, 4, unsigned ); //<pkgdraw: hide
//jump to 'toDS' and 'fromDS' bits
- //skip type, version and other flags
- SENF_PARSER_SKIP_BITS ( 10 );
+ //skip type and version
+ SENF_PARSER_SKIP_BITS ( 4 ); //<pkgdraw: hide
+ //skip other flags
+ SENF_PARSER_SKIP_BITS ( 6 ); //<pkgdraw: hide
//needed in data frames due to the variable address fields
- SENF_PARSER_PRIVATE_BITFIELD ( dsBits, 2, unsigned );
+ SENF_PARSER_PRIVATE_BITFIELD ( dsBits, 2, unsigned ); //<pkgdraw: hide
//skip duration field
- SENF_PARSER_SKIP ( 2, 2 );
+ SENF_PARSER_SKIP ( 2, 2 ); //<pkgdraw: hide
SENF_PARSER_PRIVATE_FIELD ( addr1, MACAddressParser );
SENF_PARSER_PRIVATE_FIELD ( addr2, MACAddressParser );
\par Fields:
\ref WLANPacketParser
- \image html WLANPacket.png
+ \image html WLANPacket.png
\ingroup protocolbundle_80211
*/
typedef senf::ConcretePacket<WLANPacketType> packet;
typedef WLANPacketParser parser;
-// using mixin::nextPacketRange;
+
using mixin::init;
using mixin::initSize;
- using senf::PacketTypeBase::nextPacketRange;;
+// using senf::PacketTypeBase::nextPacketRange;
+ static optional_range nextPacketRange(packet p);
+ static factory_t nextPacketType(packet p);
static void dump(packet p, std::ostream &os);
// static PacketParserBase::size_type initSize();