Skip to content
Snippets Groups Projects
Commit 4841df26 authored by tho's avatar tho
Browse files

WLANPacket: some more renaming

parent 222ad90c
No related branches found
No related tags found
No related merge requests found
...@@ -30,26 +30,18 @@ ...@@ -30,26 +30,18 @@
#define prefix_ #define prefix_
prefix_ senf::MACAddressParser senf::WLANPacket_DataFrameParser::da() prefix_ senf::MACAddressParser senf::WLANPacket_DataFrameParser::destinationAddress()
const const
{ {
switch (dsBits()) switch (dsBits()) {
{
case 0 : case 0 :
case 2 : case 2 :
return addr1(); return addr1();
break;
case 1 :
case 3 :
return addr3();
break;
} }
//just to avoid compiler warning return addr3();
//TODO
return addr1();
} }
prefix_ senf::MACAddressParser senf::WLANPacket_DataFrameParser::sa() prefix_ senf::MACAddressParser senf::WLANPacket_DataFrameParser::sourceAddress()
const const
{ {
switch (dsBits()) switch (dsBits())
...@@ -114,19 +106,33 @@ prefix_ boost::uint16_t senf::WLANPacket_DataFrameParser::sequenceNumber() ...@@ -114,19 +106,33 @@ prefix_ boost::uint16_t senf::WLANPacket_DataFrameParser::sequenceNumber()
prefix_ void senf::WLANPacketType::dump(packet p, std::ostream &os) prefix_ void senf::WLANPacketType::dump(packet p, std::ostream &os)
{ {
boost::io::ios_all_saver ias(os); boost::io::ios_all_saver ias(os);
os << "802.11 MAC Frame:\n" os << "802.11 MAC Frame:\n"
<< " Type : " << unsigned (p->type()) << "\n" << " Type : " << unsigned( p->type()) << "\n"
<< " Subtype : " << unsigned (p->subtype()) << "\n" << " Subtype : " << unsigned( p->subtype()) << "\n"
<< " Retransmission : " << unsigned (p->retry()) << "\n" << " Retransmission : " << unsigned( p->retry()) << "\n"
<< " Duration : " << unsigned (p->duration()) << "\n"; << " Duration : " << unsigned( p->duration()) << "\n";
if (p->is_mgtFrame()) {
if (p->has_mgtFrame()) os << " Management-Frame:\n"
{ << " BSSID : " << p->mgtFrame().bssid() << "\n"
os << " BSSID : " << p->mgtFrame().bssid() << "\n"; << " Destination Address : " << p->mgtFrame().destinationAddress() << "\n"
os << " Destination Address : " << p->mgtFrame().destinationAddress() << "\n"; << " Source Address : " << p->mgtFrame().sourceAddress() << "\n"
os << " Source Address : " << p->mgtFrame().sourceAddress() << "\n"; << " Sequence Number : " << unsigned( p->mgtFrame().sequenceNumber()) << "\n"
<< " Fragment Number : " << unsigned( p->mgtFrame().fragmentNumber()) << "\n";
}
if (p->is_ctrlFrame()) {
os << " Control-Frame ";
if (p->ctrlFrame().is_cts()) os << "(CTS):\n";
if (p->ctrlFrame().is_ack()) os << "(ACK):\n";
if (p->ctrlFrame().is_rts()) os << "(RTS):\n";
os << " Receiver Address : " << p->ctrlFrame().receiverAddress() << "\n";
if (p->ctrlFrame().is_rts())
os << " Source Address : " << p->ctrlFrame().sourceAddress() << "\n";
}
if (p->is_dataFrame()) {
os << " Data-Frame:\n"
<< " Sequence Number : " << unsigned( p->mgtFrame().sequenceNumber()) << "\n"
<< " Fragment Number : " << unsigned( p->mgtFrame().fragmentNumber()) << "\n";
} }
}; };
......
...@@ -75,7 +75,7 @@ namespace senf ...@@ -75,7 +75,7 @@ namespace senf
SENF_PARSER_SKIP_BITS ( 4 ); //skip type and version SENF_PARSER_SKIP_BITS ( 4 ); //skip type and version
//jump to fist address field //jump to fist address field
SENF_PARSER_SKIP ( 3, 3 ); SENF_PARSER_SKIP ( 3, 3 );
SENF_PARSER_FIELD ( recieverAddress, MACAddressParser ); SENF_PARSER_FIELD ( receiverAddress, MACAddressParser );
//only RTS frame contains a source address field //only RTS frame contains a source address field
//variant is also needed to set correct subtype value //variant is also needed to set correct subtype value
...@@ -97,26 +97,26 @@ namespace senf ...@@ -97,26 +97,26 @@ namespace senf
struct WLANPacket_DataFrameParser : public senf::PacketParserBase struct WLANPacket_DataFrameParser : public senf::PacketParserBase
{ {
# include SENF_PARSER() # include SENF_PARSER()
SENF_PARSER_PRIVATE_BITFIELD ( subtype, 4, unsigned); SENF_PARSER_PRIVATE_BITFIELD ( subtype, 4, unsigned );
//jump to 'toDS' and 'fromDS' bits //jump to 'toDS' and 'fromDS' bits
//skip type and version //skip type and version
SENF_PARSER_SKIP_BITS ( 4 ); SENF_PARSER_SKIP_BITS ( 4 );
//skip other flags //skip other flags
SENF_PARSER_SKIP_BITS ( 6 ); SENF_PARSER_SKIP_BITS ( 6 );
//needed in data frames due to the variable address fields //needed in data frames due to the variable address fields
SENF_PARSER_PRIVATE_BITFIELD ( dsBits, 2, unsigned); SENF_PARSER_PRIVATE_BITFIELD ( dsBits, 2, unsigned );
//skip duration field //skip duration field
SENF_PARSER_SKIP ( 2,0 ); SENF_PARSER_SKIP ( 2, 0 );
SENF_PARSER_PRIVATE_FIELD ( addr1, MACAddressParser ); SENF_PARSER_PRIVATE_FIELD ( addr1, MACAddressParser );
SENF_PARSER_PRIVATE_FIELD ( addr2, MACAddressParser ); SENF_PARSER_PRIVATE_FIELD ( addr2, MACAddressParser );
SENF_PARSER_PRIVATE_FIELD ( addr3, MACAddressParser ); SENF_PARSER_PRIVATE_FIELD ( addr3, MACAddressParser );
//sequence Number and fragment number //sequence Number and fragment number
//shift bits manually due to LSB //shift bits manually due to LSB
SENF_PARSER_PRIVATE_BITFIELD (seqNumber_1, 4, unsigned); SENF_PARSER_PRIVATE_BITFIELD ( seqNumber_1, 4, unsigned );
SENF_PARSER_BITFIELD (fragmentNumber, 4, unsigned); SENF_PARSER_BITFIELD ( fragmentNumber, 4, unsigned );
SENF_PARSER_PRIVATE_FIELD (seqNumber_2, UInt8Parser) SENF_PARSER_PRIVATE_FIELD ( seqNumber_2, UInt8Parser );
//TODO fourth address field in case of WDS //TODO fourth address field in case of WDS
// SENF_PARSER_PRIVATE_VARIANT (wds_, dsBits, // SENF_PARSER_PRIVATE_VARIANT (wds_, dsBits,
...@@ -124,14 +124,12 @@ namespace senf ...@@ -124,14 +124,12 @@ namespace senf
// ( id ( addr4, key (3, MACAddressParser ))) ); // ( id ( addr4, key (3, MACAddressParser ))) );
//QoS Filed //QoS Filed
SENF_PARSER_VARIANT (qosField_, subtype, SENF_PARSER_VARIANT ( qosField_, subtype,
( ids (na, na, set_data, key(0, VoidPacketParser))) ( ids( na, na, set_data, key(0, VoidPacketParser)) )
( ids (na, na, set_nullData, key(4, VoidPacketParser))) ( ids( na, na, set_nullData, key(4, VoidPacketParser)) )
( ids (qosField, has_qosField, set_qosData, key(8, UInt16LSBParser))) ( ids( qosField, has_qosField, set_qosData, key(8, UInt16LSBParser )) )
//we cannot parse qos Null (data) frames at the moment //we cannot parse qos Null (data) frames at the moment
( ids (na, na, set_qosNullData, key(12, UInt16LSBParser))) ); ( ids( na, na, set_qosNullData, key(12, UInt16LSBParser)) ) );
SENF_PARSER_FINALIZE(WLANPacket_DataFrameParser); SENF_PARSER_FINALIZE(WLANPacket_DataFrameParser);
...@@ -140,10 +138,10 @@ namespace senf ...@@ -140,10 +138,10 @@ namespace senf
boost::uint16_t sequenceNumber() const; boost::uint16_t sequenceNumber() const;
MACAddressParser ra() const { return addr1(); }; //ra is always addr1 MACAddressParser receiverAddress() const { return addr1(); }; //ra is always addr1
MACAddressParser ta() const { return addr2(); }; //ta is always addr2 MACAddressParser transmitterAddress() const { return addr2(); }; //ta is always addr2
MACAddressParser sa() const; MACAddressParser sourceAddress() const;
MACAddressParser da() const; MACAddressParser destinationAddress() const;
MACAddressParser bssid() const; MACAddressParser bssid() const;
}; };
...@@ -173,14 +171,14 @@ namespace senf ...@@ -173,14 +171,14 @@ namespace senf
SENF_PARSER_BITFIELD ( fromDS, 1, bool ); SENF_PARSER_BITFIELD ( fromDS, 1, bool );
SENF_PARSER_BITFIELD ( toDS, 1, bool ); SENF_PARSER_BITFIELD ( toDS, 1, bool );
SENF_PARSER_FIELD (duration, UInt16LSBParser); SENF_PARSER_FIELD ( duration, UInt16LSBParser );
SENF_PARSER_GOTO( subtype ); //subparsers need to know the subtype SENF_PARSER_GOTO( subtype ); // subparsers need to know the subtype
SENF_PARSER_VARIANT ( type__, type, SENF_PARSER_VARIANT ( frameType_, type,
( id( mgtFrame, WLANPacket_MgtFrameParser )) ( ids( mgtFrame, is_mgtFrame, init_mgtFrame, WLANPacket_MgtFrameParser ))
( id( ctrlFrame, WLANPacket_CtrlFrameParser )) ( ids( ctrlFrame, is_ctrlFrame, init_ctrlFrame, WLANPacket_CtrlFrameParser ))
( id( dataFrame, WLANPacket_DataFrameParser )) ( ids( dataFrame, is_dataFrame, init_dataFrame, WLANPacket_DataFrameParser ))
( novalue( reserved, WLANPacket_CtrlFrameParser )) ); ( novalue( reserved, WLANPacket_CtrlFrameParser )) );
SENF_PARSER_CUSTOM_FIELD( fcs, senf::UInt32Parser, fcs_t::fixed_bytes, fcs_t::fixed_bytes) { SENF_PARSER_CUSTOM_FIELD( fcs, senf::UInt32Parser, fcs_t::fixed_bytes, fcs_t::fixed_bytes) {
return parse<UInt32Parser>( data().size()-4 ); } return parse<UInt32Parser>( data().size()-4 ); }
...@@ -197,6 +195,16 @@ namespace senf ...@@ -197,6 +195,16 @@ namespace senf
}; };
/** \brief WLAN packet
\par Packet type (typedef):
\ref WLANPacket
\par Fields:
\ref WLANPacketParser
\ingroup protocolbundle_80211
*/
struct WLANPacketType struct WLANPacketType
: public senf::PacketTypeBase, : public senf::PacketTypeBase,
public senf::PacketTypeMixin<WLANPacketType> public senf::PacketTypeMixin<WLANPacketType>
......
...@@ -59,19 +59,21 @@ BOOST_AUTO_UNIT_TEST(WLANPacket_dataFrame_packet) ...@@ -59,19 +59,21 @@ BOOST_AUTO_UNIT_TEST(WLANPacket_dataFrame_packet)
BOOST_CHECK_EQUAL( p->duration(), 0u ); BOOST_CHECK_EQUAL( p->duration(), 0u );
BOOST_CHECK_EQUAL( BOOST_CHECK_EQUAL(
p->dataFrame().da().value(), p->dataFrame().destinationAddress().value(),
senf::MACAddress::from_string("00:18:4d:6e:78:48") ); senf::MACAddress::from_string("00:18:4d:6e:78:48") );
BOOST_CHECK_EQUAL( BOOST_CHECK_EQUAL(
p->dataFrame().sa().value(), p->dataFrame().sourceAddress().value(),
senf::MACAddress::from_string("00:0b:6b:57:06:b0") ); senf::MACAddress::from_string("00:0b:6b:57:06:b0") );
BOOST_CHECK_EQUAL( BOOST_CHECK_EQUAL(
p->dataFrame().bssid().value(), p->dataFrame().bssid().value(),
senf::MACAddress::from_string("00:1a:4d:3e:c7:5c") ); senf::MACAddress::from_string("00:1a:4d:3e:c7:5c") );
BOOST_CHECK_EQUAL( BOOST_CHECK_EQUAL(
p->dataFrame().bssid().value(), p->dataFrame().ra().value() ); p->dataFrame().bssid().value(),
p->dataFrame().receiverAddress().value() );
BOOST_CHECK_EQUAL( BOOST_CHECK_EQUAL(
p->dataFrame().ta().value(), p->dataFrame().sa().value() ); p->dataFrame().transmitterAddress().value(),
p->dataFrame().sourceAddress().value() );
BOOST_CHECK_EQUAL( p->dataFrame().sequenceNumber(), 3u ); BOOST_CHECK_EQUAL( p->dataFrame().sequenceNumber(), 3u );
BOOST_CHECK_EQUAL( p->dataFrame().fragmentNumber(), 0u ); BOOST_CHECK_EQUAL( p->dataFrame().fragmentNumber(), 0u );
...@@ -129,7 +131,7 @@ BOOST_AUTO_UNIT_TEST(WLANPacket_beaconFrame_packet) ...@@ -129,7 +131,7 @@ BOOST_AUTO_UNIT_TEST(WLANPacket_beaconFrame_packet)
BOOST_CHECK_EQUAL( p->order(), false ); BOOST_CHECK_EQUAL( p->order(), false );
BOOST_CHECK_EQUAL( p->duration(), 0u ); BOOST_CHECK_EQUAL( p->duration(), 0u );
BOOST_CHECK_EQUAL( p->has_mgtFrame(), true ); BOOST_CHECK_EQUAL( p->is_mgtFrame(), true );
BOOST_CHECK_EQUAL( BOOST_CHECK_EQUAL(
p->mgtFrame().destinationAddress().value(), p->mgtFrame().destinationAddress().value(),
...@@ -193,7 +195,7 @@ BOOST_AUTO_UNIT_TEST(WLANPacket_ctrlFrame_packet) ...@@ -193,7 +195,7 @@ BOOST_AUTO_UNIT_TEST(WLANPacket_ctrlFrame_packet)
BOOST_CHECK_EQUAL( p->duration(), 0u ); BOOST_CHECK_EQUAL( p->duration(), 0u );
BOOST_CHECK_EQUAL( BOOST_CHECK_EQUAL(
p->ctrlFrame().recieverAddress().value(), p->ctrlFrame().receiverAddress().value(),
senf::MACAddress::from_string("00:0b:6b:57:06:b0") ); senf::MACAddress::from_string("00:0b:6b:57:06:b0") );
} }
...@@ -205,7 +207,7 @@ BOOST_AUTO_UNIT_TEST(WLANPacket_ctrlFrame_create) ...@@ -205,7 +207,7 @@ BOOST_AUTO_UNIT_TEST(WLANPacket_ctrlFrame_create)
// std::cout << unsigned( senf::init_bytes<senf::WLANPacketParser_CtrlFrameParser>::value ) << "\n"; // std::cout << unsigned( senf::init_bytes<senf::WLANPacketParser_CtrlFrameParser>::value ) << "\n";
SENF_CHECK_NO_THROW(p->init_ctrlFrame()); SENF_CHECK_NO_THROW(p->init_ctrlFrame());
// std::cout << unsigned( senf::init_bytes<senf::WLANPacketParser_CtrlFrameParser>::value ) << "\n"; // std::cout << unsigned( senf::init_bytes<senf::WLANPacketParser_CtrlFrameParser>::value ) << "\n";
p->ctrlFrame().recieverAddress() = senf::MACAddress::from_string("00:1a:4d:3e:c7:5c"); p->ctrlFrame().receiverAddress() = senf::MACAddress::from_string("00:1a:4d:3e:c7:5c");
p->ctrlFrame().set_ack(); p->ctrlFrame().set_ack();
BOOST_CHECK_EQUAL( p->type(), 1u); BOOST_CHECK_EQUAL( p->type(), 1u);
BOOST_CHECK_EQUAL( p->subtype(), 13u); BOOST_CHECK_EQUAL( p->subtype(), 13u);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment