X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2F80211Bundle%2FWLANPacket.cc;h=fd3355aee47eb31770b93cf9328b89c78cfa4bdc;hb=57daeae6f2e924ce3f16f9677c3474f531cba9e5;hp=413d229f417dd3cf24b767b8e53c0accfc0799f2;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/Packets/80211Bundle/WLANPacket.cc b/senf/Packets/80211Bundle/WLANPacket.cc index 413d229..fd3355a 100644 --- a/senf/Packets/80211Bundle/WLANPacket.cc +++ b/senf/Packets/80211Bundle/WLANPacket.cc @@ -22,15 +22,16 @@ // Definition of non-inline non-template functions -// Custom includes #include "WLANPacket.hh" -#include "../../Packets/Packets.hh" +//#include "WLANPacket.ih" + +// Custom includes #include #define prefix_ +//-///////////////////////////////////////////////////////////////////////////////////////////////// namespace { - void dumpBase(senf::WLANPacketParser const & p, std::ostream & os) { os << " version : " << unsigned(p.version()) <<"\n" @@ -47,90 +48,109 @@ namespace { if ( p.order() ) os << " order"; if ( !(p.toDS() || p.fromDS() || p.moreFrag() || p.retry() || p.pwrMgt() || - p.moreData() || p.protectedFrame() || p.order()) ) + p.moreData() || p.protectedFrame() || p.order()) ) os << " none"; os << "\n" << " duration : " << unsigned(p.duration()) << "\n"; } } +prefix_ void senf::WLANPacket_MgtFrameParser::sequenceNumber(boost::uint16_t sn) +{ + seqNumber_2() = 0u | (sn >> 4 ) ; + seqNumber_1() = 0u | sn; +} + prefix_ void senf::WLANPacket_MgtFrameType::dump(packet p, std::ostream &os) { boost::io::ios_all_saver ias(os); - os << "802.11 MAC Mangement Frame:\n"; + os << "802.11 MAC Management Frame:\n"; dumpBase(p.parser(), os); - os << " destination : " << p->destinationAddress() << "\n" - << " source : " << p->sourceAddress() << "\n" - << " bss id : " << p->bssid() << "\n" - << " sequence number : " << p->sequenceNumber() << "\n" - << " fragment number : " << p->fragmentNumber() << "\n"; + os << senf::fieldName("destination") << p->destinationAddress() << "\n" + << senf::fieldName("source") << p->sourceAddress() << "\n" + << senf::fieldName("bss id") << p->bssid() << "\n" + << senf::fieldName("sequence number") << p->sequenceNumber() << "\n" + << senf::fieldName("fragment number") << p->fragmentNumber() << "\n"; } prefix_ void senf::WLANPacket_CtrlFrameType::dump(packet p, std::ostream &os) { boost::io::ios_all_saver ias(os); - os << "802.11 MAC Control Frame:\n"; + os << "802.11 MAC Control Frame:\n"; dumpBase(p.parser(), os); - os << " receiver : " << p->receiverAddress() << "\n"; + os << senf::fieldName("receiver") << p->receiverAddress() << "\n"; if (p->is_rts()) - os << " source : " << p->sourceAddress() << "\n"; + os << senf::fieldName("source") << p->sourceAddress() << "\n"; } +prefix_ void senf::WLANPacket_DataFrameParser::sequenceNumber(boost::uint16_t sn) +{ + seqNumber_2() = 0u | (sn >> 4 ) ; + seqNumber_1() = 0u | sn; +} + + prefix_ senf::MACAddressParser senf::WLANPacket_DataFrameParser::destinationAddress() const { switch (dsBits()) { case 0 : - case 2 : return addr1(); - default: return addr3(); + case 2 : + return addr1(); + default: + return addr3(); } } prefix_ senf::MACAddressParser senf::WLANPacket_DataFrameParser::sourceAddress() const { - switch (dsBits()) - { + switch (dsBits()) { case 0 : - case 1 : return addr2(); + case 1 : + return addr2(); // TODO wds frames // case 3 : return addr4(); - default: return addr3(); + default: + return addr3(); } } prefix_ senf::MACAddressParser senf::WLANPacket_DataFrameParser::bssid() const { - switch (dsBits()) - { - case 0 : return addr3(); - case 1 : return addr1(); - default: return addr2(); + switch (dsBits()) { + case 0 : + return addr3(); + case 1 : + return addr1(); + default: + return addr2(); } } prefix_ void senf::WLANPacket_DataFrameType::dump(packet p, std::ostream &os) { boost::io::ios_all_saver ias(os); - os << "802.11 MAC Data Frame:\n"; + os << "802.11 MAC Data Frame:\n"; dumpBase(p.parser(), os); - os << " destination : " << p->destinationAddress(); + os << senf::fieldName("destination") << p->destinationAddress(); if (p->dsBits()==0 || p->dsBits()==2) os << " (receiver)"; - os << "\n" - << " source : " << p->sourceAddress(); + os << "\n" + << senf::fieldName("source") << p->sourceAddress(); if (p->dsBits()==0 || p->dsBits()==1) os << " (transmitter)"; - os << "\n" - << " bss id : " << p->bssid(); + os << "\n" + << senf::fieldName("bss id") << p->bssid(); if (p->dsBits()==1) os << " (receiver)"; else if (p->dsBits()!=0) os << " (transmitter)"; - os << "\n" - << " sequence number : " << p->sequenceNumber() << "\n" - << " fragment number : " << p->fragmentNumber() << "\n"; + os << "\n" + << senf::fieldName("sequence number") << p->sequenceNumber() << "\n" + << senf::fieldName("fragment number") << p->fragmentNumber() << "\n"; if (p->has_qosField()) - os << " QOS data : " << p->qosField() << "\n"; + os << senf::fieldName("QOS data") << p->qosField() << "\n"; } +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_