A Discrete-Event Network Simulator
API
dsr-option-header.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2011 Yufei Cheng
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Yufei Cheng <yfcheng@ittc.ku.edu>
19  *
20  * James P.G. Sterbenz <jpgs@ittc.ku.edu>, director
21  * ResiliNets Research Group http://wiki.ittc.ku.edu/resilinets
22  * Information and Telecommunication Technology Center (ITTC)
23  * and Department of Electrical Engineering and Computer Science
24  * The University of Kansas Lawrence, KS USA.
25  *
26  * Work supported in part by NSF FIND (Future Internet Design) Program
27  * under grant CNS-0626918 (Postmodern Internet Architecture),
28  * NSF grant CNS-1050226 (Multilayer Network Resilience Analysis and Experimentation on GENI),
29  * US Department of Defense (DoD), and ITTC at The University of Kansas.
30  */
31 
32 #ifndef DSR_OPTION_HEADER_H
33 #define DSR_OPTION_HEADER_H
34 
35 #include <ostream>
36 #include <algorithm>
37 
38 #include "ns3/header.h"
39 #include "ns3/ipv4-address.h"
40 #include "ns3/simulator.h"
41 
42 namespace ns3 {
43 
44 class Time;
45 namespace dsr {
50 class DsrOptionHeader : public Header
51 {
52 public:
57  struct Alignment
58  {
59  uint8_t factor;
60  uint8_t offset;
61  };
66  static TypeId GetTypeId ();
71  virtual TypeId GetInstanceTypeId () const;
75  DsrOptionHeader ();
79  virtual ~DsrOptionHeader ();
84  void SetType (uint8_t type);
89  uint8_t GetType () const;
94  void SetLength (uint8_t length);
99  uint8_t GetLength () const;
104  virtual void Print (std::ostream &os) const;
109  virtual uint32_t GetSerializedSize () const;
114  virtual void Serialize (Buffer::Iterator start) const;
120  virtual uint32_t Deserialize (Buffer::Iterator start);
128  virtual Alignment GetAlignment () const;
129 
130 private:
134  uint8_t m_type;
138  uint8_t m_length;
143 };
144 
150 {
151 public:
156  static TypeId GetTypeId ();
161  virtual TypeId GetInstanceTypeId () const;
169  virtual ~DsrOptionPad1Header ();
174  virtual void Print (std::ostream &os) const;
179  virtual uint32_t GetSerializedSize () const;
184  virtual void Serialize (Buffer::Iterator start) const;
190  virtual uint32_t Deserialize (Buffer::Iterator start);
191 };
192 
198 {
199 public:
204  static TypeId GetTypeId ();
209  virtual TypeId GetInstanceTypeId () const;
214  DsrOptionPadnHeader (uint32_t pad = 2);
218  virtual ~DsrOptionPadnHeader ();
223  virtual void Print (std::ostream &os) const;
228  virtual uint32_t GetSerializedSize () const;
233  virtual void Serialize (Buffer::Iterator start) const;
239  virtual uint32_t Deserialize (Buffer::Iterator start);
240 };
241 
270 {
271 public:
276  static TypeId GetTypeId ();
281  virtual TypeId GetInstanceTypeId () const;
289  virtual ~DsrOptionRreqHeader ();
294  void SetNumberAddress (uint8_t n);
304  void SetTarget (Ipv4Address target);
309  void SetNodesAddress (std::vector<Ipv4Address> ipv4Address);
314  std::vector<Ipv4Address> GetNodesAddresses () const;
319  uint32_t GetNodesNumber () const;
324  void AddNodeAddress (Ipv4Address ipv4);
330  void SetNodeAddress (uint8_t index, Ipv4Address addr);
336  Ipv4Address GetNodeAddress (uint8_t index) const;
341  void SetId (uint16_t identification);
346  uint16_t GetId () const;
351  virtual void Print (std::ostream &os) const;
356  virtual uint32_t GetSerializedSize () const;
361  virtual void Serialize (Buffer::Iterator start) const;
367  virtual uint32_t Deserialize (Buffer::Iterator start);
372  virtual Alignment GetAlignment () const;
373 
374 private:
390  typedef std::vector<Ipv4Address> VectorIpv4Address_t;
395 };
396 
422 // The Route Reply header modified for ns-3 implementation
445 {
446 public:
451  static TypeId GetTypeId ();
456  virtual TypeId GetInstanceTypeId () const;
464  virtual ~DsrOptionRrepHeader ();
469  void SetNumberAddress (uint8_t n);
474  void SetNodesAddress (std::vector<Ipv4Address> ipv4Address);
479  std::vector<Ipv4Address> GetNodesAddress () const;
485  Ipv4Address GetTargetAddress (std::vector<Ipv4Address> ipv4Address) const;
491  void SetNodeAddress (uint8_t index, Ipv4Address addr);
497  Ipv4Address GetNodeAddress (uint8_t index) const;
502  virtual void Print (std::ostream &os) const;
507  virtual uint32_t GetSerializedSize () const;
512  virtual void Serialize (Buffer::Iterator start) const;
518  virtual uint32_t Deserialize (Buffer::Iterator start);
523  virtual Alignment GetAlignment () const;
524 
525 private:
533  typedef std::vector<Ipv4Address> VectorIpv4Address_t;
538 };
539 
566 {
567 public:
572  static TypeId GetTypeId ();
577  virtual TypeId GetInstanceTypeId () const;
585  virtual ~DsrOptionSRHeader ();
590  void SetSegmentsLeft (uint8_t segmentsLeft);
595  uint8_t GetSegmentsLeft () const;
600  void SetNumberAddress (uint8_t n);
605  void SetNodesAddress (std::vector<Ipv4Address> ipv4Address);
610  std::vector<Ipv4Address> GetNodesAddress () const;
615  uint8_t GetNodeListSize () const;
621  void SetNodeAddress (uint8_t index, Ipv4Address addr);
627  Ipv4Address GetNodeAddress (uint8_t index) const;
632  void SetSalvage (uint8_t salvage);
637  uint8_t GetSalvage () const;
642  virtual void Print (std::ostream &os) const;
647  virtual uint32_t GetSerializedSize () const;
652  virtual void Serialize (Buffer::Iterator start) const;
658  virtual uint32_t Deserialize (Buffer::Iterator start);
663  virtual Alignment GetAlignment () const;
664 
670  typedef void (*TracedCallback)(const DsrOptionSRHeader & header);
671 
672 private:
680  uint8_t m_segmentsLeft;
684  uint8_t m_salvage;
688  typedef std::vector<Ipv4Address> VectorIpv4Address_t;
693 };
694 
720 enum ErrorType
722 {
723  NODE_UNREACHABLE = 1, // !< NODE_UNREACHABLE
724  FLOW_STATE_NOT_SUPPORTED = 2, // !< FLOW_STATE_NOT_SUPPORTED
725  OPTION_NOT_SUPPORTED = 3, // !< OPTION_NOT_SUPPORTED
726 };
727 
729 {
730 public:
735  static TypeId GetTypeId ();
740  virtual TypeId GetInstanceTypeId () const;
748  virtual ~DsrOptionRerrHeader ();
753  void SetErrorType (uint8_t errorType);
758  uint8_t GetErrorType () const;
763  virtual void SetErrorSrc (Ipv4Address errorSrcAddress);
768  virtual Ipv4Address GetErrorSrc () const;
773  virtual void SetSalvage (uint8_t salvage);
778  virtual uint8_t GetSalvage () const;
783  virtual void SetErrorDst (Ipv4Address errorDstAddress);
788  virtual Ipv4Address GetErrorDst () const;
793  virtual void Print (std::ostream &os) const;
798  virtual uint32_t GetSerializedSize () const;
803  virtual void Serialize (Buffer::Iterator start) const;
809  virtual uint32_t Deserialize (Buffer::Iterator start);
814  virtual Alignment GetAlignment () const;
815 
816 private:
820  uint8_t m_errorType;
824  uint8_t m_salvage;
828  uint16_t m_errorLength;
841 };
842 
862 /*
863  * \brief The type-specific info field
864  * \verbatim
865  | 0 | 1 | 2 | 3 |
866  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
867  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
868  | Unreachable Node Address |
869  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
870  \endverbatim
871  */
872 
874 {
875 public:
880  static TypeId GetTypeId ();
885  virtual TypeId GetInstanceTypeId () const;
893  virtual ~DsrOptionRerrUnreachHeader ();
898  virtual void SetErrorSrc (Ipv4Address errorSrcAddress);
903  virtual Ipv4Address GetErrorSrc () const;
908  virtual void SetSalvage (uint8_t salvage);
913  virtual uint8_t GetSalvage () const;
918  virtual void SetErrorDst (Ipv4Address errorDstAddress);
923  virtual Ipv4Address GetErrorDst () const;
928  void SetUnreachNode (Ipv4Address unreachNode);
933  Ipv4Address GetUnreachNode () const;
938  void SetOriginalDst (Ipv4Address originalDst);
943  Ipv4Address GetOriginalDst () const;
948  virtual void Print (std::ostream &os) const;
953  virtual uint32_t GetSerializedSize () const;
958  virtual void Serialize (Buffer::Iterator start) const;
964  virtual uint32_t Deserialize (Buffer::Iterator start);
969  virtual Alignment GetAlignment () const;
970 
971 private:
975  uint8_t m_errorType;
979  uint8_t m_salvage;
996 };
997 
1017 /*
1018  * \brief The type-specific info field
1019  * \unsupported option
1020  * \verbatim
1021  | 0 |
1022  0 1 2 3 4 5 6 7
1023  +-+-+-+-+-+-+-+-+
1024  |Unsupported Opt|
1025  +-+-+-+-+-+-+-+-+
1026  \endverbatim
1027  */
1028 
1030 {
1031 public:
1036  static TypeId GetTypeId ();
1041  virtual TypeId GetInstanceTypeId () const;
1049  virtual ~DsrOptionRerrUnsupportHeader ();
1054  virtual void SetErrorSrc (Ipv4Address errorSrcAddress);
1059  virtual Ipv4Address GetErrorSrc () const;
1064  virtual void SetSalvage (uint8_t salvage);
1069  virtual uint8_t GetSalvage () const;
1074  virtual void SetErrorDst (Ipv4Address errorDstAddress);
1079  virtual Ipv4Address GetErrorDst () const;
1084  void SetUnsupported (uint16_t optionType);
1089  uint16_t GetUnsupported () const;
1094  virtual void Print (std::ostream &os) const;
1099  virtual uint32_t GetSerializedSize () const;
1104  virtual void Serialize (Buffer::Iterator start) const;
1110  virtual uint32_t Deserialize (Buffer::Iterator start);
1115  virtual Alignment GetAlignment () const;
1116 
1117 private:
1121  uint8_t m_errorType;
1125  uint8_t m_salvage;
1137  uint16_t m_unsupport;
1138 };
1139 
1158 {
1159 public:
1164  static TypeId GetTypeId ();
1169  virtual TypeId GetInstanceTypeId () const;
1177  virtual ~DsrOptionAckReqHeader ();
1182  void SetAckId (uint16_t identification);
1187  uint16_t GetAckId () const;
1192  virtual void Print (std::ostream &os) const;
1197  virtual uint32_t GetSerializedSize () const;
1202  virtual void Serialize (Buffer::Iterator start) const;
1208  virtual uint32_t Deserialize (Buffer::Iterator start);
1213  virtual Alignment GetAlignment () const;
1214 
1215 private:
1220 };
1221 
1244 {
1245 public:
1250  static TypeId GetTypeId ();
1255  virtual TypeId GetInstanceTypeId () const;
1259  DsrOptionAckHeader ();
1263  virtual ~DsrOptionAckHeader ();
1268  void SetAckId (uint16_t identification);
1273  uint16_t GetAckId () const;
1278  void SetRealSrc (Ipv4Address realSrcAddress);
1283  Ipv4Address GetRealSrc () const;
1288  void SetRealDst (Ipv4Address realDstAddress);
1293  Ipv4Address GetRealDst () const;
1298  virtual void Print (std::ostream &os) const;
1303  virtual uint32_t GetSerializedSize () const;
1308  virtual void Serialize (Buffer::Iterator start) const;
1314  virtual uint32_t Deserialize (Buffer::Iterator start);
1319  virtual Alignment GetAlignment () const;
1320 
1321 private:
1334 };
1335 
1336 static inline std::ostream & operator<< (std::ostream& os, const DsrOptionSRHeader & sr)
1337 {
1338  sr.Print (os);
1339  return os;
1340 }
1341 
1342 } // namespace dsr
1343 } // namespace ns3
1344 
1345 #endif /* DSR_OPTION_HEADER_H */
std::vector< Ipv4Address > GetNodesAddresses() const
Get the vector of ipv4 address.
Protocol header serialization and deserialization.
Definition: header.h:42
virtual Ipv4Address GetErrorSrc() const
Get the route error source address.
Ipv4Address GetNodeAddress(uint8_t index) const
Get a Node IPv4 Address.
uint16_t GetAckId() const
Set the Ack id number.
uint8_t m_errorType
The error type or route error option.
void AddNodeAddress(Ipv4Address ipv4)
Add one node address.
virtual void SetErrorSrc(Ipv4Address errorSrcAddress)
Set the route error source address.
virtual Ipv4Address GetErrorDst() const
Get the error destination ip address.
Ipv4Address GetTargetAddress(std::vector< Ipv4Address > ipv4Address) const
Get the target node Ip address.
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
uint16_t m_unsupport
The unsupported option.
virtual Ipv4Address GetErrorDst() const
Get the error destination ip address.
virtual void Print(std::ostream &os) const
Print some information about the packet.
void SetAckId(uint16_t identification)
Set the Ack request id number.
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
uint16_t GetId() const
Set the request id number.
DsrOptionPadnHeader(uint32_t pad=2)
Constructor.
virtual void Print(std::ostream &os) const
Print some information about the packet.
Ipv4Address GetNodeAddress(uint8_t index) const
Get a Node IPv4 Address.
Ipv4Address GetTarget()
Get the target ipv4 address.
virtual void Print(std::ostream &os) const
Print some information about the packet.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
static TypeId GetTypeId()
Get the type identificator.
std::vector< Ipv4Address > VectorIpv4Address_t
A vector of IPv4 Address.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
automatically resized byte buffer
Definition: buffer.h:92
def start()
Definition: core.py:1855
Forward calls to a chain of Callback.
Header of Dsr Option Pad1.
Ipv4Address m_unreachNode
The unreachable node address.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
Ipv4Address m_target
Ipv4 address of target node.
virtual void SetErrorDst(Ipv4Address errorDstAddress)
Set the error destination ip address.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
Ipv4Address m_errorDstAddress
The error destination address.
virtual void SetErrorSrc(Ipv4Address errorSrcAddress)
Set the route error source address.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
void SetSegmentsLeft(uint8_t segmentsLeft)
Set the number of segments left to send.
uint8_t GetErrorType() const
Get the route error type.
virtual ~DsrOptionAckReqHeader()
Destructor.
Ipv4Address m_address
The Ip address to write to when deserialize the packet.
void(* Time)(Time oldValue, Time newValue)
TracedValue callback signature for Time.
Definition: nstime.h:813
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
Ipv4Address GetRealSrc() const
Get Error source ip address.
void SetUnsupported(uint16_t optionType)
Set the unsupported option type value.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
Source Route (SR) Message Format.
uint16_t GetUnsupported() const
Get the unsupported option type value.
virtual ~DsrOptionPadnHeader()
Destructor.
virtual void Print(std::ostream &os) const
Print some information about the packet.
virtual Ipv4Address GetErrorSrc() const
Get the route error source address.
Acknowledgement Request (ACK_RREQ) Message Format.
represents the alignment requirements of an option header
void SetNodeAddress(uint8_t index, Ipv4Address addr)
Set a Node IPv4 Address.
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
Ipv4Address m_address
Ipv4 address to write when desearizing the packet.
iterator in a Buffer instance
Definition: buffer.h:98
uint32_t GetNodesNumber() const
Get the number of nodes.
static TypeId GetTypeId()
Get the type identificator.
uint8_t GetLength() const
Get the option length.
virtual void Print(std::ostream &os) const
Print some information about the packet.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
ErrorType
Route Error (RERR) Message Format.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
virtual void SetSalvage(uint8_t salvage)
Set the salvage value of the packet.
uint16_t m_identification
identification field
Ipv4Address m_errorDstAddress
The error destination address.
Route Reply (RREP) Message Format.
uint16_t m_identification
Identifier of the packet.
Ipv4Address m_errorSrcAddress
The error source address.
Ipv4Address GetOriginalDst() const
Get the unreachable node ip address.
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
static TypeId GetTypeId()
Get the type identificator.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
static TypeId GetTypeId()
Get the type identificator.
VectorIpv4Address_t m_ipv4Address
The vector of Nodes&#39; IPv4 Address.
virtual void SetErrorSrc(Ipv4Address errorSrcAddress)
Set the route error source address.
virtual void SetErrorDst(Ipv4Address errorDstAddress)
Set the error destination ip address.
virtual void SetErrorDst(Ipv4Address errorDstAddress)
Set the error destination ip address.
uint8_t m_salvage
The salavage field.
Buffer m_data
The anonymous data of this option.
virtual ~DsrOptionRerrUnsupportHeader()
Destructor.
uint16_t GetAckId() const
Set the Ack request id number.
std::vector< Ipv4Address > VectorIpv4Address_t
A vector of IPv4 Address.
virtual ~DsrOptionSRHeader()
Destructor.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
uint8_t m_salvage
The salavage field.
virtual uint8_t GetSalvage() const
Get the salvage value of the packet.
Ipv4Address GetUnreachNode() const
Get the unreachable node ip address.
static TypeId GetTypeId()
Get the type identificator.
void SetErrorType(uint8_t errorType)
Set the route error type.
void SetNodesAddress(std::vector< Ipv4Address > ipv4Address)
Set the vector of ipv4 address.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
virtual void Print(std::ostream &os) const
Print some information about the packet.
virtual void Print(std::ostream &os) const
Print some information about the packet.
std::vector< Ipv4Address > GetNodesAddress() const
Get the vector of ipv4 address.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
virtual ~DsrOptionHeader()
Destructor.
Acknowledgement (ACK) Message Format.
void SetTarget(Ipv4Address target)
Set the target ipv4 address.
void SetRealDst(Ipv4Address realDstAddress)
Set Error source ip address.
static TypeId GetTypeId()
Get the type identificator.
void SetNodeAddress(uint8_t index, Ipv4Address addr)
Set a Node IPv4 Address.
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
Route Error (RERR) Unsupported option Message Format.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Ipv4Address m_realSrcAddress
ack source address
uint8_t GetType() const
Get the type of the option.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
uint8_t m_type
The type of the option.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
virtual uint8_t GetSalvage() const
Get the salvage value of the packet.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual void SetSalvage(uint8_t salvage)
Set the salvage value of the packet.
Ipv4Address m_address
The ip address header deserilize to.
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
VectorIpv4Address_t m_ipv4Address
The vector of Nodes&#39; IPv4 Address.
Route Request (RREQ) Message Format.
Ipv4Address GetNodeAddress(uint8_t index) const
Get a Node IPv4 Address.
void SetId(uint16_t identification)
Set the request id number.
uint8_t m_length
The option length.
void SetNodesAddress(std::vector< Ipv4Address > ipv4Address)
Set the vector of ipv4 address.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
virtual void Print(std::ostream &os) const
Print some information about the packet.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
uint16_t m_identification
The identification field.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
static TypeId GetTypeId()
Get the type identificator.
void SetUnreachNode(Ipv4Address unreachNode)
Set the unreachable node ip address.
virtual Ipv4Address GetErrorDst() const
Get the error destination ip address.
uint8_t m_salvage
The salavage field.
virtual ~DsrOptionAckHeader()
Destructor.
Ipv4Address m_originalDst
The original destination address.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
virtual ~DsrOptionRerrUnreachHeader()
Destructor.
void SetNodesAddress(std::vector< Ipv4Address > ipv4Address)
Set the vector of ipv4 address.
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:41
static TypeId GetTypeId()
Get the type identificator.
static TypeId GetTypeId()
Get the type identificator.
uint8_t m_errorType
The error type or route error option.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
virtual uint8_t GetSalvage() const
Get the salvage value of the packet.
virtual void Print(std::ostream &os) const
Print some information about the packet.
Header for Dsr Options.
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
Route Error (RERR) Unreachable node address option Message Format.
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
void SetNumberAddress(uint8_t n)
Set the number of ipv4 address.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
void SetRealSrc(Ipv4Address realSrcAddress)
Set Error source ip address.
void SetType(uint8_t type)
Set the type of the option.
Header of Dsr Option Padn.
virtual ~DsrOptionRerrHeader()
Destructor.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
uint8_t m_errorType
The error type or route error option.
void SetNumberAddress(uint8_t n)
Set the number of ipv4 address.
Ipv4Address GetRealDst() const
Get Error source ip address.
Ipv4Address m_realDstAddress
ack destination address
void SetNumberAddress(uint8_t n)
Set the number of ipv4 address.
virtual void Print(std::ostream &os) const
Print some information about the packet.
VectorIpv4Address_t m_ipv4Address
The vector of Nodes&#39; IPv4 Address.
virtual ~DsrOptionRreqHeader()
Destructor.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
Ipv4Address m_errorDstAddress
The error destination address.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual ~DsrOptionRrepHeader()
Destructor.
static std::ostream & operator<<(std::ostream &os, const DsrRoutingHeader &dsr)
uint8_t GetSegmentsLeft() const
Get the number of segments left to send.
uint8_t GetNodeListSize() const
Get the node list size which is the number of ip address of the route.
uint8_t m_segmentsLeft
Number of left segments.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
virtual ~DsrOptionPad1Header()
Destructor.
void SetAckId(uint16_t identification)
Set the Ack id number.
virtual void Print(std::ostream &os) const
Print some information about the packet.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
void SetLength(uint8_t length)
Set the option length.
Ipv4Address m_errorSrcAddress
The error source address.
Buffer m_errorData
The anonymous data of this option.
void SetNodeAddress(uint8_t index, Ipv4Address addr)
Set a Node IPv4 Address.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
a unique identifier for an interface.
Definition: type-id.h:58
uint16_t m_errorLength
The specific error message length.
void SetSalvage(uint8_t salvage)
Set the salvage value for a packet.
uint8_t GetSalvage() const
Get the salvage value for a packet.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
Ipv4Address m_errorSrcAddress
The error source address.
Header of Dsr Option Route Error.
std::vector< Ipv4Address > GetNodesAddress() const
Get the vector of ipv4 address.
void SetOriginalDst(Ipv4Address originalDst)
Set the unreachable node ip address.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
std::vector< Ipv4Address > VectorIpv4Address_t
type def A vector of IPv4 Address.
static TypeId GetTypeId()
Get the type identificator.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual void SetSalvage(uint8_t salvage)
Set the salvage value of the packet.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
static TypeId GetTypeId()
Get the type identificator.
virtual Ipv4Address GetErrorSrc() const
Get the route error source address.
uint8_t m_salvage
Number of savlage times for a packet.