internet: (fixes #941) fix re-serialization of UDP headers
This commit is contained in:
@@ -33,7 +33,6 @@ NS_OBJECT_ENSURE_REGISTERED(UdpHeader);
|
||||
UdpHeader::UdpHeader()
|
||||
: m_sourcePort(0xfffd),
|
||||
m_destinationPort(0xfffd),
|
||||
m_payloadSize(0),
|
||||
m_checksum(0),
|
||||
m_calcChecksum(false),
|
||||
m_goodChecksum(true)
|
||||
@@ -150,7 +149,7 @@ UdpHeader::ForceChecksum(uint16_t checksum)
|
||||
void
|
||||
UdpHeader::ForcePayloadSize(uint16_t payloadSize)
|
||||
{
|
||||
m_payloadSize = payloadSize;
|
||||
m_forcedPayloadSize = payloadSize;
|
||||
}
|
||||
|
||||
TypeId
|
||||
@@ -189,13 +188,13 @@ UdpHeader::Serialize(Buffer::Iterator start) const
|
||||
|
||||
i.WriteHtonU16(m_sourcePort);
|
||||
i.WriteHtonU16(m_destinationPort);
|
||||
if (m_payloadSize == 0)
|
||||
if (m_forcedPayloadSize == 0)
|
||||
{
|
||||
i.WriteHtonU16(start.GetSize());
|
||||
}
|
||||
else
|
||||
{
|
||||
i.WriteHtonU16(m_payloadSize);
|
||||
i.WriteHtonU16(m_forcedPayloadSize);
|
||||
}
|
||||
|
||||
if (m_checksum == 0)
|
||||
|
||||
@@ -167,9 +167,10 @@ class UdpHeader : public Header
|
||||
* \returns the checksum
|
||||
*/
|
||||
uint16_t CalculateHeaderChecksum(uint16_t size) const;
|
||||
uint16_t m_sourcePort; //!< Source port
|
||||
uint16_t m_destinationPort; //!< Destination port
|
||||
uint16_t m_payloadSize; //!< Payload size
|
||||
uint16_t m_sourcePort; //!< Source port
|
||||
uint16_t m_destinationPort; //!< Destination port
|
||||
uint16_t m_payloadSize{0}; //!< Payload size
|
||||
uint16_t m_forcedPayloadSize{0}; //!< Payload size (forced)
|
||||
|
||||
Address m_source; //!< Source IP address
|
||||
Address m_destination; //!< Destination IP address
|
||||
|
||||
Reference in New Issue
Block a user