X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2F80211Bundle%2FWLANPacket.hh;h=ddbe46c61b84cf3aec0ce9934d441edce3ac690f;hb=5083ed2a2fe087df2f981b3f66eaf0fb130243eb;hp=c632aa5bbb9c85a34affd7d53839b028b17fcf9f;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/Packets/80211Bundle/WLANPacket.hh b/senf/Packets/80211Bundle/WLANPacket.hh index c632aa5..ddbe46c 100644 --- a/senf/Packets/80211Bundle/WLANPacket.hh +++ b/senf/Packets/80211Bundle/WLANPacket.hh @@ -26,9 +26,11 @@ #ifndef HH_SENF_Packets_80211Bundle_WLANPacket_ #define HH_SENF_Packets_80211Bundle_WLANPacket_ 1 -#include "../../Packets/Packets.hh" -#include "../DefaultBundle/EthernetPacket.hh" -#include "../DefaultBundle/LlcSnapPacket.hh" +#include +#include +#include + +///////////////////////////////hh.p//////////////////////////////////////// namespace senf { @@ -39,7 +41,7 @@ namespace senf Frame base class. */ - struct WLANPacketParser : public senf::PacketParserBase + struct WLANPacketParser : public PacketParserBase { # include SENF_PARSER() @@ -91,12 +93,14 @@ namespace senf boost::uint16_t sequenceNumber() const { return (uint16_t)(seqNumber_2()) << 4 | seqNumber_1(); }; + + void sequenceNumber(boost::uint16_t sn); }; /** \brief WLAN Management frame packet \par Packet type (typedef): - \refWLANPacket_MgtFrame + \ref WLANPacket_MgtFrame \par Fields: \ref WLANPacket_MgtFrameParser @@ -105,20 +109,23 @@ namespace senf \ingroup protocolbundle_80211 */ struct WLANPacket_MgtFrameType - : public senf::PacketTypeBase, - public senf::PacketTypeMixin + : public PacketTypeBase, + public PacketTypeMixin { - typedef senf::PacketTypeMixin mixin; - typedef senf::ConcretePacket packet; + typedef PacketTypeMixin mixin; + typedef ConcretePacket packet; typedef WLANPacket_MgtFrameParser parser; using mixin::init; using mixin::initSize; - using senf::PacketTypeBase::nextPacketRange; + using PacketTypeBase::nextPacketRange; static void dump(packet p, std::ostream &os); }; + /** \brief WLAN Management frame packet typedef + \ingroup protocolbundle_80211 + */ typedef WLANPacket_MgtFrameType::packet WLANPacket_MgtFrame; /////////////////////////////////////////////////////////////////////////// @@ -134,7 +141,7 @@ namespace senf SENF_PARSER_INHERIT(WLANPacketParser); - SENF_PARSER_FIELD ( receiverAddress, MACAddressParser ); + SENF_PARSER_FIELD ( receiverAddress, MACAddressParser ); //only RTS frame contains a source address field //variant is also needed to set correct subtype value @@ -160,20 +167,23 @@ namespace senf \ingroup protocolbundle_80211 */ struct WLANPacket_CtrlFrameType - : public senf::PacketTypeBase, - public senf::PacketTypeMixin + : public PacketTypeBase, + public PacketTypeMixin { - typedef senf::PacketTypeMixin mixin; - typedef senf::ConcretePacket packet; + typedef PacketTypeMixin mixin; + typedef ConcretePacket packet; typedef WLANPacket_CtrlFrameParser parser; using mixin::init; using mixin::initSize; - using senf::PacketTypeBase::nextPacketRange; + using PacketTypeBase::nextPacketRange; static void dump(packet p, std::ostream &os); }; + /** \brief WLAN Control frame packet typedef + \ingroup protocolbundle_80211 + */ typedef WLANPacket_CtrlFrameType::packet WLANPacket_CtrlFrame; /////////////////////////////////////////////////////////////////////////// @@ -206,6 +216,8 @@ namespace senf return (uint16_t)(seqNumber_2()) << 4 | seqNumber_1(); }; + void sequenceNumber(boost::uint16_t sn); + // TODO fourth address field in case of WDS // SENF_PARSER_PRIVATE_VARIANT (wds_, dsBits, // ( novalue ( disable_addr4, VoidPacketParser )) @@ -244,30 +256,37 @@ namespace senf \ingroup protocolbundle_80211 */ struct WLANPacket_DataFrameType - : public senf::PacketTypeBase, - public senf::PacketTypeMixin + : public PacketTypeBase, + public PacketTypeMixin { - typedef senf::PacketTypeMixin mixin; - typedef senf::ConcretePacket packet; + typedef PacketTypeMixin mixin; + typedef ConcretePacket packet; typedef WLANPacket_DataFrameParser parser; using mixin::init; using mixin::initSize; using mixin::nextPacketRange; - static factory_t nextPacketType(packet p) { - return p->subtype() == 0 || p->subtype() == 8 - ? LlcSnapPacket::factory() + static factory_t nextPacketType(packet p) { + return p->subtype() == 0 || p->subtype() == 8 + ? LlcSnapPacket::factory() : no_factory(); } static void dump(packet p, std::ostream &os); }; + /** \brief WLAN Data frame packet typedef + \ingroup protocolbundle_80211 + */ typedef WLANPacket_DataFrameType::packet WLANPacket_DataFrame; } -#endif /* HH_SENF_Packets_80211Bundle_WLANPacket_ */ +///////////////////////////////hh.e//////////////////////////////////////// +//#include "WLANPacket.cci" +//#include "WLANPacket.ct" +//#include "WLANPacket.cti" +#endif // Local Variables: