X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2F80221Bundle%2FTLVParser.cc;h=b5c70ec46c3d6a7db4cee8ec297d457e9b014c16;hb=dbacfefe277bd5a1ff81e4e75448e2789da27e1b;hp=db7ef8b045997babc3e1b37d5c2f4e32e6683f1c;hpb=33adfa86c0b25cb6eeda0fa12d47e077e488375a;p=senf.git diff --git a/senf/Packets/80221Bundle/TLVParser.cc b/senf/Packets/80221Bundle/TLVParser.cc index db7ef8b..b5c70ec 100644 --- a/senf/Packets/80221Bundle/TLVParser.cc +++ b/senf/Packets/80221Bundle/TLVParser.cc @@ -40,6 +40,16 @@ SENF_PACKET_TLV_REGISTRY_REGISTER( senf::MIHStatusTLVParser ); SENF_PACKET_TLV_REGISTRY_REGISTER( senf::MIHValidTimeIntervalTLVParser ); /////////////////////////////////////////////////////////////////////////// +// senf::MIHBaseListTLVParser + +prefix_ void senf::MIHBaseListTLVParser::maxListSize(MIHTLVLengthParser::value_type maxl) + const +{ + protect(), listSize_().capacity( maxl); + maxLength( maxl + senf::bytes(listSize_())); +} + +/////////////////////////////////////////////////////////////////////////// // senf::MIHFIdTLVParser prefix_ void senf::MIHFIdTLVParser::dump(std::ostream & os) @@ -56,21 +66,22 @@ prefix_ void senf::MIHFIdTLVParser::dump(std::ostream & os) prefix_ void senf::MIHFIdTLVParser::finalize() { protect(), idLength_().finalize(); - length_() << idLength() + idLength_().bytes(); + length_() << idLength() + senf::bytes(idLength_()); MIHBaseTLVParser::finalize(); } -prefix_ void senf::MIHFIdTLVParser::maxIdLength(boost::uint8_t maxLength) +prefix_ void senf::MIHFIdTLVParser::maxIdLength(boost::uint8_t maxl) + const { // the maximum length of a MIHF_ID is 253 octets (see F.3.11 in 802.21) - if (maxLength > 253) + if (maxl > 253) throw std::length_error("maximum length of a MIHF_ID is 253 octets"); - protect(), idLength_().maxValue( maxLength); - maxLengthValue( maxLength + senf::bytes(idLength_())); + protect(), idLength_().capacity( maxl); + maxLength( maxl + senf::bytes(idLength_())); } prefix_ senf::safe_data_iterator senf::MIHFIdTLVParser::resizeValueField( - MIHTLVLengthParser::value_type size) + MIHTLVLengthParser::value_type size) { MIHTLVLengthParser::value_type current_length ( idLength()); idLength_() << size; @@ -88,9 +99,9 @@ prefix_ void senf::MIHFIdTLVParser::value(std::string const & id) { size_type str_size (id.size()); // the maximum length of a MIHF_ID is 253 octets (see F.3.11 in 802.21) - if (str_size > 253) + if (str_size > 253) throw std::length_error("maximum length of a MIHF_ID is 253 octets"); - safe_data_iterator si = resizeValueField( str_size); + safe_data_iterator si = resizeValueField( str_size); std::copy( id.begin(), id.end(), si); } @@ -183,7 +194,7 @@ prefix_ void senf::MIHStatusTLVParser::dump(std::ostream & os) case Success: os << " (Success)" << std::endl; return; - case UnspecifiedFailure: + case UnspecifiedFailure: os << " (Unspecified Failure)" << std::endl; return; case Rejected: @@ -240,7 +251,7 @@ prefix_ void senf::MIHValidTimeIntervalTLVParser::dump(std::ostream & os) /////////////////////////////////////////////////////////////////////////// // senf::MIHTLVLengthParser -prefix_ senf::MIHTLVLengthParser::value_type senf::MIHTLVLengthParser::value() const +prefix_ senf::MIHTLVLengthParser::value_type senf::MIHTLVLengthParser::value() const { switch (bytes() ) { case 1: @@ -258,7 +269,7 @@ prefix_ senf::MIHTLVLengthParser::value_type senf::MIHTLVLengthParser::value() c }; } -prefix_ void senf::MIHTLVLengthParser::value(value_type const & v) +prefix_ void senf::MIHTLVLengthParser::value(value_type const & v) { switch (bytes() ) { case 1: @@ -286,7 +297,7 @@ prefix_ void senf::MIHTLVLengthParser::value(value_type const & v) underflow_flag() = (v <= 128); } -prefix_ senf::MIHTLVLengthParser::value_type senf::MIHTLVLengthParser::maxValue() +prefix_ senf::MIHTLVLengthParser::value_type senf::MIHTLVLengthParser::capacity() const { switch (bytes() ) { @@ -299,19 +310,19 @@ prefix_ senf::MIHTLVLengthParser::value_type senf::MIHTLVLengthParser::maxValue( case 4: return UInt24Parser::max_value + 128; case 5: - return UInt32Parser::max_value; + return UInt32Parser::max_value; default: throw( MIHTLVLengthException()); }; } -prefix_ senf::MIHTLVLengthParser const & senf::MIHTLVLengthParser::operator= (value_type other) +prefix_ senf::MIHTLVLengthParser const & senf::MIHTLVLengthParser::operator= (value_type other) { value(other); - return *this; + return *this; } -prefix_ void senf::MIHTLVLengthParser::init() const +prefix_ void senf::MIHTLVLengthParser::init() const { defaultInit(); extended_length_flag() = false; @@ -340,7 +351,7 @@ prefix_ void senf::MIHTLVLengthParser::finalize() if (b != 5) resize_(5); } -prefix_ void senf::MIHTLVLengthParser::maxValue(MIHTLVLengthParser::value_type v) +prefix_ void senf::MIHTLVLengthParser::capacity(MIHTLVLengthParser::value_type v) { if (v <= 128) return;