olsr header and messages are not printing either their size or their content.
I was dissecting mixed-wired-wireless ASCII trace generated by version 3.32, more specifically, the following line (newlines added for better clarity):
r 0.0217194 OfdmRate6Mbps/NodeList/27/DeviceList/0/$ns3::WifiNetDevice/Phy/State/RxOk ns3::WifiMacHeader (DATA ToDS=0, FromDS=1, MoreFrag=0, Retry=0, MoreData=0 Duration/ID=0us, DA=ff:ff:ff:ff:ff:ff, SA=00:00:00:00:00:2e, BSSID=00:00:00:00:00:2e, FragNumber=0, SeqNumber=0) ns3::LlcSnapHeader (type 0x800) ns3::Ipv4Header (tos 0x0 DSCP Default ECN Not-ECT ttl 1 id 0 protocol 17 offset (bytes) 0 flags [none] length: 68 10.0.7.1 > 10.0.7.255) ns3::UdpHeader (length: 48 698 > 698) ns3::olsr::PacketHeader () ns3::olsr::MessageHeader () ns3::olsr::MessageHeader () ns3::WifiMacTrailer ()
UdpHeader is reporting length of 48, in which I have broken down into the following components
- UdpHeader: 8 bytes (GetSerializedSize)
- PacketHeader: 4 bytes (GetSerializedSize)
- MessageHeader: 12 bytes + variable size (GetSerializedSize)
- WifiMacTrailer: 4 bytes (GetSerializedSize)
The sum of it is 40, which is 8 bytes short. Since MessageHeader is the only one in which the size is variable (from the link above), I'm assuming that's where it comes from. However, it's hard to reason which type of message it is, since there is no information following the header.
I've noticed that the Print functions MessageHeader and it's subclasses are empty. Is it how it's supposed to be?