A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
dsr-option-header.h
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;
105  virtual void Print (std::ostream &os) const;
110  virtual uint32_t GetSerializedSize () const;
115  virtual void Serialize (Buffer::Iterator start) const;
121  virtual uint32_t Deserialize (Buffer::Iterator start);
129  virtual Alignment GetAlignment () const;
130 
131 private:
135  uint8_t m_type;
139  uint8_t m_length;
144 };
145 
151 {
152 public:
157  static TypeId GetTypeId ();
162  virtual TypeId GetInstanceTypeId () const;
170  virtual ~DsrOptionPad1Header ();
176  virtual void Print (std::ostream &os) const;
181  virtual uint32_t GetSerializedSize () const;
186  virtual void Serialize (Buffer::Iterator start) const;
192  virtual uint32_t Deserialize (Buffer::Iterator start);
193 };
194 
200 {
201 public:
206  static TypeId GetTypeId ();
211  virtual TypeId GetInstanceTypeId () const;
216  DsrOptionPadnHeader (uint32_t pad = 2);
220  virtual ~DsrOptionPadnHeader ();
226  virtual void Print (std::ostream &os) const;
231  virtual uint32_t GetSerializedSize () const;
236  virtual void Serialize (Buffer::Iterator start) const;
242  virtual uint32_t Deserialize (Buffer::Iterator start);
243 };
244 
273 {
274 public:
279  static TypeId GetTypeId ();
284  virtual TypeId GetInstanceTypeId () const;
292  virtual ~DsrOptionRreqHeader ();
297  void SetNumberAddress (uint8_t n);
307  void SetTarget (Ipv4Address target);
312  void SetNodesAddress (std::vector<Ipv4Address> ipv4Address);
317  std::vector<Ipv4Address> GetNodesAddresses () const;
322  uint32_t GetNodesNumber () const;
327  void AddNodeAddress (Ipv4Address ipv4);
333  void SetNodeAddress (uint8_t index, Ipv4Address addr);
339  Ipv4Address GetNodeAddress (uint8_t index) const;
344  void SetDataLength (uint32_t dataLength);
349  uint32_t GetDataLength () const;
354  void SetId (uint16_t identification);
359  uint16_t GetId () const;
365  virtual void Print (std::ostream &os) const;
370  virtual uint32_t GetSerializedSize () const;
375  virtual void Serialize (Buffer::Iterator start) const;
381  virtual uint32_t Deserialize (Buffer::Iterator start);
386  virtual Alignment GetAlignment () const;
387 
388 private:
392  uint32_t m_dataLength;
397  /*
398  * Ipv4 address of target node
399  */
400  Ipv4Address m_target;
401  /*
402  * Ipv4 address to write when desearizing the packet
403  */
404  Ipv4Address m_address;
408  typedef std::vector<Ipv4Address> VectorIpv4Address_t;
413 };
414 
440 // The Route Reply header modified for ns-3 implementation
463 {
464 public:
469  static TypeId GetTypeId ();
474  virtual TypeId GetInstanceTypeId () const;
482  virtual ~DsrOptionRrepHeader ();
487  void SetNumberAddress (uint8_t n);
492  void SetNodesAddress (std::vector<Ipv4Address> ipv4Address);
497  std::vector<Ipv4Address> GetNodesAddress () const;
498  /*
499  * \brief Get the target node Ip address
500  * \return the target address
501  */
502  Ipv4Address GetTargetAddress (std::vector<Ipv4Address> ipv4Address) const;
508  void SetNodeAddress (uint8_t index, Ipv4Address addr);
514  Ipv4Address GetNodeAddress (uint8_t index) const;
515  /*
516  * \brief Search the next hop Ipv4 address
517  * \param Our own IP address
518  * \return The next hop address of the route
519  */
520  Ipv4Address SearchNextHop (Ipv4Address ipv4Address);
526  virtual void Print (std::ostream &os) const;
531  virtual uint32_t GetSerializedSize () const;
536  virtual void Serialize (Buffer::Iterator start) const;
542  virtual uint32_t Deserialize (Buffer::Iterator start);
547  virtual Alignment GetAlignment () const;
548 
549 private:
550  /*
551  * The Ip address to write to when deserialize the packet
552  */
553  Ipv4Address m_address;
557  typedef std::vector<Ipv4Address> VectorIpv4Address_t;
562 };
563 
590 {
591 public:
596  static TypeId GetTypeId ();
601  virtual TypeId GetInstanceTypeId () const;
609  virtual ~DsrOptionSRHeader ();
610  /*
611  * \brief Set the number of segments left to send
612  * \param The segments left
613  */
614  void SetSegmentsLeft (uint8_t segmentsLeft);
615  /*
616  * \brief Get the number of segments left to send
617  * \return The segments left
618  */
619  uint8_t GetSegmentsLeft () const;
624  void SetNumberAddress (uint8_t n);
629  void SetNodesAddress (std::vector<Ipv4Address> ipv4Address);
634  std::vector<Ipv4Address> GetNodesAddress () const;
635  /*
636  * \brief Get the node list size which is the number of ip address of the route
637  * \return the node list size
638  */
639  uint8_t GetNodeListSize () const;
645  void SetNodeAddress (uint8_t index, Ipv4Address addr);
651  Ipv4Address GetNodeAddress (uint8_t index) const;
652  /*
653  * \brief Set the salvage value for a packet
654  * \param The salvage value of the packet
655  */
656  void SetSalvage (uint8_t salvage);
657  /*
658  * \brief Get the salvage value for a packet
659  * \return The salvage value of the packet
660  */
661  uint8_t GetSalvage () const;
667  virtual void Print (std::ostream &os) const;
672  virtual uint32_t GetSerializedSize () const;
677  virtual void Serialize (Buffer::Iterator start) const;
683  virtual uint32_t Deserialize (Buffer::Iterator start);
688  virtual Alignment GetAlignment () const;
689 
690 private:
698  uint8_t m_segmentsLeft;
702  uint8_t m_salvage;
706  typedef std::vector<Ipv4Address> VectorIpv4Address_t;
711 };
712 
738 // / Error type
740 {
741  NODE_UNREACHABLE = 1, // !< NODE_UNREACHABLE
742  FLOW_STATE_NOT_SUPPORTED = 2, // !< FLOW_STATE_NOT_SUPPORTED
743  OPTION_NOT_SUPPORTED = 3, // !< OPTION_NOT_SUPPORTED
744 };
745 
747 {
748 public:
753  static TypeId GetTypeId ();
758  virtual TypeId GetInstanceTypeId () const;
766  virtual ~DsrOptionRerrHeader ();
771  void SetErrorType (uint8_t errorType);
776  uint8_t GetErrorType () const;
781  virtual void SetErrorSrc (Ipv4Address errorSrcAddress);
786  virtual Ipv4Address GetErrorSrc () const;
790  virtual void SetSalvage (uint8_t salvage);
795  virtual uint8_t GetSalvage () const;
800  virtual void SetErrorDst (Ipv4Address errorDstAddress);
805  virtual Ipv4Address GetErrorDst () const;
811  virtual void Print (std::ostream &os) const;
816  virtual uint32_t GetSerializedSize () const;
821  virtual void Serialize (Buffer::Iterator start) const;
827  virtual uint32_t Deserialize (Buffer::Iterator start);
832  virtual Alignment GetAlignment () const;
833 
834 private:
838  uint8_t m_optDataLen;
842  uint8_t m_errorType;
846  uint8_t m_reserved;
850  uint8_t m_salvage;
854  uint16_t m_errorLength;
867 };
868 
888 /*
889  * \brief The type-specific info field
890  * \verbatim
891  | 0 | 1 | 2 | 3 |
892  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
893  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
894  | Unreachable Node Address |
895  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
896  \endverbatim
897  */
898 
900 {
901 public:
906  static TypeId GetTypeId ();
911  virtual TypeId GetInstanceTypeId () const;
919  virtual ~DsrOptionRerrUnreachHeader ();
924  virtual void SetErrorSrc (Ipv4Address errorSrcAddress);
929  virtual Ipv4Address GetErrorSrc () const;
933  virtual void SetSalvage (uint8_t salvage);
938  virtual uint8_t GetSalvage () const;
943  virtual void SetErrorDst (Ipv4Address errorDstAddress);
948  virtual Ipv4Address GetErrorDst () const;
953  void SetUnreachNode (Ipv4Address unreachNode);
958  Ipv4Address GetUnreachNode () const;
963  void SetOriginalDst (Ipv4Address originalDst);
968  Ipv4Address GetOriginalDst () const;
974  virtual void Print (std::ostream &os) const;
979  virtual uint32_t GetSerializedSize () const;
984  virtual void Serialize (Buffer::Iterator start) const;
990  virtual uint32_t Deserialize (Buffer::Iterator start);
995  virtual Alignment GetAlignment () const;
996 
997 private:
1001  uint8_t m_optDataLen;
1005  uint8_t m_errorType;
1009  uint8_t m_reserved;
1013  uint8_t m_salvage;
1033  uint16_t m_typeSpecific;
1034 };
1035 
1055 /*
1056  * \brief The type-specific info field
1057  * \unsupported option
1058  * \verbatim
1059  | 0 |
1060  0 1 2 3 4 5 6 7
1061  +-+-+-+-+-+-+-+-+
1062  |Unsupported Opt|
1063  +-+-+-+-+-+-+-+-+
1064  \endverbatim
1065  */
1066 
1068 {
1069 public:
1074  static TypeId GetTypeId ();
1079  virtual TypeId GetInstanceTypeId () const;
1087  virtual ~DsrOptionRerrUnsupportHeader ();
1092  virtual void SetErrorSrc (Ipv4Address errorSrcAddress);
1097  virtual Ipv4Address GetErrorSrc () const;
1101  virtual void SetSalvage (uint8_t salvage);
1106  virtual uint8_t GetSalvage () const;
1111  virtual void SetErrorDst (Ipv4Address errorDstAddress);
1116  virtual Ipv4Address GetErrorDst () const;
1121  void SetUnsupported (uint16_t optionType);
1126  uint16_t GetUnsupported () const;
1132  virtual void Print (std::ostream &os) const;
1137  virtual uint32_t GetSerializedSize () const;
1142  virtual void Serialize (Buffer::Iterator start) const;
1148  virtual uint32_t Deserialize (Buffer::Iterator start);
1153  virtual Alignment GetAlignment () const;
1154 
1155 private:
1159  uint8_t m_optDataLen;
1163  uint8_t m_errorType;
1167  uint8_t m_reserved;
1171  uint8_t m_salvage;
1183  uint16_t m_unsupport;
1184 };
1185 
1204 {
1205 public:
1210  static TypeId GetTypeId ();
1215  virtual TypeId GetInstanceTypeId () const;
1223  virtual ~DsrOptionAckReqHeader ();
1228  void SetAckId (uint16_t identification);
1233  uint16_t GetAckId () const;
1239  virtual void Print (std::ostream &os) const;
1244  virtual uint32_t GetSerializedSize () const;
1249  virtual void Serialize (Buffer::Iterator start) const;
1255  virtual uint32_t Deserialize (Buffer::Iterator start);
1260  virtual Alignment GetAlignment () const;
1261 
1262 private:
1263  /*
1264  * The option data length
1265  */
1266  uint8_t m_optDataLen;
1267  /*
1268  * The identification field
1269  */
1270  uint16_t m_identification;
1271 };
1272 
1295 {
1296 public:
1301  static TypeId GetTypeId ();
1306  virtual TypeId GetInstanceTypeId () const;
1310  DsrOptionAckHeader ();
1314  virtual ~DsrOptionAckHeader ();
1319  void SetAckId (uint16_t identification);
1324  uint16_t GetAckId () const;
1329  void SetRealSrc (Ipv4Address realSrcAddress);
1334  Ipv4Address GetRealSrc () const;
1339  void SetRealDst (Ipv4Address realDstAddress);
1344  Ipv4Address GetRealDst () const;
1350  virtual void Print (std::ostream &os) const;
1355  virtual uint32_t GetSerializedSize () const;
1360  virtual void Serialize (Buffer::Iterator start) const;
1366  virtual uint32_t Deserialize (Buffer::Iterator start);
1371  virtual Alignment GetAlignment () const;
1372 
1373 private:
1377  uint8_t m_optDataLen;
1390 };
1391 
1392 static inline std::ostream & operator<< (std::ostream& os, const DsrOptionSRHeader & sr)
1393 {
1394  sr.Print (os);
1395  return os;
1396 }
1397 
1398 } // namespace dsr
1399 } // namespace ns3
1400 
1401 #endif /* DSR_OPTION_HEADER_H */
Protocol header serialization and deserialization.
Definition: header.h:42
virtual void Print(std::ostream &os) const
Print some informations about the packet.
uint8_t m_errorType
The error type or route error option.
void AddNodeAddress(Ipv4Address ipv4)
Add one node address.
uint16_t GetAckId() const
Set the Ack id number.
virtual void SetErrorSrc(Ipv4Address errorSrcAddress)
Set the route error source address.
virtual void Print(std::ostream &os) const
Print some informations about the packet.
virtual void Print(std::ostream &os) const
Print some informations about the packet.
virtual Ipv4Address GetErrorDst() const
Get the error destination ip address.
uint16_t m_unsupport
The unsupported option.
void SetAckId(uint16_t identification)
Set the Ack request id number.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
Ipv4Address GetNodeAddress(uint8_t index) const
Get a Node IPv4 Address.
DsrOptionPadnHeader(uint32_t pad=2)
Constructor.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
uint32_t m_dataLength
The data length.
Ipv4Address GetTarget()
Get the target ipv4 address.
Ipv4Address GetNodeAddress(uint8_t index) const
Get a Node IPv4 Address.
virtual Ipv4Address GetErrorSrc() const
Get the route error source address.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
static TypeId GetTypeId()
Get the type identificator.
uint16_t GetId() const
Set the request id number.
std::vector< Ipv4Address > VectorIpv4Address_t
A vector of IPv4 Address.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
automatically resized byte buffer
Definition: buffer.h:92
Header of Dsr Option Pad1.
std::vector< Ipv4Address > GetNodesAddresses() const
Get the vector of ipv4 address.
Ipv4Address m_unreachNode
The unreachable node address.
virtual void SetErrorDst(Ipv4Address errorDstAddress)
Set the error destination ip address.
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.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
virtual ~DsrOptionAckReqHeader()
Destructor.
virtual void Print(std::ostream &os) const
Print some informations about the packet.
uint16_t m_typeSpecific
The specific error type.
std::vector< Ipv4Address > GetNodesAddress() const
Get the vector of ipv4 address.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
void SetUnsupported(uint16_t optionType)
Set the unsupported option type value.
Source Route (SR) Message Format.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual void Print(std::ostream &os) const
Print some informations about the packet.
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
virtual ~DsrOptionPadnHeader()
Destructor.
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
uint8_t GetLength() const
Get the option length.
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 void Print(std::ostream &os) const
Print some informations about the packet.
Ipv4Address GetUnreachNode() const
Get the unreachable node ip address.
iterator in a Buffer instance
Definition: buffer.h:98
uint8_t m_reserved
The reserved field.
virtual void Print(std::ostream &os) const
Print some informations about the packet.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
static TypeId GetTypeId()
Get the type identificator.
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
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
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
std::vector< Ipv4Address > GetNodesAddress() const
Get the vector of ipv4 address.
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.
uint8_t m_optDataLen
option data length
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' IPv4 Address.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
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.
uint16_t GetAckId() const
Set the Ack request id number.
uint8_t m_salvage
The salavage field.
Buffer m_data
The anonymous data of this option.
virtual ~DsrOptionRerrUnsupportHeader()
Destructor.
std::vector< Ipv4Address > VectorIpv4Address_t
A vector of IPv4 Address.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
virtual ~DsrOptionSRHeader()
Destructor.
uint32_t GetNodesNumber() const
Get the number of nodes.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
uint8_t m_salvage
The salavage field.
virtual void Print(std::ostream &os) const
Print some informations about the packet.
void SetDataLength(uint32_t dataLength)
Set the data length.
Ipv4Address GetOriginalDst() const
Get the unreachable node ip address.
uint16_t GetUnsupported() const
Get the unsupported option type value.
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.
Ipv4Address GetNodeAddress(uint8_t index) const
Get a Node IPv4 Address.
uint8_t GetErrorType() const
Get the route error type.
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
uint8_t m_optDataLen
option data length
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
virtual void Print(std::ostream &os) const
Print some informations about the packet.
Ipv4Address GetRealSrc() const
Get Error source ip address.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
virtual ~DsrOptionHeader()
Destructor.
Acknowledgement (ACK) Message Format.
void SetTarget(Ipv4Address target)
Set the target ipv4 address.
uint32_t GetDataLength() const
Get the data length.
void SetRealDst(Ipv4Address realDstAddress)
Set Error source ip address.
std::ostream & operator<<(std::ostream &os, const Angles &a)
Definition: angles.cc:43
static TypeId GetTypeId()
Get the type identificator.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
void SetNodeAddress(uint8_t index, Ipv4Address addr)
Set a Node IPv4 Address.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
uint8_t m_reserved
The reserved field.
Route Error (RERR) Unsupported option Message Format.
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
Ipv4Address m_realSrcAddress
ack source address
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
virtual Ipv4Address GetErrorSrc() const
Get the route error source address.
uint8_t m_type
The type of the option.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
virtual void SetSalvage(uint8_t salvage)
Set the salvage value of the packet.
Ipv4Address m_address
The ip address header deserilize to.
VectorIpv4Address_t m_ipv4Address
The vector of Nodes' IPv4 Address.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
Route Request (RREQ) Message Format.
void SetId(uint16_t identification)
Set the request id number.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
uint8_t m_length
The option length.
void SetNodesAddress(std::vector< Ipv4Address > ipv4Address)
Set the vector of ipv4 address.
virtual Ipv4Address GetErrorDst() const
Get the error destination ip address.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
virtual uint8_t GetSalvage() const
Get the salvage value of the packet.
Ipv4Address GetRealDst() const
Get Error source ip address.
static TypeId GetTypeId()
Get the type identificator.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
void SetUnreachNode(Ipv4Address unreachNode)
Set the unreachable node ip address.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
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 Ipv4Address GetErrorDst() const
Get the error destination ip address.
uint8_t m_optDataLen
option data length
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:38
static TypeId GetTypeId()
Get the type identificator.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
static TypeId GetTypeId()
Get the type identificator.
virtual uint8_t GetSalvage() const
Get the salvage value of the packet.
uint8_t m_optDataLen
option data length
uint8_t m_errorType
The error type or route error option.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
Header for Dsr Options.
uint8_t m_reserved
The reserved field.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
Route Error (RERR) Unreachable node address option Message Format.
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.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
Header of Dsr Option Padn.
virtual ~DsrOptionRerrHeader()
Destructor.
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.
virtual void Print(std::ostream &os) const
Print some informations about the packet.
Ipv4Address m_realDstAddress
ack destination address
void SetNumberAddress(uint8_t n)
Set the number of ipv4 address.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
VectorIpv4Address_t m_ipv4Address
The vector of Nodes' IPv4 Address.
virtual ~DsrOptionRreqHeader()
Destructor.
virtual uint32_t GetSerializedSize() const
Get the serialized size of the packet.
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
Ipv4Address m_errorDstAddress
The error destination address.
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
virtual ~DsrOptionRrepHeader()
Destructor.
virtual Ipv4Address GetErrorSrc() const
Get the route error source address.
uint8_t m_segmentsLeft
Number of left segments.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
virtual ~DsrOptionPad1Header()
Destructor.
virtual void Print(std::ostream &os) const
Print some informations about the packet.
void SetAckId(uint16_t identification)
Set the Ack id number.
void SetLength(uint8_t length)
Set the option length.
Ipv4Address m_errorSrcAddress
The error source address.
virtual uint8_t GetSalvage() const
Get the salvage value of the packet.
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.
uint8_t GetType() const
Get the type of the option.
a unique identifier for an interface.
Definition: type-id.h:44
uint16_t m_errorLength
The specific error message length.
Ipv4Address m_errorSrcAddress
The error source address.
Header of Dsr Option Route Error.
void SetOriginalDst(Ipv4Address originalDst)
Set the unreachable node ip address.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
std::vector< Ipv4Address > VectorIpv4Address_t
type def A vector of IPv4 Address.
static TypeId GetTypeId()
Get the type identificator.
virtual void SetSalvage(uint8_t salvage)
Set the salvage value of the packet.
static TypeId GetTypeId()
Get the type identificator.
uint8_t m_salvage
Number of savlage times for a packet.