diff --git a/samples/main-packet-header.cc b/samples/main-packet-header.cc index 904b28800..a93c8cb87 100644 --- a/samples/main-packet-header.cc +++ b/samples/main-packet-header.cc @@ -19,11 +19,13 @@ public: void SetData (uint16_t data); uint16_t GetData (void) const; + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; std::string GetName (void) const; void Print (std::ostream &os) const; - void Serialize (Buffer::Iterator start) const; - uint32_t Deserialize (Buffer::Iterator start); - uint32_t GetSerializedSize (void) const; + virtual void Serialize (Buffer::Iterator start) const; + virtual uint32_t Deserialize (Buffer::Iterator start); + virtual uint32_t GetSerializedSize (void) const; private: uint16_t m_data; }; @@ -36,6 +38,20 @@ MyHeader::MyHeader () MyHeader::~MyHeader () {} +TypeId +MyHeader::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::MyHeader") + .SetParent
() + ; + return tid; +} +TypeId +MyHeader::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} + uint32_t MyHeader::GetUid (void) { diff --git a/src/common/header.cc b/src/common/header.cc index 9633d345b..ef6fac914 100644 --- a/src/common/header.cc +++ b/src/common/header.cc @@ -2,7 +2,18 @@ namespace ns3 { +NS_OBJECT_ENSURE_REGISTERED (Header); + Header::~Header () {} +TypeId +Header::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::Header") + .SetParent () + ; + return tid; +} + } // namespace ns3 diff --git a/src/common/header.h b/src/common/header.h index 9d849e8f8..3d432646e 100644 --- a/src/common/header.h +++ b/src/common/header.h @@ -23,6 +23,7 @@ #define HEADER_H #include "chunk-registry.h" +#include "ns3/object-base.h" /** * \relates ns3::Header @@ -75,9 +76,10 @@ namespace ns3 { * Sample code which shows how to create a new type of Header, and how to use it, * is shown in the sample file samples/main-packet-header.cc */ -class Header +class Header : public ObjectBase { public: + static TypeId GetTypeId (void); virtual ~Header (); /** * \returns the expected size of the header. diff --git a/src/common/packet-metadata-test.cc b/src/common/packet-metadata-test.cc index fa69eb8d1..aabe3de39 100644 --- a/src/common/packet-metadata-test.cc +++ b/src/common/packet-metadata-test.cc @@ -34,6 +34,8 @@ template class HistoryHeader : public Header { public: + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; static uint32_t GetUid (void); HistoryHeader (); bool IsOk (void) const; @@ -46,6 +48,25 @@ private: bool m_ok; }; +template +TypeId +HistoryHeader::GetTypeId (void) +{ + std::ostringstream oss; + oss << "ns3::HistoryHeader<"<"; + static TypeId tid = TypeId (oss.str ().c_str ()) + .SetParent
() + ; + return tid; +} + +template +TypeId +HistoryHeader::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} + template uint32_t HistoryHeader::GetUid (void) @@ -114,6 +135,8 @@ template class HistoryTrailer : public Trailer { public: + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; static uint32_t GetUid (void); HistoryTrailer (); bool IsOk (void) const; @@ -126,6 +149,26 @@ private: bool m_ok; }; + +template +TypeId +HistoryTrailer::GetTypeId (void) +{ + std::ostringstream oss; + oss << "ns3::HistoryTrailer<"<"; + static TypeId tid = TypeId (oss.str ().c_str ()) + .SetParent () + ; + return tid; +} + +template +TypeId +HistoryTrailer::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} + template uint32_t HistoryTrailer::GetUid (void) diff --git a/src/common/trailer.cc b/src/common/trailer.cc index 9422b2ec1..389e3d34b 100644 --- a/src/common/trailer.cc +++ b/src/common/trailer.cc @@ -2,7 +2,18 @@ namespace ns3 { +NS_OBJECT_ENSURE_REGISTERED (Trailer); + Trailer::~Trailer () {} +TypeId +Trailer::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::Trailer") + .SetParent () + ; + return tid; +} + } // namespace ns3 diff --git a/src/common/trailer.h b/src/common/trailer.h index 92225eba6..dd77e684b 100644 --- a/src/common/trailer.h +++ b/src/common/trailer.h @@ -22,6 +22,7 @@ #ifndef TRAILER_H #define TRAILER_H +#include "ns3/object-base.h" #include "chunk-registry.h" #include "buffer.h" #include @@ -74,9 +75,10 @@ namespace ns3 { * single word as all capitalized letters. * */ -class Trailer +class Trailer : public ObjectBase { public: + static TypeId GetTypeId (void); virtual ~Trailer (); /** * \returns the expected size of the trailer. diff --git a/src/devices/wifi/mgt-headers.cc b/src/devices/wifi/mgt-headers.cc index 864c35ff8..e3c7aeac0 100644 --- a/src/devices/wifi/mgt-headers.cc +++ b/src/devices/wifi/mgt-headers.cc @@ -27,6 +27,8 @@ namespace ns3 { * Probe Request ***********************************************************/ +NS_OBJECT_ENSURE_REGISTERED (MgtProbeRequestHeader); + MgtProbeRequestHeader::~MgtProbeRequestHeader () {} @@ -59,6 +61,19 @@ MgtProbeRequestHeader::GetSerializedSize (void) const size += m_rates.GetSerializedSize (); return size; } +TypeId +MgtProbeRequestHeader::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::MgtProbeRequestHeader") + .SetParent
() + ; + return tid; +} +TypeId +MgtProbeRequestHeader::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} uint32_t MgtProbeRequestHeader::GetUid (void) { @@ -97,6 +112,8 @@ MgtProbeRequestHeader::Deserialize (Buffer::Iterator start) * Probe Response ***********************************************************/ +NS_OBJECT_ENSURE_REGISTERED (MgtProbeResponseHeader); + MgtProbeResponseHeader::MgtProbeResponseHeader () {} MgtProbeResponseHeader::~MgtProbeResponseHeader () @@ -133,6 +150,19 @@ MgtProbeResponseHeader::SetSupportedRates (SupportedRates rates) { m_rates = rates; } +TypeId +MgtProbeResponseHeader::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::MgtProbeResponseHeader") + .SetParent
() + ; + return tid; +} +TypeId +MgtProbeResponseHeader::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} uint32_t MgtProbeResponseHeader::GetUid (void) { @@ -198,6 +228,11 @@ MgtProbeResponseHeader::Deserialize (Buffer::Iterator start) return i.GetDistanceFrom (start); } +/*********************************************************** + * Assoc Request + ***********************************************************/ + +NS_OBJECT_ENSURE_REGISTERED (MgtAssocRequestHeader); MgtAssocRequestHeader::MgtAssocRequestHeader () {} @@ -234,6 +269,20 @@ MgtAssocRequestHeader::GetListenInterval (void) const { return m_listenInterval; } + +TypeId +MgtAssocRequestHeader::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::MgtAssocRequestHeader") + .SetParent
() + ; + return tid; +} +TypeId +MgtAssocRequestHeader::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} uint32_t MgtAssocRequestHeader::GetUid (void) { @@ -281,6 +330,12 @@ MgtAssocRequestHeader::Deserialize (Buffer::Iterator start) return i.GetDistanceFrom (start); } +/*********************************************************** + * Assoc Response + ***********************************************************/ + +NS_OBJECT_ENSURE_REGISTERED (MgtAssocResponseHeader); + MgtAssocResponseHeader::MgtAssocResponseHeader () {} MgtAssocResponseHeader::~MgtAssocResponseHeader () @@ -307,6 +362,19 @@ MgtAssocResponseHeader::SetSupportedRates (SupportedRates rates) m_rates = rates; } +TypeId +MgtAssocResponseHeader::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::MgtAssocResponseHeader") + .SetParent
() + ; + return tid; +} +TypeId +MgtAssocResponseHeader::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} uint32_t MgtAssocResponseHeader::GetUid (void) { diff --git a/src/devices/wifi/mgt-headers.h b/src/devices/wifi/mgt-headers.h index 457ab1e03..67e8a315a 100644 --- a/src/devices/wifi/mgt-headers.h +++ b/src/devices/wifi/mgt-headers.h @@ -44,12 +44,14 @@ public: SupportedRates GetSupportedRates (void) const; uint16_t GetListenInterval (void) const; + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; static uint32_t GetUid (void); std::string GetName (void) const; void Print (std::ostream &os) const; - uint32_t GetSerializedSize (void) const; - void Serialize (Buffer::Iterator start) const; - uint32_t Deserialize (Buffer::Iterator start); + virtual uint32_t GetSerializedSize (void) const; + virtual void Serialize (Buffer::Iterator start) const; + virtual uint32_t Deserialize (Buffer::Iterator start); private: Ssid m_ssid; @@ -69,12 +71,14 @@ public: void SetSupportedRates (SupportedRates rates); void SetStatusCode (StatusCode code); + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; static uint32_t GetUid (void); std::string GetName (void) const; void Print (std::ostream &os) const; - uint32_t GetSerializedSize (void) const; - void Serialize (Buffer::Iterator start) const; - uint32_t Deserialize (Buffer::Iterator start); + virtual uint32_t GetSerializedSize (void) const; + virtual void Serialize (Buffer::Iterator start) const; + virtual uint32_t Deserialize (Buffer::Iterator start); private: SupportedRates m_rates; @@ -92,12 +96,14 @@ public: Ssid GetSsid (void) const; SupportedRates GetSupportedRates (void) const; + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; static uint32_t GetUid (void); std::string GetName (void) const; void Print (std::ostream &os) const; - uint32_t GetSerializedSize (void) const; - void Serialize (Buffer::Iterator start) const; - uint32_t Deserialize (Buffer::Iterator start); + virtual uint32_t GetSerializedSize (void) const; + virtual void Serialize (Buffer::Iterator start) const; + virtual uint32_t Deserialize (Buffer::Iterator start); private: Ssid m_ssid; @@ -117,12 +123,14 @@ public: void SetBeaconIntervalUs (uint64_t us); void SetSupportedRates (SupportedRates rates); + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; static uint32_t GetUid (void); std::string GetName (void) const; void Print (std::ostream &os) const; - uint32_t GetSerializedSize (void) const; - void Serialize (Buffer::Iterator start) const; - uint32_t Deserialize (Buffer::Iterator start); + virtual uint32_t GetSerializedSize (void) const; + virtual void Serialize (Buffer::Iterator start) const; + virtual uint32_t Deserialize (Buffer::Iterator start); private: Ssid m_ssid; diff --git a/src/devices/wifi/wifi-mac-header.cc b/src/devices/wifi/wifi-mac-header.cc index ed21375cf..e8e8324f8 100644 --- a/src/devices/wifi/wifi-mac-header.cc +++ b/src/devices/wifi/wifi-mac-header.cc @@ -34,6 +34,8 @@ std::Cout << "MAC80211HEADER " << x << std::Endl; namespace ns3 { +NS_OBJECT_ENSURE_REGISTERED (WifiMacHeader); + enum { TYPE_MGT = 0, TYPE_CTL = 1, @@ -766,6 +768,19 @@ case WIFI_MAC_ ## x: \ return "BIG_ERROR"; } +TypeId +WifiMacHeader::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::WifiMacHeader") + .SetParent
() + ; + return tid; +} +TypeId +WifiMacHeader::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} uint32_t WifiMacHeader::GetUid (void) { diff --git a/src/devices/wifi/wifi-mac-header.h b/src/devices/wifi/wifi-mac-header.h index c7123b01b..869a48628 100644 --- a/src/devices/wifi/wifi-mac-header.h +++ b/src/devices/wifi/wifi-mac-header.h @@ -65,14 +65,18 @@ enum WifiMacType_e { class WifiMacHeader : public Header { public: + WifiMacHeader (); ~WifiMacHeader (); + + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; static uint32_t GetUid (void); std::string GetName (void) const; void Print (std::ostream &os) const; - uint32_t GetSerializedSize (void) const; - void Serialize (Buffer::Iterator start) const; - uint32_t Deserialize (Buffer::Iterator start); + virtual uint32_t GetSerializedSize (void) const; + virtual void Serialize (Buffer::Iterator start) const; + virtual uint32_t Deserialize (Buffer::Iterator start); void SetAssocReq (void); diff --git a/src/devices/wifi/wifi-mac-trailer.cc b/src/devices/wifi/wifi-mac-trailer.cc index 03853af2b..d083e0509 100644 --- a/src/devices/wifi/wifi-mac-trailer.cc +++ b/src/devices/wifi/wifi-mac-trailer.cc @@ -22,12 +22,28 @@ namespace ns3 { +NS_OBJECT_ENSURE_REGISTERED (WifiMacTrailer); + WifiMacTrailer::WifiMacTrailer () {} WifiMacTrailer::~WifiMacTrailer () {} +TypeId +WifiMacTrailer::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::WifiMacTrailer") + .SetParent () + ; + return tid; +} +TypeId +WifiMacTrailer::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} + uint32_t WifiMacTrailer::GetUid (void) { diff --git a/src/devices/wifi/wifi-mac-trailer.h b/src/devices/wifi/wifi-mac-trailer.h index c2f366d5d..c295025c7 100644 --- a/src/devices/wifi/wifi-mac-trailer.h +++ b/src/devices/wifi/wifi-mac-trailer.h @@ -31,12 +31,14 @@ public: WifiMacTrailer (); ~WifiMacTrailer (); + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; static uint32_t GetUid (void); std::string GetName (void) const; void Print (std::ostream &os) const; - uint32_t GetSerializedSize (void) const; - void Serialize (Buffer::Iterator start) const; - uint32_t Deserialize (Buffer::Iterator start); + virtual uint32_t GetSerializedSize (void) const; + virtual void Serialize (Buffer::Iterator start) const; + virtual uint32_t Deserialize (Buffer::Iterator start); }; } // namespace ns3 diff --git a/src/internet-node/arp-header.cc b/src/internet-node/arp-header.cc index 4fdfe19d7..3e114716c 100644 --- a/src/internet-node/arp-header.cc +++ b/src/internet-node/arp-header.cc @@ -26,6 +26,21 @@ namespace ns3 { NS_HEADER_ENSURE_REGISTERED (ArpHeader); +NS_OBJECT_ENSURE_REGISTERED (ArpHeader); + +TypeId +ArpHeader::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::ArpHeader") + .SetParent
() + ; + return tid; +} +TypeId +ArpHeader::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} uint32_t ArpHeader::GetUid (void) diff --git a/src/internet-node/arp-header.h b/src/internet-node/arp-header.h index 509530991..7fafefcef 100644 --- a/src/internet-node/arp-header.h +++ b/src/internet-node/arp-header.h @@ -34,6 +34,8 @@ namespace ns3 { class ArpHeader : public Header { public: + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; static uint32_t GetUid (void); void SetRequest (Address sourceHardwareAddress, diff --git a/src/internet-node/ipv4-header.cc b/src/internet-node/ipv4-header.cc index 2fd8fc059..052be7c5a 100644 --- a/src/internet-node/ipv4-header.cc +++ b/src/internet-node/ipv4-header.cc @@ -29,9 +29,24 @@ NS_LOG_COMPONENT_DEFINE ("Ipv4Header"); namespace ns3 { NS_HEADER_ENSURE_REGISTERED (Ipv4Header); +NS_OBJECT_ENSURE_REGISTERED (Ipv4Header); bool Ipv4Header::m_calcChecksum = false; +TypeId +Ipv4Header::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::Ipv4Header") + .SetParent
() + ; + return tid; +} +TypeId +Ipv4Header::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} + uint32_t Ipv4Header::GetUid (void) { diff --git a/src/internet-node/ipv4-header.h b/src/internet-node/ipv4-header.h index fe9317d7c..8375dd300 100644 --- a/src/internet-node/ipv4-header.h +++ b/src/internet-node/ipv4-header.h @@ -32,6 +32,8 @@ namespace ns3 { class Ipv4Header : public Header { public: + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; static uint32_t GetUid (void); /** * \brief Construct a null IPv4 header @@ -142,9 +144,9 @@ public: std::string GetName (void) const; void Print (std::ostream &os) const; - uint32_t GetSerializedSize (void) const; - void Serialize (Buffer::Iterator start) const; - uint32_t Deserialize (Buffer::Iterator start); + virtual uint32_t GetSerializedSize (void) const; + virtual void Serialize (Buffer::Iterator start) const; + virtual uint32_t Deserialize (Buffer::Iterator start); private: enum FlagsE { diff --git a/src/internet-node/tcp-header.cc b/src/internet-node/tcp-header.cc index f5920c355..dde46f36c 100644 --- a/src/internet-node/tcp-header.cc +++ b/src/internet-node/tcp-header.cc @@ -27,9 +27,24 @@ namespace ns3 { NS_HEADER_ENSURE_REGISTERED (TcpHeader); +NS_OBJECT_ENSURE_REGISTERED (TcpHeader); bool TcpHeader::m_calcChecksum = false; +TypeId +TcpHeader::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::TcpHeader") + .SetParent
() + ; + return tid; +} +TypeId +TcpHeader::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} + uint32_t TcpHeader::GetUid (void) { diff --git a/src/internet-node/tcp-header.h b/src/internet-node/tcp-header.h index 1bdeb2fc5..2dbda5634 100644 --- a/src/internet-node/tcp-header.h +++ b/src/internet-node/tcp-header.h @@ -30,8 +30,11 @@ namespace ns3 { -class TcpHeader : public Header { +class TcpHeader : public Header +{ public: + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; static uint32_t GetUid (void); TcpHeader (); @@ -138,9 +141,9 @@ public: std::string GetName (void) const; void Print (std::ostream &os) const; - uint32_t GetSerializedSize (void) const; - void Serialize (Buffer::Iterator start) const; - uint32_t Deserialize (Buffer::Iterator start); + virtual uint32_t GetSerializedSize (void) const; + virtual void Serialize (Buffer::Iterator start) const; + virtual uint32_t Deserialize (Buffer::Iterator start); private: uint16_t m_sourcePort; diff --git a/src/internet-node/udp-header.cc b/src/internet-node/udp-header.cc index 96b57beba..d8b3594c7 100644 --- a/src/internet-node/udp-header.cc +++ b/src/internet-node/udp-header.cc @@ -25,9 +25,24 @@ namespace ns3 { NS_HEADER_ENSURE_REGISTERED (UdpHeader); +NS_OBJECT_ENSURE_REGISTERED (UdpHeader); bool UdpHeader::m_calcChecksum = false; +TypeId +UdpHeader::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::UdpHeader") + .SetParent
() + ; + return tid; +} +TypeId +UdpHeader::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} + uint32_t UdpHeader::GetUid (void) { diff --git a/src/internet-node/udp-header.h b/src/internet-node/udp-header.h index 70503ef91..f55f42406 100644 --- a/src/internet-node/udp-header.h +++ b/src/internet-node/udp-header.h @@ -34,6 +34,8 @@ namespace ns3 { class UdpHeader : public Header { public: + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; static uint32_t GetUid (void); /** @@ -86,9 +88,9 @@ public: std::string GetName (void) const; void Print (std::ostream &os) const; - uint32_t GetSerializedSize (void) const; - void Serialize (Buffer::Iterator start) const; - uint32_t Deserialize (Buffer::Iterator start); + virtual uint32_t GetSerializedSize (void) const; + virtual void Serialize (Buffer::Iterator start) const; + virtual uint32_t Deserialize (Buffer::Iterator start); private: uint16_t m_sourcePort; diff --git a/src/node/ethernet-header.cc b/src/node/ethernet-header.cc index ec0d4a420..999dc9d08 100644 --- a/src/node/ethernet-header.cc +++ b/src/node/ethernet-header.cc @@ -32,6 +32,21 @@ NS_LOG_COMPONENT_DEFINE ("EthernetHeader"); namespace ns3 { NS_HEADER_ENSURE_REGISTERED (EthernetHeader); +NS_OBJECT_ENSURE_REGISTERED (EthernetHeader); + +TypeId +EthernetHeader::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::EthernetHeader") + .SetParent
() + ; + return tid; +} +TypeId +EthernetHeader::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} uint32_t EthernetHeader::GetUid (void) diff --git a/src/node/ethernet-header.h b/src/node/ethernet-header.h index f0c653722..189cb8e32 100644 --- a/src/node/ethernet-header.h +++ b/src/node/ethernet-header.h @@ -49,6 +49,8 @@ namespace ns3 { class EthernetHeader : public Header { public: + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; static uint32_t GetUid (void); /** @@ -105,9 +107,9 @@ public: std::string GetName (void) const; void Print (std::ostream &os) const; - uint32_t GetSerializedSize (void) const; - void Serialize (Buffer::Iterator start) const; - uint32_t Deserialize (Buffer::Iterator start); + virtual uint32_t GetSerializedSize (void) const; + virtual void Serialize (Buffer::Iterator start) const; + virtual uint32_t Deserialize (Buffer::Iterator start); private: static const int PREAMBLE_SIZE = 8; /// size of the preamble_sfd header field static const int LENGTH_SIZE = 2; /// size of the length_type header field diff --git a/src/node/ethernet-trailer.cc b/src/node/ethernet-trailer.cc index 055b21aee..6c94ed368 100644 --- a/src/node/ethernet-trailer.cc +++ b/src/node/ethernet-trailer.cc @@ -29,9 +29,24 @@ NS_LOG_COMPONENT_DEFINE ("EthernetTrailer"); namespace ns3 { NS_TRAILER_ENSURE_REGISTERED (EthernetTrailer); +NS_OBJECT_ENSURE_REGISTERED (EthernetTrailer); bool EthernetTrailer::m_calcFcs = false; +TypeId +EthernetTrailer::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::EthernetTrailer") + .SetParent () + ; + return tid; +} +TypeId +EthernetTrailer::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} + uint32_t EthernetTrailer::GetUid (void) { diff --git a/src/node/ethernet-trailer.h b/src/node/ethernet-trailer.h index 5c574c6d8..694be0a70 100644 --- a/src/node/ethernet-trailer.h +++ b/src/node/ethernet-trailer.h @@ -39,6 +39,8 @@ class Packet; class EthernetTrailer : public Trailer { public: + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; static uint32_t GetUid (void); /** diff --git a/src/node/llc-snap-header.cc b/src/node/llc-snap-header.cc index 5bcb9714b..9c801fbc0 100644 --- a/src/node/llc-snap-header.cc +++ b/src/node/llc-snap-header.cc @@ -26,6 +26,21 @@ namespace ns3 { NS_HEADER_ENSURE_REGISTERED (LlcSnapHeader); +NS_OBJECT_ENSURE_REGISTERED (LlcSnapHeader); + +TypeId +LlcSnapHeader::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::LlcSnapHeader") + .SetParent
() + ; + return tid; +} +TypeId +LlcSnapHeader::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} uint32_t LlcSnapHeader::GetUid (void) diff --git a/src/node/llc-snap-header.h b/src/node/llc-snap-header.h index cfc9a5d9c..32c20a484 100644 --- a/src/node/llc-snap-header.h +++ b/src/node/llc-snap-header.h @@ -31,6 +31,8 @@ namespace ns3 { class LlcSnapHeader : public Header { public: + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; static uint32_t GetUid (void); LlcSnapHeader (); @@ -40,9 +42,9 @@ public: std::string GetName (void) const; void Print (std::ostream &os) const; - uint32_t GetSerializedSize (void) const; - void Serialize (Buffer::Iterator start) const; - uint32_t Deserialize (Buffer::Iterator start); + virtual uint32_t GetSerializedSize (void) const; + virtual void Serialize (Buffer::Iterator start) const; + virtual uint32_t Deserialize (Buffer::Iterator start); private: uint16_t m_etherType; }; diff --git a/src/routing/olsr/olsr-header.cc b/src/routing/olsr/olsr-header.cc index aacc3e440..eb488234a 100644 --- a/src/routing/olsr/olsr-header.cc +++ b/src/routing/olsr/olsr-header.cc @@ -33,7 +33,6 @@ namespace olsr { NS_LOG_COMPONENT_DEFINE("OlsrHeader"); - /// Scaling factor used in RFC 3626. #define OLSR_C 0.0625 @@ -95,12 +94,28 @@ EmfToSeconds (uint8_t olsrFormat) // ---------------- OLSR Packet ------------------------------- +NS_OBJECT_ENSURE_REGISTERED (PacketHeader); + PacketHeader::PacketHeader () {} PacketHeader::~PacketHeader () {} +TypeId +PacketHeader::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::olsr::PacketHeader") + .SetParent
() + ; + return tid; +} +TypeId +PacketHeader::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} + uint32_t PacketHeader::GetUid (void) { @@ -141,6 +156,8 @@ PacketHeader::Deserialize (Buffer::Iterator start) // ---------------- OLSR Message ------------------------------- +NS_OBJECT_ENSURE_REGISTERED (MessageHeader); + MessageHeader::MessageHeader () : m_messageType (MessageHeader::MessageType (0)) {} @@ -148,6 +165,20 @@ MessageHeader::MessageHeader () MessageHeader::~MessageHeader () {} +TypeId +MessageHeader::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::olsr::MessageHeader") + .SetParent
() + ; + return tid; +} +TypeId +MessageHeader::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} + uint32_t MessageHeader::GetUid (void) { diff --git a/src/routing/olsr/olsr-header.h b/src/routing/olsr/olsr-header.h index 36cb8e742..13583d16e 100644 --- a/src/routing/olsr/olsr-header.h +++ b/src/routing/olsr/olsr-header.h @@ -95,6 +95,8 @@ private: uint16_t m_packetSequenceNumber; public: + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; static uint32_t GetUid (void); virtual void Print (std::ostream &os) const; virtual uint32_t GetSerializedSize (void) const; @@ -200,6 +202,8 @@ private: uint16_t m_messageSize; public: + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; static uint32_t GetUid (void); virtual void Print (std::ostream &os) const; virtual uint32_t GetSerializedSize (void) const; diff --git a/utils/bench-packets.cc b/utils/bench-packets.cc index 5d4776ef9..920aa992b 100644 --- a/utils/bench-packets.cc +++ b/utils/bench-packets.cc @@ -33,13 +33,14 @@ public: BenchHeader (); bool IsOk (void) const; + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; static uint32_t GetUid (void); - static std::string GetName (void); void Print (std::ostream &os) const; - uint32_t GetSerializedSize (void) const; - void Serialize (Buffer::Iterator start) const; - uint32_t Deserialize (Buffer::Iterator start); + virtual uint32_t GetSerializedSize (void) const; + virtual void Serialize (Buffer::Iterator start) const; + virtual uint32_t Deserialize (Buffer::Iterator start); private: bool m_ok; }; @@ -56,6 +57,24 @@ BenchHeader::IsOk (void) const return m_ok; } +template +TypeId +BenchHeader::GetTypeId (void) +{ + std::ostringstream oss; + oss << "ns3::BenchHeader<"<"; + static TypeId tid = TypeId (oss.str ().c_str ()) + .SetParent
() + ; + return tid; +} +template +TypeId +BenchHeader::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} + template uint32_t BenchHeader::GetUid (void)