A Discrete-Event Network Simulator
API
icmpv6-header.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2007-2009 Strasbourg University
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: Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
19  * Mehdi Benamor <benamor.mehdi@ensi.rnu.tn>
20  * David Gross <gdavid.devel@gmail.com>
21  */
22 
23 #ifndef ICMPV6_HEADER_H
24 #define ICMPV6_HEADER_H
25 
26 #include "ns3/header.h"
27 #include "ns3/ipv6-address.h"
28 #include "ns3/packet.h"
29 
30 namespace ns3
31 {
32 
38 class Icmpv6Header : public Header
39 {
40 public:
44  enum Type_e
45  {
72  };
73 
78  {
84  };
85 
90  {
96  };
97 
102  {
105  };
106 
111  {
115  };
116 
121  static TypeId GetTypeId ();
122 
127  virtual TypeId GetInstanceTypeId () const;
128 
132  Icmpv6Header ();
133 
137  virtual ~Icmpv6Header ();
138 
143  uint8_t GetType () const;
144 
149  void SetType (uint8_t type);
150 
155  uint8_t GetCode () const;
156 
161  void SetCode (uint8_t code);
162 
167  uint16_t GetChecksum () const;
168 
173  void SetChecksum (uint16_t checksum);
174 
179  virtual void Print (std::ostream& os) const;
180 
185  virtual uint32_t GetSerializedSize () const;
186 
191  virtual void Serialize (Buffer::Iterator start) const;
192 
198  virtual uint32_t Deserialize (Buffer::Iterator start);
199 
208  void CalculatePseudoHeaderChecksum (Ipv6Address src, Ipv6Address dst, uint16_t length, uint8_t protocol);
209 
210 protected:
215 
219  uint16_t m_checksum;
220 
221 private:
225  uint8_t m_type;
226 
230  uint8_t m_code;
231 };
232 
239 {
240 public:
245  static TypeId GetTypeId ();
246 
251  virtual TypeId GetInstanceTypeId () const;
252 
257 
261  virtual ~Icmpv6OptionHeader ();
262 
267  uint8_t GetType () const;
268 
273  void SetType (uint8_t type);
274 
279  uint8_t GetLength () const;
280 
285  void SetLength (uint8_t len);
286 
291  virtual void Print (std::ostream& os) const;
292 
297  virtual uint32_t GetSerializedSize () const;
298 
303  virtual void Serialize (Buffer::Iterator start) const;
304 
310  virtual uint32_t Deserialize (Buffer::Iterator start);
311 
312 private:
316  uint8_t m_type;
317 
321  uint8_t m_len;
322 };
323 
329 class Icmpv6NS : public Icmpv6Header
330 {
331 public:
336  Icmpv6NS (Ipv6Address target);
337 
341  Icmpv6NS ();
342 
346  virtual ~Icmpv6NS ();
347 
352  static TypeId GetTypeId ();
353 
358  virtual TypeId GetInstanceTypeId () const;
359 
364  uint32_t GetReserved () const;
365 
370  void SetReserved (uint32_t reserved);
371 
376  Ipv6Address GetIpv6Target () const;
377 
382  void SetIpv6Target (Ipv6Address target);
383 
388  virtual void Print (std::ostream& os) const;
389 
394  virtual uint32_t GetSerializedSize () const;
395 
400  virtual void Serialize (Buffer::Iterator start) const;
401 
407  virtual uint32_t Deserialize (Buffer::Iterator start);
408 
409 private:
410 
414  uint32_t m_reserved;
415 
420 };
421 
427 class Icmpv6NA : public Icmpv6Header
428 {
429 public:
433  Icmpv6NA ();
434 
438  virtual ~Icmpv6NA ();
439 
444  static TypeId GetTypeId ();
445 
450  virtual TypeId GetInstanceTypeId () const;
451 
456  uint32_t GetReserved () const;
457 
462  void SetReserved (uint32_t reserved);
463 
468  Ipv6Address GetIpv6Target () const;
469 
474  void SetIpv6Target (Ipv6Address target);
475 
480  bool GetFlagR () const;
481 
486  void SetFlagR (bool r);
487 
492  bool GetFlagS () const;
493 
498  void SetFlagS (bool s);
499 
504  bool GetFlagO () const;
505 
510  void SetFlagO (bool o);
511 
516  virtual void Print (std::ostream& os) const;
517 
522  virtual uint32_t GetSerializedSize () const;
523 
528  virtual void Serialize (Buffer::Iterator start) const;
529 
535  virtual uint32_t Deserialize (Buffer::Iterator start);
536 
537 private:
541  bool m_flagR;
542 
546  bool m_flagS;
547 
551  bool m_flagO;
552 
556  uint32_t m_reserved;
557 
562 };
563 
569 class Icmpv6RA : public Icmpv6Header
570 {
571 public:
575  Icmpv6RA ();
576 
580  virtual ~Icmpv6RA ();
581 
586  static TypeId GetTypeId ();
587 
592  virtual TypeId GetInstanceTypeId () const;
593 
598  void SetCurHopLimit (uint8_t m);
599 
604  uint8_t GetCurHopLimit () const;
605 
610  void SetLifeTime (uint16_t l);
611 
616  uint16_t GetLifeTime () const;
617 
622  void SetReachableTime (uint32_t r);
623 
628  uint32_t GetReachableTime () const;
629 
634  void SetRetransmissionTime (uint32_t r);
635 
640  uint32_t GetRetransmissionTime () const;
641 
646  bool GetFlagM () const;
647 
652  void SetFlagM (bool m);
653 
658  bool GetFlagO () const;
659 
664  void SetFlagO (bool o);
665 
670  bool GetFlagH () const;
671 
676  void SetFlagH (bool h);
677 
682  virtual void Print (std::ostream& os) const;
683 
689  uint8_t GetFlags () const;
690 
696  void SetFlags (uint8_t f);
697 
702  virtual uint32_t GetSerializedSize () const;
703 
708  virtual void Serialize (Buffer::Iterator start) const;
709 
715  virtual uint32_t Deserialize (Buffer::Iterator start);
716 
717 private:
721  bool m_flagM;
722 
726  bool m_flagO;
727 
731  bool m_flagH;
732 
736  uint16_t m_LifeTime;
737 
741  uint32_t m_ReachableTime;
742 
747 
751  uint8_t m_curHopLimit;
752 };
753 
759 class Icmpv6RS : public Icmpv6Header
760 {
761 public:
765  Icmpv6RS ();
766 
770  virtual ~Icmpv6RS ();
771 
776  static TypeId GetTypeId ();
777 
782  virtual TypeId GetInstanceTypeId () const;
783 
788  uint32_t GetReserved () const;
789 
794  void SetReserved (uint32_t reserved);
795 
800  virtual void Print (std::ostream& os) const;
801 
806  virtual uint32_t GetSerializedSize () const;
807 
812  virtual void Serialize (Buffer::Iterator start) const;
813 
819  virtual uint32_t Deserialize (Buffer::Iterator start);
820 
821 private:
825  uint32_t m_reserved;
826 };
827 
834 {
835 public:
840 
844  virtual ~Icmpv6Redirection ();
845 
850  static TypeId GetTypeId ();
851 
856  virtual TypeId GetInstanceTypeId () const;
857 
862  Ipv6Address GetTarget () const;
863 
868  void SetTarget (Ipv6Address target);
869 
874  Ipv6Address GetDestination () const;
875 
880  void SetDestination (Ipv6Address destination);
881 
886  virtual void Print (std::ostream& os) const;
887 
892  virtual uint32_t GetSerializedSize () const;
893 
898  virtual void Serialize (Buffer::Iterator start) const;
899 
905  virtual uint32_t Deserialize (Buffer::Iterator start);
906 
911  uint32_t GetReserved () const;
912 
917  void SetReserved (uint32_t reserved);
918 
919 private:
924 
929 
933  uint32_t m_reserved;
934 };
935 
941 class Icmpv6Echo : public Icmpv6Header
942 {
943 public:
948  static TypeId GetTypeId ();
949 
954  virtual TypeId GetInstanceTypeId () const;
955 
959  Icmpv6Echo ();
960 
965  Icmpv6Echo (bool request);
966 
970  virtual ~Icmpv6Echo ();
971 
976  uint16_t GetId () const;
977 
982  void SetId (uint16_t id);
983 
988  uint16_t GetSeq () const;
989 
994  void SetSeq (uint16_t seq);
995 
1000  virtual void Print (std::ostream& os) const;
1001 
1006  virtual uint32_t GetSerializedSize () const;
1007 
1012  virtual void Serialize (Buffer::Iterator start) const;
1013 
1019  virtual uint32_t Deserialize (Buffer::Iterator start);
1020 
1021 private:
1025  uint16_t m_id;
1026 
1030  uint16_t m_seq;
1031 };
1032 
1039 {
1040 public:
1045 
1049  virtual ~Icmpv6DestinationUnreachable ();
1050 
1055  static TypeId GetTypeId ();
1056 
1061  virtual TypeId GetInstanceTypeId () const;
1062 
1067  Ptr<Packet> GetPacket () const;
1068 
1073  void SetPacket (Ptr<Packet> p);
1074 
1079  virtual void Print (std::ostream& os) const;
1080 
1085  virtual uint32_t GetSerializedSize () const;
1086 
1091  virtual void Serialize (Buffer::Iterator start) const;
1092 
1098  virtual uint32_t Deserialize (Buffer::Iterator start);
1099 
1100 private:
1105 };
1106 
1113 {
1114 public:
1118  Icmpv6TooBig ();
1119 
1123  virtual ~Icmpv6TooBig ();
1124 
1129  static TypeId GetTypeId ();
1130 
1135  virtual TypeId GetInstanceTypeId () const;
1136 
1141  Ptr<Packet> GetPacket () const;
1142 
1147  void SetPacket (Ptr<Packet> p);
1148 
1153  uint32_t GetMtu () const;
1154 
1159  void SetMtu (uint32_t mtu);
1160 
1165  virtual void Print (std::ostream& os) const;
1166 
1171  virtual uint32_t GetSerializedSize () const;
1172 
1177  virtual void Serialize (Buffer::Iterator start) const;
1178 
1184  virtual uint32_t Deserialize (Buffer::Iterator start);
1185 
1186 private:
1187 
1192 
1196  uint32_t m_mtu;
1197 };
1198 
1205 {
1206 public:
1210  Icmpv6TimeExceeded ();
1211 
1215  virtual ~Icmpv6TimeExceeded ();
1216 
1221  static TypeId GetTypeId ();
1222 
1227  virtual TypeId GetInstanceTypeId () const;
1228 
1233  Ptr<Packet> GetPacket () const;
1234 
1239  void SetPacket (Ptr<Packet> p);
1240 
1245  virtual void Print (std::ostream& os) const;
1246 
1251  virtual uint32_t GetSerializedSize () const;
1252 
1257  virtual void Serialize (Buffer::Iterator start) const;
1258 
1264  virtual uint32_t Deserialize (Buffer::Iterator start);
1265 
1266 private:
1267 
1272 };
1273 
1280 {
1281 public:
1286 
1290  virtual ~Icmpv6ParameterError ();
1291 
1296  static TypeId GetTypeId ();
1297 
1302  virtual TypeId GetInstanceTypeId () const;
1303 
1308  Ptr<Packet> GetPacket () const;
1309 
1314  void SetPacket (Ptr<Packet> p);
1315 
1320  uint32_t GetPtr () const;
1321 
1326  void SetPtr (uint32_t ptr);
1327 
1332  virtual void Print (std::ostream& os) const;
1333 
1338  virtual uint32_t GetSerializedSize () const;
1339 
1344  virtual void Serialize (Buffer::Iterator start) const;
1345 
1351  virtual uint32_t Deserialize (Buffer::Iterator start);
1352 
1353 private:
1354 
1359 
1363  uint32_t m_ptr;
1364 };
1365 
1372 {
1373 public:
1377  Icmpv6OptionMtu ();
1378 
1383  Icmpv6OptionMtu (uint32_t mtu);
1384 
1388  virtual ~Icmpv6OptionMtu ();
1389 
1394  static TypeId GetTypeId ();
1395 
1400  virtual TypeId GetInstanceTypeId () const;
1401 
1406  uint16_t GetReserved () const;
1407 
1412  void SetReserved (uint16_t reserved);
1413 
1418  uint32_t GetMtu () const;
1419 
1424  void SetMtu (uint32_t mtu);
1425 
1430  virtual void Print (std::ostream& os) const;
1431 
1436  virtual uint32_t GetSerializedSize () const;
1437 
1442  virtual void Serialize (Buffer::Iterator start) const;
1443 
1449  virtual uint32_t Deserialize (Buffer::Iterator start);
1450 
1451 private:
1455  uint16_t m_reserved;
1456 
1460  uint32_t m_mtu;
1461 };
1462 
1469 {
1470 public:
1475 
1481  Icmpv6OptionPrefixInformation (Ipv6Address network, uint8_t prefixlen);
1482 
1486  virtual ~Icmpv6OptionPrefixInformation ();
1487 
1492  static TypeId GetTypeId ();
1493 
1498  virtual TypeId GetInstanceTypeId () const;
1499 
1503  typedef enum
1504  {
1505  NONE = 0,
1506  ROUTERADDR = 32,
1508  ONLINK = 128
1509  } Flags_t;
1510 
1515  uint8_t GetPrefixLength () const;
1516 
1521  void SetPrefixLength (uint8_t prefixLength);
1522 
1527  uint8_t GetFlags () const;
1528 
1533  void SetFlags (uint8_t flags);
1534 
1539  uint32_t GetValidTime () const;
1540 
1545  void SetValidTime (uint32_t validTime);
1546 
1551  uint32_t GetPreferredTime () const;
1552 
1557  void SetPreferredTime (uint32_t preferredTime);
1558 
1563  uint32_t GetReserved () const;
1564 
1569  void SetReserved (uint32_t reserved);
1570 
1575  Ipv6Address GetPrefix () const;
1576 
1581  void SetPrefix (Ipv6Address prefix);
1582 
1587  virtual void Print (std::ostream& os) const;
1588 
1593  virtual uint32_t GetSerializedSize () const;
1594 
1599  virtual void Serialize (Buffer::Iterator start) const;
1600 
1606  virtual uint32_t Deserialize (Buffer::Iterator start);
1607 
1608 private:
1613 
1618 
1622  uint8_t m_flags;
1623 
1627  uint32_t m_validTime;
1628 
1633 
1637  uint32_t m_reserved;
1638 };
1639 
1646 {
1647 public:
1652  Icmpv6OptionLinkLayerAddress (bool source);
1653 
1658  static TypeId GetTypeId ();
1659 
1664  virtual TypeId GetInstanceTypeId (void) const;
1665 
1671  Icmpv6OptionLinkLayerAddress (bool source, Address addr);
1672 
1677 
1681  virtual ~Icmpv6OptionLinkLayerAddress ();
1682 
1687  Address GetAddress () const;
1688 
1693  void SetAddress (Address addr);
1694 
1699  virtual void Print (std::ostream& os) const;
1700 
1705  virtual uint32_t GetSerializedSize () const;
1706 
1711  virtual void Serialize (Buffer::Iterator start) const;
1712 
1718  virtual uint32_t Deserialize (Buffer::Iterator start);
1719 
1720 private:
1725 };
1726 
1733 {
1734 public:
1739  static TypeId GetTypeId ();
1740 
1745  virtual TypeId GetInstanceTypeId () const;
1746 
1751 
1755  virtual ~Icmpv6OptionRedirected ();
1756 
1761  Ptr<Packet> GetPacket () const;
1762 
1767  void SetPacket (Ptr<Packet> packet);
1768 
1773  virtual void Print (std::ostream& os) const;
1774 
1779  virtual uint32_t GetSerializedSize () const;
1780 
1785  virtual void Serialize (Buffer::Iterator start) const;
1786 
1792  virtual uint32_t Deserialize (Buffer::Iterator start);
1793 
1794 private:
1799 };
1800 
1801 } /* namespace ns3 */
1802 
1803 #endif /* ICMPV6_HEADER_H */
1804 
Protocol header serialization and deserialization.
Definition: header.h:42
uint16_t GetSeq() const
Get the sequence number.
Icmpv6OptionHeader()
Constructor.
Ipv6Address m_destination
IPv6 destination address.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
virtual void Print(std::ostream &os) const
Print information.
void SetLength(uint8_t len)
Set the length of the option.
uint32_t m_reserved
Reserved value.
void SetPacket(Ptr< Packet > packet)
Set the redirected packet.
void CalculatePseudoHeaderChecksum(Ipv6Address src, Ipv6Address dst, uint16_t length, uint8_t protocol)
Calculate pseudo header checksum for IPv6.
ICMPv6 redirected option.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
bool GetFlagS() const
Get the S flag.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
uint32_t m_RetransmissionTimer
The retransmission timer.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
Ipv6Address GetIpv6Target() const
Get the IPv6 target field.
static TypeId GetTypeId()
Get the UID of this class.
ICMPv6 Error Parameter Error header.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
ICMPv6 Router Advertisement header.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
ICMPv6 Neighbor Advertisement header.
static TypeId GetTypeId()
Get the UID of this class.
uint8_t m_type
The type.
bool m_flagR
The R flag.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
Ptr< Packet > m_packet
The incorrect packet.
Ptr< Packet > m_packet
The incorrect Packet.
Icmpv6OptionMtu()
Constructor.
void SetReserved(uint32_t reserved)
Set the reserved field (normally it will be 0x00000000).
uint32_t m_validTime
The valid time.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
void SetReserved(uint32_t reserved)
Set the reserved field.
Icmpv6NS()
Constructor.
virtual ~Icmpv6TimeExceeded()
Destructor.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
ICMPv6 Error Time Exceeded header.
Icmpv6TimeExceeded()
Constructor.
Ptr< Packet > GetPacket() const
Get the incorrect packet.
def start()
Definition: core.py:1855
ICMPv6 Router Solicitation header.
ICMPv6 Neighbor Solicitation header.
void SetType(uint8_t type)
Set the type of the option.
uint32_t m_preferredTime
The preferred time.
uint16_t m_reserved
The reserved value.
static TypeId GetTypeId()
Get the UID of this class.
uint32_t m_reserved
The reserved value.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual void Print(std::ostream &os) const
Print information.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
void SetPtr(uint32_t ptr)
Set the pointer field.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
Ptr< Packet > m_packet
The redirected packet.
uint32_t GetReserved() const
Get the reserved field.
ErrorParameterError_e
ICMPv6 error code : Parameter Error.
uint8_t m_len
The length.
void SetRetransmissionTime(uint32_t r)
Set the node Retransmission time (Neighbor Discovery).
static TypeId GetTypeId()
Get the UID of this class.
Ipv6Address m_target
IPv6 target address.
bool m_flagS
The O flag.
static TypeId GetTypeId()
Get the UID of this class.
Ipv6Address m_target
The IPv6 target address.
virtual ~Icmpv6OptionHeader()
Destructor.
NS_DEPRECATED_3_34 uint8_t GetFlags() const
Getflags.
uint16_t m_id
ID of the packet (to distinguish response between many ping program).
static TypeId GetTypeId()
Get the UID of this class.
void SetMtu(uint32_t mtu)
Set the MTU.
uint8_t GetType() const
Get the type of the option.
void SetPacket(Ptr< Packet > p)
Set the incorrect packet.
uint8_t m_code
The code.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
void SetTarget(Ipv6Address target)
Set the IPv6 target address.
static TypeId GetTypeId()
Get the UID of this class.
Icmpv6NA()
Constructor.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
Icmpv6Echo()
Default constructor.
Ptr< Packet > GetPacket() const
Get the incorrect packet.
Icmpv6ParameterError()
Constructor.
static TypeId GetTypeId()
Get the UID of this class.
static TypeId GetTypeId()
Get the UID of this class.
iterator in a Buffer instance
Definition: buffer.h:98
a polymophic address class
Definition: address.h:90
virtual void Print(std::ostream &os) const
Print information.
void SetPacket(Ptr< Packet > p)
Set the incorrect packet.
uint32_t GetPreferredTime() const
Get the preferred time of the information.
virtual ~Icmpv6OptionPrefixInformation()
Destructor.
void SetLifeTime(uint16_t l)
Set the node Life time (Neighbor Discovery).
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
void SetValidTime(uint32_t validTime)
Set the valid time of the information.
uint8_t m_type
The type.
virtual void Print(std::ostream &os) const
Print information.
void SetIpv6Target(Ipv6Address target)
Set the IPv6 target field.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
ICMPv6 Error Destination Unreachable header.
uint32_t GetMtu() const
Get the MTU field.
virtual ~Icmpv6ParameterError()
Destructor.
void SetType(uint8_t type)
Set the type.
void SetCurHopLimit(uint8_t m)
Set the IPv6 maximum number of jumps.
uint32_t GetValidTime() const
Get the valid time of the information.
virtual ~Icmpv6NA()
Destructor.
void SetPreferredTime(uint32_t preferredTime)
Set the preferred time of the information.
ICMPv6 header.
Definition: icmpv6-header.h:38
virtual uint32_t GetSerializedSize() const
Get the serialized size.
uint32_t m_reserved
The reserved value.
uint16_t m_checksum
The checksum.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
void SetIpv6Target(Ipv6Address target)
Set the IPv6 target field.
uint8_t GetPrefixLength() const
Get the prefix length.
Flags_t
Icmpv6 Option Prefix Information flag field values.
virtual void Print(std::ostream &os) const
Print information.
void SetPrefixLength(uint8_t prefixLength)
Set the prefix length.
ICMPv6 Option Prefix Information.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
Ipv6Address m_target
The IPv6 target address.
Ptr< Packet > m_packet
the incorrect packet.
uint32_t m_reserved
The reserved value.
bool m_flagH
The H flag.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
uint32_t GetMtu() const
Get the MTU.
uint16_t GetLifeTime() const
Get the node Life time (Neighbor Discovery).
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
uint32_t m_reserved
The reserved field.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
Icmpv6RS()
Constructor.
virtual void Print(std::ostream &os) const
Print information.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
virtual void Print(std::ostream &os) const
Print information.
uint8_t m_curHopLimit
The max jumps.
Ptr< Packet > GetPacket() const
Get the redirected packet.
bool GetFlagO() const
Get the O flag.
ErrorDestinationUnreachable_e
ICMPv6 error code : Destination Unreachable.
Definition: icmpv6-header.h:89
ICMPv6 Redirection header.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
Ipv6Address GetTarget() const
Get the IPv6 target address.
static TypeId GetTypeId()
Get the UID of this class.
uint32_t m_mtu
The MTU value.
void SetPacket(Ptr< Packet > p)
Set the incorrect packet.
bool m_calcChecksum
Checksum enable or not.
bool m_flagO
The O flag.
uint8_t GetLength() const
Get the length of the option in 8 bytes unit.
uint32_t GetReserved() const
Get the reserved field.
void SetReserved(uint16_t reserved)
Set the reserved field.
virtual void Print(std::ostream &os) const
Print information.
static TypeId GetTypeId()
Get the UID of this class.
void SetReserved(uint32_t reserved)
Set the reserved field.
void SetReserved(uint32_t reserved)
Set the reserved field.
uint8_t GetCode() const
Get the code field.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual void Print(std::ostream &os) const
Print information.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
Ptr< Packet > GetPacket() const
Get the incorrect packet.
virtual void Print(std::ostream &os) const
Print information.
double f(double x, void *params)
Definition: 80211b.c:70
uint8_t m_prefixLength
The length of the prefix.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
virtual ~Icmpv6OptionMtu()
Destructor.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
virtual ~Icmpv6RS()
Destructor.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
void SetChecksum(uint16_t checksum)
Set the checksum.
uint32_t GetReserved() const
Get the reserved field.
bool GetFlagM() const
Get the M flag.
uint8_t GetCurHopLimit() const
Get the IPv6 maximum number of jumps.
void SetCode(uint8_t code)
Set the code field.
uint32_t GetReserved() const
Get the reserved field.
ICMPv6 MTU option.
virtual ~Icmpv6OptionRedirected()
Destructor.
#define NS_DEPRECATED_3_34
Tag for things deprecated in version ns-3.34.
Definition: deprecated.h:71
virtual ~Icmpv6Redirection()
Destructor.
uint32_t m_ReachableTime
The reachable time value.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
Ipv6Address GetIpv6Target() const
Get the IPv6 target field.
void SetFlagO(bool o)
Set the O flag.
void SetFlagH(bool h)
Set the H flag.
Icmpv6RA()
Constructor.
virtual void Print(std::ostream &os) const
Print information.
virtual ~Icmpv6RA()
Destructor.
void SetReserved(uint32_t reserved)
Set the reserved field.
void SetFlagR(bool r)
Set the R flag.
ICMPv6 Echo message.
bool m_flagO
The M flag.
void SetFlagS(bool s)
Set the S flag.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
void SetFlagM(bool m)
Set the M flag.
void SetFlags(uint8_t flags)
Set the flags.
void SetReachableTime(uint32_t r)
Set the node Reachable time (Neighbor Discovery).
virtual uint32_t GetSerializedSize() const
Get the serialized size.
uint32_t m_ptr
The pointer field.
Describes an IPv6 address.
Definition: ipv6-address.h:49
virtual ~Icmpv6Header()
Destructor.
ErrorTimeExceeded_e
ICMPv6 error code : Time Exceeded.
Icmpv6TooBig()
Constructor.
virtual void Print(std::ostream &os) const
Print information.
uint16_t GetReserved() const
Get the reserved field.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual ~Icmpv6Echo()
Destructor.
void SetDestination(Ipv6Address destination)
Set the IPv6 destination address.
OptionType_e
ICMPv6 Option type code.
Definition: icmpv6-header.h:77
virtual uint32_t GetSerializedSize() const
Get the serialized size.
virtual ~Icmpv6TooBig()
Destructor.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
uint16_t GetChecksum() const
Get the checksum.
virtual void Print(std::ostream &os) const
Print information.
Ipv6Address GetDestination() const
Get the IPv6 destination address.
uint16_t m_LifeTime
The lifetime value.
virtual ~Icmpv6NS()
Destructor.
Ipv6Address GetPrefix() const
Get the IPv6 prefix.
bool GetFlagR() const
Get the R flag.
Ptr< Packet > m_packet
The incorrect packet.
Icmpv6OptionRedirected()
Constructor.
virtual void Print(std::ostream &os) const
Print information.
uint32_t GetPtr() const
Get the pointer field.
Icmpv6Header()
Constructor.
virtual ~Icmpv6DestinationUnreachable()
Destructor.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
Ptr< Packet > GetPacket() const
Get the incorrect packet.
static TypeId GetTypeId()
Get the UID of this class.
uint8_t GetType() const
Get the type field.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
Autonomous Address Configuration.
uint32_t GetReachableTime() const
Get the node Reachable time (Neighbor Discovery).
uint32_t GetReserved() const
Get the reserved field.
NS_DEPRECATED_3_34 void SetFlags(uint8_t f)
Setflags.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
void SetSeq(uint16_t seq)
Set the sequence number.
bool GetFlagO() const
Get the O flag.
uint32_t m_mtu
The MTU value.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
Icmpv6Redirection()
Constructor.
void SetPacket(Ptr< Packet > p)
Set the incorrect packet.
uint16_t m_seq
Sequence number (to distinguish response).
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
ICMPv6 Error Too Big header.
a unique identifier for an interface.
Definition: type-id.h:58
Type_e
ICMPv6 type code.
Definition: icmpv6-header.h:44
void SetFlagO(bool o)
Set the O flag.
static TypeId GetTypeId()
Get the UID of this class.
static TypeId GetTypeId()
Get the UID of this class.
void SetPrefix(Ipv6Address prefix)
Set the IPv6 prefix.
bool GetFlagH() const
Get the H flag.
static TypeId GetTypeId()
Get the UID of this class.
uint8_t GetFlags() const
Get the flags.
Ipv6Address m_prefix
The prefix value.
ICMPv6 option header.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
void SetId(uint16_t id)
Set the ID of the packet.
bool m_flagM
The M flag.
uint32_t GetRetransmissionTime() const
Get the node Retransmission time (Neighbor Discovery).
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.
void SetMtu(uint32_t mtu)
Set the MTU.
uint16_t GetId() const
Get the ID of the packet.
virtual void Print(std::ostream &os) const
Print information.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.