the current length value.
*/
void finalizeLength() {
- protect(), length_().finalize();
+ protect(), length_().finalize();
};
+
+ typedef GenericTLVParserRegistry<MIHBaseTLVParser> Registry;
protected:
/// resize the packet after the length field to given size
\note you must call mihfIdPacket.maxLengthValue( 253) *before*
setting longer MIHF_IDs values.
*/
- class MIHFId_TLVParser : public MIHBaseTLVParser
+ class MIHFIdTLVParser : public MIHBaseTLVParser
{
# include SENF_PARSER()
SENF_PARSER_INHERIT ( MIHBaseTLVParser );
SENF_PARSER_SKIP ( length(), 0 );
- SENF_PARSER_FINALIZE ( MIHFId_TLVParser );
+ SENF_PARSER_FINALIZE ( MIHFIdTLVParser );
public:
std::string asString() const;
MIHFId valueAs(MIHFId::Type type) const;
+ void dump(std::ostream & os) const;
+
private:
template <class OutputIterator>
struct binaryNAIEncoder {
}
};
+ struct MIHFSrcIdTLVParser : public MIHFIdTLVParser
+ {
+ MIHFSrcIdTLVParser(data_iterator i, state_type s) : MIHFIdTLVParser(i,s) {}
+
+ void init() const {
+ defaultInit();
+ type() << typeId+0;
+ }
+ static type_t::value_type const typeId = 1;
+
+ void dump(std::ostream & os) const;
+ };
+
+ struct MIHFDstIdTLVParser : public MIHFIdTLVParser
+ {
+ MIHFDstIdTLVParser(data_iterator i, state_type s) : MIHFIdTLVParser(i,s) {}
+
+ void init() const {
+ defaultInit();
+ type() << typeId+0;
+ }
+ static type_t::value_type const typeId = 2;
+
+ void dump(std::ostream & os) const;
+ };
+
+ /** \brief Parser for 802.21 Status TLV
+ */
+ struct MIHStatusTLVParser : public MIHBaseTLVParser
+ {
+ # include SENF_PARSER()
+ SENF_PARSER_INHERIT ( MIHBaseTLVParser );
+ SENF_PARSER_FIELD ( value, UInt8Parser );
+ SENF_PARSER_FINALIZE( MIHStatusTLVParser );
+ SENF_PARSER_INIT() {
+ defaultInit();
+ type() << typeId+0;
+ length_() = 1;
+ }
+ static type_t::value_type const typeId = 3;
+ void dump(std::ostream & os) const; ///< dump string representation to given stream
+
+ enum StatusCode {
+ Success, UnspecifiedFailure, Rejected, AuthorizationFailure, NetworkError };
+ };
+
+ struct MIHRegisterReqCodeTLVParser : public MIHBaseTLVParser
+ {
+ # include SENF_PARSER()
+ SENF_PARSER_INHERIT ( MIHBaseTLVParser );
+ SENF_PARSER_FIELD ( value, UInt8Parser );
+ SENF_PARSER_FINALIZE ( MIHRegisterReqCodeTLVParser );
+
+ SENF_PARSER_INIT() {
+ defaultInit();
+ type() = typeId+0;
+ length_() = 1;
+ }
+ static type_t::value_type const typeId = 11;
+ void dump(std::ostream & os) const; ///< dump string representation to given stream
+
+ enum RequestCode { Registration, ReRegistration };
+ };
+
+ struct MIHValidTimeIntervalTLVParser : public MIHBaseTLVParser
+ {
+ # include SENF_PARSER()
+ SENF_PARSER_INHERIT ( MIHBaseTLVParser );
+ SENF_PARSER_FIELD ( value, UInt32Parser );
+ SENF_PARSER_FINALIZE ( MIHValidTimeIntervalTLVParser );
+
+ SENF_PARSER_INIT() {
+ defaultInit();
+ type() = typeId+0;
+ length_() = 4;
+ }
+ static type_t::value_type const typeId = 12;
+ void dump(std::ostream & os) const; ///< dump string representation to given stream
+ };
}