X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2F80211Bundle%2FInformationElements.hh;h=396b62a34f3409a500586bce1940a39ccb0cb08f;hb=57daeae6f2e924ce3f16f9677c3474f531cba9e5;hp=0b550f4f18ba35f8c1c56af4d11b08adbc2cda65;hpb=a3f9296f648c4991a1576d4200abfdc72788bc16;p=senf.git diff --git a/senf/Packets/80211Bundle/InformationElements.hh b/senf/Packets/80211Bundle/InformationElements.hh index 0b550f4..396b62a 100644 --- a/senf/Packets/80211Bundle/InformationElements.hh +++ b/senf/Packets/80211Bundle/InformationElements.hh @@ -30,7 +30,7 @@ #include //#include "InformationElements.mpp" -///////////////////////////////hh.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// namespace senf { @@ -41,13 +41,67 @@ namespace senf { SENF_PARSER_FIELD ( type, UInt8Parser ); SENF_PARSER_FIELD ( length, UInt8Parser ); SENF_PARSER_FINALIZE ( WLANInfoElementParser ); + + typedef GenericTLVParserRegistry Registry; }; typedef GenericTLVParserBase WLANGenericInfoElementParser; - + + struct WLANSSIDInfoElementParser + : public WLANInfoElementParser + { + # include SENF_PARSER() + SENF_PARSER_INHERIT ( WLANInfoElementParser ); + // the StringParser includes the length field so we have to go back + SENF_PARSER_GOTO ( length ); + SENF_PARSER_FIELD ( value, StringParser ); + SENF_PARSER_FINALIZE ( WLANSSIDInfoElementParser ); + + SENF_PARSER_INIT() { + type() = typeId; + } + static const type_t::value_type typeId = 0x00u; + + void dump(std::ostream & os) const; + }; + + struct WLANSupportedRatesInfoElementParser + : public WLANInfoElementParser + { + # include SENF_PARSER() + SENF_PARSER_INHERIT ( WLANInfoElementParser ); + // we just skip the value here. If somebody needs the information he has to implement + // this strange information element hisself. + SENF_PARSER_SKIP ( length(), 0 ); + SENF_PARSER_FINALIZE ( WLANSupportedRatesInfoElementParser ); + + SENF_PARSER_INIT() { + type() = typeId; + } + static const type_t::value_type typeId = 0x01u; + + void dump(std::ostream & os) const; + }; + + struct WLANPowerConstraintInfoElementParser + : public WLANInfoElementParser + { + # include SENF_PARSER() + SENF_PARSER_INHERIT ( WLANInfoElementParser ); + SENF_PARSER_FIELD ( value, UInt8Parser ); + SENF_PARSER_FINALIZE ( WLANPowerConstraintInfoElementParser ); + + SENF_PARSER_INIT() { + type() = typeId; + length() = 1; + } + static const type_t::value_type typeId = 0x20u; + + void dump(std::ostream & os) const; + }; } -///////////////////////////////hh.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// //#include "InformationElements.cci" //#include "InformationElements.ct" //#include "InformationElements.cti"