// Free Software Foundation, Inc.,
// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-/** \file
+/** \file
\brief UDPPacket non-inline non-template implementation */
#include "UDPPacket.hh"
IPv4Packet ipv4 (packet().rfind<IPv4Packet>(nothrow));
if (ipv4) {
// Pseudo header defined in RFC768
- summer.feed( ipv4->source().i(),
+ summer.feed( ipv4->source().i(),
ipv4->source().i() + IPv4Packet::Parser::source_t::fixed_bytes );
///\fixme What about a hop-by-hop routing option? Which destination is used in IPv4 ?
- summer.feed( ipv4->destination().i(),
+ summer.feed( ipv4->destination().i(),
ipv4->destination().i() + IPv4PacketParser::destination_t::fixed_bytes );
summer.feed( 0u );
///\fixme May there be another header between the IPv4 header and UDP? if so, we
/// need to hack the correct protocol number here ...
summer.feed( 17u );
summer.feed( i() + length_offset, i() + length_offset + 2 );
- }
+ }
else {
// Pseudo header defined in RFC2460
IPv6Packet ipv6 (packet().rfind<IPv6Packet>(nothrow));
if (ipv6) {
- summer.feed( ipv6->source().i(),
+ summer.feed( ipv6->source().i(),
ipv6->source().i() + IPv6Packet::Parser::source_t::fixed_bytes );
///\todo Implement routing header support
// The destination used here must be the *final* destination ...
- summer.feed( ipv6->destination().i(),
+ summer.feed( ipv6->destination().i(),
ipv6->destination().i() + IPv6PacketParser::destination_t::fixed_bytes );
// This is a simplification. The value is really 32bit to support UDP Jumbograms
// (RFC2147). However, skipping an even number of 0 bytes does not change the checksum
summer.feed( 17u );
}
}
-
- // since header are 16 / even 32bit aligned we don't have to care for padding. since IpChecksum
+
+ // since header are 16 / even 32bit aligned we don't have to care for padding. since IpChecksum
// cares for padding at the final summing we don't have to care is the payload is 16nbit-aligned, too.
summer.feed( i(), i()+checksum_offset );
summer.feed( i()+checksum_offset+2, data().end() );
{
boost::io::ios_all_saver ias(os);
os << "UDP:\n"
- << " source port : " << p->source() << "\n"
- << " dest port : " << p->destination() << "\n"
- << " length : " << p->length() << "\n"
- << " checksum : "
- << std::hex << std::setw(4) << std::setfill('0') << p->checksum() << "\n";
+ << senf::fieldName("source port") << p->source() << "\n"
+ << senf::fieldName("dest port") << p->destination() << "\n"
+ << senf::fieldName("length") << p->length() << "\n"
+ << senf::fieldName("checksum")
+ << "0x" << std::hex << std::setw(4) << std::setfill('0') << p->checksum() << "\n";
}
prefix_ void senf::UDPPacketType::finalize(packet p)