internet: (fixes #941) fix re-serialization of UDP headers

This commit is contained in:
Tommaso Pecorella
2023-08-18 18:34:03 +02:00
parent 13ba28a1aa
commit ef4ec92aab
2 changed files with 7 additions and 7 deletions

View File

@@ -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)

View File

@@ -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