Packets/80221Bundle: extended MIHMessageType / MIHMessageRegistry to validate MIH...
[senf.git] / senf / Packets / 80221Bundle / TLVParser.cc
index cf2e41d..ad14cb5 100644 (file)
@@ -30,6 +30,7 @@
 #include <iomanip>
 #include <senf/Utils/hexdump.hh>
 #include <senf/Utils/Format.hh>
+#include <senf/Utils/String.hh>
 
 #define prefix_
 //-/////////////////////////////////////////////////////////////////////////////////////////////////
@@ -233,6 +234,14 @@ prefix_ void senf::MIHRegisterReqCodeTLVParser::dump(std::ostream & os)
     os << " (???; invalid value!)" << std::endl;
 }
 
+prefix_ std::pair<bool, std::string> senf::MIHRegisterReqCodeTLVParser::validate()
+    const
+{
+    if (length() != 1) return std::make_pair(false, "invalid length in MIHRegisterReqCodeTLV " + senf::str(length()));
+    if (value()  >= 2) return std::make_pair(false, "invalid value in MIHRegisterReqCodeTLV " + senf::str(value()));
+    return std::make_pair(true, "");
+}
+
 //-/////////////////////////////////////////////////////////////////////////////////////////////////
 // senf::MIHValidTimeIntervalTLVParser
 
@@ -248,6 +257,13 @@ prefix_ void senf::MIHValidTimeIntervalTLVParser::dump(std::ostream & os)
        << ( value()==0 ? " (infinite)" : " seconds") << std::endl;
 }
 
+prefix_ std::pair<bool, std::string> senf::MIHValidTimeIntervalTLVParser::validate()
+    const
+{
+    if (length() != 4) return std::make_pair(false, "invalid length in MIHValidTimeIntervalTLV " + senf::str(length()));
+    return std::make_pair(true, "");
+}
+
 //-/////////////////////////////////////////////////////////////////////////////////////////////////
 // senf::MIHTLVLengthParser