A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
icmpv4.h
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2008 INRIA
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: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
19
*/
20
21
#ifndef ICMPV4_H
22
#define ICMPV4_H
23
24
#include "ns3/header.h"
25
#include "ns3/ptr.h"
26
#include "ns3/ipv4-header.h"
27
#include <stdint.h>
28
29
namespace
ns3 {
30
31
class
Packet;
32
33
class
Icmpv4Header
:
public
Header
34
{
35
public
:
36
enum
{
37
ECHO_REPLY
= 0,
38
DEST_UNREACH
= 3,
39
ECHO
= 8,
40
TIME_EXCEEDED
= 11
41
};
42
43
void
EnableChecksum
(
void
);
44
void
SetType
(uint8_t type);
45
void
SetCode
(uint8_t code);
46
47
uint8_t
GetType
(
void
)
const
;
48
uint8_t
GetCode
(
void
)
const
;
49
50
static
TypeId
GetTypeId
(
void
);
51
Icmpv4Header
();
52
virtual
~Icmpv4Header
();
53
virtual
TypeId
GetInstanceTypeId
(
void
)
const
;
54
virtual
uint32_t
GetSerializedSize
(
void
)
const
;
55
virtual
void
Serialize
(
Buffer::Iterator
start
)
const
;
56
virtual
uint32_t
Deserialize
(
Buffer::Iterator
start
);
57
virtual
void
Print
(std::ostream &os)
const
;
58
59
private
:
60
uint8_t
m_type
;
61
uint8_t
m_code
;
62
bool
m_calcChecksum
;
63
};
64
65
class
Icmpv4Echo
:
public
Header
66
{
67
public
:
68
void
SetIdentifier
(uint16_t
id
);
69
void
SetSequenceNumber
(uint16_t seq);
70
void
SetData
(
Ptr<const Packet>
data
);
71
uint16_t
GetIdentifier
(
void
)
const
;
72
uint16_t
GetSequenceNumber
(
void
)
const
;
73
uint32_t
GetDataSize
(
void
)
const
;
74
uint32_t
GetData
(uint8_t payload[])
const
;
75
76
77
static
TypeId
GetTypeId
(
void
);
78
Icmpv4Echo
();
79
virtual
~Icmpv4Echo
();
80
virtual
TypeId
GetInstanceTypeId
(
void
)
const
;
81
virtual
uint32_t
GetSerializedSize
(
void
)
const
;
82
virtual
void
Serialize
(
Buffer::Iterator
start
)
const
;
83
virtual
uint32_t
Deserialize
(
Buffer::Iterator
start);
84
virtual
void
Print
(std::ostream &os)
const
;
85
private
:
86
uint16_t
m_identifier
;
87
uint16_t
m_sequence
;
88
uint8_t *
m_data
;
89
uint32_t
m_dataSize
;
90
};
91
92
class
Icmpv4DestinationUnreachable
:
public
Header
93
{
94
public
:
95
enum
{
96
NET_UNREACHABLE
= 0,
97
HOST_UNREACHABLE
= 1,
98
PROTOCOL_UNREACHABLE
= 2,
99
PORT_UNREACHABLE
= 3,
100
FRAG_NEEDED
= 4,
101
SOURCE_ROUTE_FAILED
= 5
102
};
103
static
TypeId
GetTypeId
(
void
);
104
Icmpv4DestinationUnreachable
();
105
virtual
~Icmpv4DestinationUnreachable
();
106
107
void
SetNextHopMtu
(uint16_t mtu);
108
uint16_t
GetNextHopMtu
(
void
)
const
;
109
110
void
SetData
(
Ptr<const Packet>
data
);
111
void
SetHeader
(
Ipv4Header
header);
112
113
void
GetData
(uint8_t payload[8])
const
;
114
Ipv4Header
GetHeader
(
void
)
const
;
115
116
private
:
117
virtual
TypeId
GetInstanceTypeId
(
void
)
const
;
118
virtual
uint32_t
GetSerializedSize
(
void
)
const
;
119
virtual
void
Serialize
(
Buffer::Iterator
start
)
const
;
120
virtual
uint32_t
Deserialize
(
Buffer::Iterator
start
);
121
virtual
void
Print
(std::ostream &os)
const
;
122
private
:
123
uint16_t
m_nextHopMtu
;
124
Ipv4Header
m_header
;
125
uint8_t
m_data
[8];
126
};
127
128
129
class
Icmpv4TimeExceeded
:
public
Header
130
{
131
public
:
132
enum
{
133
TIME_TO_LIVE
= 0,
134
FRAGMENT_REASSEMBLY
= 1
135
};
136
137
void
SetData
(
Ptr<const Packet>
data
);
138
void
SetHeader
(
Ipv4Header
header);
139
140
void
GetData
(uint8_t payload[8])
const
;
141
Ipv4Header
GetHeader
(
void
)
const
;
142
143
static
TypeId
GetTypeId
(
void
);
144
Icmpv4TimeExceeded
();
145
virtual
~Icmpv4TimeExceeded
();
146
virtual
TypeId
GetInstanceTypeId
(
void
)
const
;
147
virtual
uint32_t
GetSerializedSize
(
void
)
const
;
148
virtual
void
Serialize
(
Buffer::Iterator
start
)
const
;
149
virtual
uint32_t
Deserialize
(
Buffer::Iterator
start
);
150
virtual
void
Print
(std::ostream &os)
const
;
151
152
private
:
153
Ipv4Header
m_header
;
154
uint8_t
m_data
[8];
155
};
156
157
}
// namespace ns3
158
159
#endif
/* ICMPV4_H */
ns3::Header
Protocol header serialization and deserialization.
Definition:
header.h:42
ns3::Icmpv4Echo::Icmpv4Echo
Icmpv4Echo()
Definition:
icmpv4.cc:205
ns3::Icmpv4Echo::Print
virtual void Print(std::ostream &os) const
Definition:
icmpv4.cc:262
ns3::Icmpv4DestinationUnreachable::GetInstanceTypeId
virtual TypeId GetInstanceTypeId(void) const
Definition:
icmpv4.cc:338
ns3::Icmpv4Header::SetType
void SetType(uint8_t type)
Definition:
icmpv4.cc:108
ns3::Icmpv4DestinationUnreachable::GetData
void GetData(uint8_t payload[8]) const
Definition:
icmpv4.cc:321
ns3::Ptr< const Packet >
ns3::Icmpv4Header::ECHO_REPLY
Definition:
icmpv4.h:37
ns3::Icmpv4Header::GetCode
uint8_t GetCode(void) const
Definition:
icmpv4.cc:126
ns3::Icmpv4Echo::GetInstanceTypeId
virtual TypeId GetInstanceTypeId(void) const
Definition:
icmpv4.cc:225
ns3::Icmpv4DestinationUnreachable::SetHeader
void SetHeader(Ipv4Header header)
Definition:
icmpv4.cc:315
ns3::Icmpv4Echo::m_sequence
uint16_t m_sequence
Definition:
icmpv4.h:87
ns3::Icmpv4TimeExceeded
Definition:
icmpv4.h:129
ns3::Icmpv4DestinationUnreachable::SetData
void SetData(Ptr< const Packet > data)
Definition:
icmpv4.cc:309
ns3::Icmpv4TimeExceeded::GetSerializedSize
virtual uint32_t GetSerializedSize(void) const
Definition:
icmpv4.cc:456
ns3::Icmpv4Echo::GetDataSize
uint32_t GetDataSize(void) const
Definition:
icmpv4.cc:184
ns3::Icmpv4Echo::GetTypeId
static TypeId GetTypeId(void)
Definition:
icmpv4.cc:197
ns3::Icmpv4TimeExceeded::Deserialize
virtual uint32_t Deserialize(Buffer::Iterator start)
Definition:
icmpv4.cc:473
ns3::Icmpv4Header::m_code
uint8_t m_code
Definition:
icmpv4.h:61
ns3::Icmpv4DestinationUnreachable::~Icmpv4DestinationUnreachable
virtual ~Icmpv4DestinationUnreachable()
Definition:
icmpv4.cc:334
ns3::Icmpv4Header::GetTypeId
static TypeId GetTypeId(void)
Definition:
icmpv4.cc:36
ns3::Icmpv4TimeExceeded::Print
virtual void Print(std::ostream &os) const
Definition:
icmpv4.cc:487
ns3::Icmpv4Header::Deserialize
virtual uint32_t Deserialize(Buffer::Iterator start)
Definition:
icmpv4.cc:92
ns3::Icmpv4TimeExceeded::Serialize
virtual void Serialize(Buffer::Iterator start) const
Definition:
icmpv4.cc:462
visualizer.core.start
def start
Definition:
core.py:1482
ns3::Icmpv4Header::~Icmpv4Header
virtual ~Icmpv4Header()
Definition:
icmpv4.cc:51
ns3::Icmpv4Header
Definition:
icmpv4.h:33
ns3::Icmpv4Echo::GetIdentifier
uint16_t GetIdentifier(void) const
Definition:
icmpv4.cc:172
ns3::Icmpv4Header::Print
virtual void Print(std::ostream &os) const
Definition:
icmpv4.cc:101
ns3::Icmpv4Header::ECHO
Definition:
icmpv4.h:39
ns3::Buffer::Iterator
iterator in a Buffer instance
Definition:
buffer.h:98
ns3::Icmpv4DestinationUnreachable::GetNextHopMtu
uint16_t GetNextHopMtu(void) const
Definition:
icmpv4.cc:302
ns3::Icmpv4Echo::Serialize
virtual void Serialize(Buffer::Iterator start) const
Definition:
icmpv4.cc:237
ns3::Icmpv4Header::SetCode
void SetCode(uint8_t code)
Definition:
icmpv4.cc:114
ns3::Icmpv4Header::GetSerializedSize
virtual uint32_t GetSerializedSize(void) const
Definition:
icmpv4.cc:68
ns3::Ipv4Header
Packet header for IPv4.
Definition:
ipv4-header.h:31
ns3::Icmpv4Header::DEST_UNREACH
Definition:
icmpv4.h:38
ns3::Icmpv4DestinationUnreachable::m_nextHopMtu
uint16_t m_nextHopMtu
Definition:
icmpv4.h:123
ns3::Icmpv4DestinationUnreachable::SOURCE_ROUTE_FAILED
Definition:
icmpv4.h:101
ns3::Icmpv4DestinationUnreachable::PROTOCOL_UNREACHABLE
Definition:
icmpv4.h:98
ns3::Icmpv4Echo::m_dataSize
uint32_t m_dataSize
Definition:
icmpv4.h:89
ns3::Icmpv4Header::EnableChecksum
void EnableChecksum(void)
Definition:
icmpv4.cc:56
ns3::Icmpv4Header::TIME_EXCEEDED
Definition:
icmpv4.h:40
ns3::Icmpv4DestinationUnreachable::GetTypeId
static TypeId GetTypeId(void)
Definition:
icmpv4.cc:276
data
uint8_t data[writeSize]
Definition:
socket-bound-tcp-static-routing.cc:53
ns3::Icmpv4TimeExceeded::m_header
Ipv4Header m_header
Definition:
icmpv4.h:153
ns3::Icmpv4Echo::GetSerializedSize
virtual uint32_t GetSerializedSize(void) const
Definition:
icmpv4.cc:231
ns3::Icmpv4TimeExceeded::m_data
uint8_t m_data[8]
Definition:
icmpv4.h:154
ns3::Icmpv4TimeExceeded::SetHeader
void SetHeader(Ipv4Header header)
Definition:
icmpv4.cc:426
ns3::Icmpv4TimeExceeded::SetData
void SetData(Ptr< const Packet > data)
Definition:
icmpv4.cc:420
ns3::Icmpv4DestinationUnreachable::SetNextHopMtu
void SetNextHopMtu(uint16_t mtu)
Definition:
icmpv4.cc:296
ns3::Icmpv4Header::GetInstanceTypeId
virtual TypeId GetInstanceTypeId(void) const
Definition:
icmpv4.cc:62
ns3::Icmpv4DestinationUnreachable::m_header
Ipv4Header m_header
Definition:
icmpv4.h:124
ns3::Icmpv4Echo::~Icmpv4Echo
virtual ~Icmpv4Echo()
Definition:
icmpv4.cc:217
ns3::Icmpv4Echo
Definition:
icmpv4.h:65
ns3::Icmpv4DestinationUnreachable::NET_UNREACHABLE
Definition:
icmpv4.h:96
ns3::Icmpv4Echo::GetData
uint32_t GetData(uint8_t payload[]) const
Definition:
icmpv4.cc:190
ns3::Icmpv4DestinationUnreachable::Deserialize
virtual uint32_t Deserialize(Buffer::Iterator start)
Definition:
icmpv4.cc:362
ns3::Icmpv4DestinationUnreachable::Icmpv4DestinationUnreachable
Icmpv4DestinationUnreachable()
Definition:
icmpv4.cc:284
ns3::Icmpv4TimeExceeded::FRAGMENT_REASSEMBLY
Definition:
icmpv4.h:134
ns3::Icmpv4Echo::SetData
void SetData(Ptr< const Packet > data)
Definition:
icmpv4.cc:151
ns3::Icmpv4TimeExceeded::~Icmpv4TimeExceeded
virtual ~Icmpv4TimeExceeded()
Definition:
icmpv4.cc:445
ns3::Icmpv4DestinationUnreachable::GetSerializedSize
virtual uint32_t GetSerializedSize(void) const
Definition:
icmpv4.cc:344
ns3::Icmpv4Echo::m_identifier
uint16_t m_identifier
Definition:
icmpv4.h:86
ns3::Icmpv4TimeExceeded::GetData
void GetData(uint8_t payload[8]) const
Definition:
icmpv4.cc:432
ns3::Icmpv4DestinationUnreachable
Definition:
icmpv4.h:92
ns3::Icmpv4Echo::SetSequenceNumber
void SetSequenceNumber(uint16_t seq)
Definition:
icmpv4.cc:145
ns3::Icmpv4TimeExceeded::TIME_TO_LIVE
Definition:
icmpv4.h:133
ns3::Icmpv4Header::GetType
uint8_t GetType(void) const
Definition:
icmpv4.cc:120
ns3::Icmpv4TimeExceeded::GetInstanceTypeId
virtual TypeId GetInstanceTypeId(void) const
Definition:
icmpv4.cc:450
ns3::Icmpv4DestinationUnreachable::HOST_UNREACHABLE
Definition:
icmpv4.h:97
ns3::Icmpv4Echo::Deserialize
virtual uint32_t Deserialize(Buffer::Iterator start)
Definition:
icmpv4.cc:245
ns3::Icmpv4DestinationUnreachable::FRAG_NEEDED
Definition:
icmpv4.h:100
ns3::Icmpv4Echo::GetSequenceNumber
uint16_t GetSequenceNumber(void) const
Definition:
icmpv4.cc:178
ns3::Icmpv4Header::Icmpv4Header
Icmpv4Header()
Definition:
icmpv4.cc:44
ns3::Icmpv4DestinationUnreachable::GetHeader
Ipv4Header GetHeader(void) const
Definition:
icmpv4.cc:327
ns3::Icmpv4TimeExceeded::GetTypeId
static TypeId GetTypeId(void)
Definition:
icmpv4.cc:399
ns3::Icmpv4DestinationUnreachable::m_data
uint8_t m_data[8]
Definition:
icmpv4.h:125
ns3::Icmpv4Header::Serialize
virtual void Serialize(Buffer::Iterator start) const
Definition:
icmpv4.cc:74
ns3::Icmpv4DestinationUnreachable::Print
virtual void Print(std::ostream &os) const
Definition:
icmpv4.cc:377
ns3::TypeId
a unique identifier for an interface.
Definition:
type-id.h:49
ns3::Icmpv4TimeExceeded::GetHeader
Ipv4Header GetHeader(void) const
Definition:
icmpv4.cc:438
ns3::Icmpv4DestinationUnreachable::PORT_UNREACHABLE
Definition:
icmpv4.h:99
ns3::Icmpv4Echo::SetIdentifier
void SetIdentifier(uint16_t id)
Definition:
icmpv4.cc:139
ns3::Icmpv4Header::m_calcChecksum
bool m_calcChecksum
Definition:
icmpv4.h:62
ns3::Icmpv4DestinationUnreachable::Serialize
virtual void Serialize(Buffer::Iterator start) const
Definition:
icmpv4.cc:350
ns3::Icmpv4Echo::m_data
uint8_t * m_data
Definition:
icmpv4.h:88
ns3::Icmpv4TimeExceeded::Icmpv4TimeExceeded
Icmpv4TimeExceeded()
Definition:
icmpv4.cc:407
ns3::Icmpv4Header::m_type
uint8_t m_type
Definition:
icmpv4.h:60
src
internet
model
icmpv4.h
Generated on Sat Nov 16 2013 12:55:27 for ns-3 by
1.8.5