X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2F80211Bundle%2FWLANPacket.cc;h=2f1c1481d9153e09511807b8cec115f490b7d273;hb=acffdb583e9130b451bf52018a39d62b49621042;hp=33a28098131409004e7e30bf58ca3ec62e786f3a;hpb=0cfb397285c36522faa97c801e6f8332fdd539cf;p=senf.git diff --git a/Packets/80211Bundle/WLANPacket.cc b/Packets/80211Bundle/WLANPacket.cc index 33a2809..2f1c148 100644 --- a/Packets/80211Bundle/WLANPacket.cc +++ b/Packets/80211Bundle/WLANPacket.cc @@ -30,26 +30,18 @@ #define prefix_ -prefix_ senf::MACAddressParser senf::WLANPacket_DataFrameParser::da() +prefix_ senf::MACAddressParser senf::WLANPacket_DataFrameParser::destinationAddress() const { - switch (dsBits()) - { + switch (dsBits()) { case 0 : case 2 : return addr1(); - break; - case 1 : - case 3 : - return addr3(); - break; } - //just to avoid compiler warning - //TODO - return addr1(); + return addr3(); } -prefix_ senf::MACAddressParser senf::WLANPacket_DataFrameParser::sa() +prefix_ senf::MACAddressParser senf::WLANPacket_DataFrameParser::sourceAddress() const { switch (dsBits()) @@ -89,44 +81,37 @@ prefix_ senf::MACAddressParser senf::WLANPacket_DataFrameParser::bssid() return addr1(); } -//shift some bits to read the 12bit sequence number bit field in LSB byte order -prefix_ boost::uint16_t senf::WLANPacket_MgtFrameParser::sequenceNumber() - const -{ - boost::uint16_t seqN = 0; - seqN |= seqNumber_2(); - seqN <<= 4; - seqN |= seqNumber_1(); - return seqN; -} - -//shift some bits to read the 12bit sequence number bit field in LSB byte order -prefix_ boost::uint16_t senf::WLANPacket_DataFrameParser::sequenceNumber() - const -{ - boost::uint16_t seqN = 0; - seqN |= seqNumber_2(); - seqN <<= 4; - seqN |= seqNumber_1(); - return seqN; -} prefix_ void senf::WLANPacketType::dump(packet p, std::ostream &os) { boost::io::ios_all_saver ias(os); - os << "802.11 MAC Frame:\n" - << " Type : " << unsigned (p->type()) << "\n" - << " Subtype : " << unsigned (p->subtype()) << "\n" - << " Retransmission : " << unsigned (p->retry()) << "\n" - << " Duration : " << unsigned (p->duration()) << "\n"; - - if (p->has_mgtFrame()) - { - os << " BSSID : " << p->mgtFrame().bssid() << "\n"; - os << " Destination Address : " << p->mgtFrame().destinationAddress() << "\n"; - os << " Source Address : " << p->mgtFrame().sourceAddress() << "\n"; + os << "802.11 MAC Frame:\n" + << " Type : " << unsigned( p->type()) << "\n" + << " Subtype : " << unsigned( p->subtype()) << "\n" + << " Retransmission : " << unsigned( p->retry()) << "\n" + << " Duration : " << unsigned( p->duration()) << "\n"; + if (p->is_mgtFrame()) { + os << " Management-Frame:\n" + << " BSSID : " << p->mgtFrame().bssid() << "\n" + << " Destination Address : " << p->mgtFrame().destinationAddress() << "\n" + << " 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"; } - };