X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2F80221Bundle%2FMIHPacket.cc;h=3e8b050ddd6388e176e9bd70f46dc194611d4df4;hb=8674fb1d184e7d620eb7c604957b5b4203df37a6;hp=d4e2e6197b9fa77be73b7ac133ed093606d027d3;hpb=ef7165e64d4b315ed1ca9604ee9114887938f0ee;p=senf.git diff --git a/Packets/80221Bundle/MIHPacket.cc b/Packets/80221Bundle/MIHPacket.cc index d4e2e61..3e8b050 100644 --- a/Packets/80221Bundle/MIHPacket.cc +++ b/Packets/80221Bundle/MIHPacket.cc @@ -32,13 +32,12 @@ #include #define prefix_ +///////////////////////////////cc.p//////////////////////////////////////// -prefix_ std::string senf::MIHFId_TLVParser::asString() - const -{ - return std::string( i(1+length_bytes()), i(1+length_bytes()+length()) ); -} + +/////////////////////////////////////////////////////////////////////////// +// MIHFId_TLVParser prefix_ void senf::MIHFId_TLVParser::setString(std::string const &id) { @@ -50,46 +49,55 @@ prefix_ void senf::MIHFId_TLVParser::setString(std::string const &id) std::copy( id.begin(), id.end(), si); } -prefix_ senf::MACAddress senf::MIHFId_TLVParser::asMACAddress() - const -{ - return MACAddress::from_data( - getNAIDecodedIterator( i(1+length_bytes()), i(1+length_bytes()+12) )); -} - prefix_ void senf::MIHFId_TLVParser::setMACAddress(senf::MACAddress const &mac) { safe_data_iterator si = resizeValueField(12); std::copy( mac.begin(), mac.end(), getNAIEncodedOutputIterator(si)); } - -prefix_ senf::INet4Address senf::MIHFId_TLVParser::asINet4Address() - const -{ - return INet4Address::from_data( - getNAIDecodedIterator( i(1+length_bytes()), i(1+length_bytes()+8) )); -} - prefix_ void senf::MIHFId_TLVParser::setINet4Address(senf::INet4Address const &addr) { safe_data_iterator si = resizeValueField(8); std::copy( addr.begin(), addr.end(), getNAIEncodedOutputIterator(si)); } -prefix_ senf::INet6Address senf::MIHFId_TLVParser::asINet6Address() - const +prefix_ void senf::MIHFId_TLVParser::setINet6Address(senf::INet6Address const &addr) { - return INet6Address::from_data( - getNAIDecodedIterator( i(1+length_bytes()), i(1+length_bytes()+32) )); + safe_data_iterator si = resizeValueField(32); + std::copy( addr.begin(), addr.end(), getNAIEncodedOutputIterator(si)); } -prefix_ void senf::MIHFId_TLVParser::setINet6Address(senf::INet6Address const &addr) +prefix_ void senf::MIHFId_TLVParser::setEUI64(senf::EUI64 const &addr) { - safe_data_iterator si = resizeValueField(32); + safe_data_iterator si = resizeValueField(16); std::copy( addr.begin(), addr.end(), getNAIEncodedOutputIterator(si)); } +prefix_ senf::MIHFId senf::MIHFId_TLVParser::valueAs(MIHFId::Type type) + const +{ + if (length() == 0) return MIHFId(); + switch (type) { + case MIHFId::Empty: + return MIHFId(); + case MIHFId::MACAddress: + return MIHFId( asMACAddress()); + case MIHFId::INet4Address: + return MIHFId( asINet4Address()); + case MIHFId::INet6Address: + return MIHFId( asINet6Address()); + case MIHFId::String: + return MIHFId( asINet6Address()); + case MIHFId::EUI64: + return MIHFId( asINet6Address()); + } + return MIHFId(); +} + + +/////////////////////////////////////////////////////////////////////////// +// MIHPacketType + prefix_ void senf::MIHPacketType::dump(packet p, std::ostream &os) { boost::io::ios_all_saver ias(os); @@ -123,8 +131,8 @@ prefix_ void senf::MIHPacketType::dump(packet p, std::ostream &os) prefix_ void senf::MIHPacketType::finalize(packet p) { - p->src_mihfId().shrinkLength(); - p->dst_mihfId().shrinkLength(); + p->src_mihfId().finalizeLength(); + p->dst_mihfId().finalizeLength(); p->payloadLength_() << p.size() - 8; p->messageId() << key(p.next(nothrow)); } @@ -144,6 +152,7 @@ prefix_ void senf::MIHPayloadPacketType::dump(packet p, std::ostream &os) << " ToDo!\n"; } +///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_