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-l4-protocol.h
Go to the documentation of this file.
1
#ifndef ICMPV4_L4_PROTOCOL_H
2
#define ICMPV4_L4_PROTOCOL_H
3
4
#include "
ip-l4-protocol.h
"
5
#include "
icmpv4.h
"
6
#include "ns3/ipv4-address.h"
7
8
namespace
ns3 {
9
10
class
Node;
11
class
Ipv4Interface;
12
class
Ipv4Route;
13
14
class
Icmpv4L4Protocol
:
public
IpL4Protocol
15
{
16
public
:
17
static
TypeId
GetTypeId
(
void
);
18
static
const
uint8_t
PROT_NUMBER
;
19
20
Icmpv4L4Protocol
();
21
virtual
~Icmpv4L4Protocol
();
22
23
void
SetNode
(
Ptr<Node>
node);
24
25
static
uint16_t
GetStaticProtocolNumber
(
void
);
26
virtual
int
GetProtocolNumber
(
void
)
const
;
27
virtual
enum
IpL4Protocol::RxStatus
Receive
(
Ptr<Packet>
p,
28
Ipv4Header
const
&header,
29
Ptr<Ipv4Interface>
incomingInterface);
30
virtual
enum
IpL4Protocol::RxStatus
Receive
(
Ptr<Packet>
p,
31
Ipv6Address
&src,
32
Ipv6Address
&dst,
33
Ptr<Ipv6Interface>
incomingInterface);
34
35
void
SendDestUnreachFragNeeded
(
Ipv4Header
header,
Ptr<const Packet>
orgData, uint16_t nextHopMtu);
36
void
SendTimeExceededTtl
(
Ipv4Header
header,
Ptr<const Packet>
orgData);
37
void
SendDestUnreachPort
(
Ipv4Header
header,
Ptr<const Packet>
orgData);
38
39
// From IpL4Protocol
40
virtual
void
SetDownTarget
(
IpL4Protocol::DownTargetCallback
cb);
41
virtual
void
SetDownTarget6
(
IpL4Protocol::DownTargetCallback6
cb);
42
// From IpL4Protocol
43
virtual
IpL4Protocol::DownTargetCallback
GetDownTarget
(
void
)
const
;
44
virtual
IpL4Protocol::DownTargetCallback6
GetDownTarget6
(
void
)
const
;
45
protected
:
46
/*
47
* This function will notify other components connected to the node that a new stack member is now connected
48
* This will be used to notify Layer 3 protocol of layer 4 protocol stack to connect them together.
49
*/
50
virtual
void
NotifyNewAggregate
();
51
private
:
52
void
HandleEcho
(
Ptr<Packet>
p,
53
Icmpv4Header
header,
54
Ipv4Address
source,
55
Ipv4Address
destination);
56
void
HandleDestUnreach
(
Ptr<Packet>
p,
57
Icmpv4Header
header,
58
Ipv4Address
source,
59
Ipv4Address
destination);
60
void
HandleTimeExceeded
(
Ptr<Packet>
p,
61
Icmpv4Header
icmp,
62
Ipv4Address
source,
63
Ipv4Address
destination);
64
void
SendDestUnreach
(
Ipv4Header
header,
Ptr<const Packet>
orgData,
65
uint8_t code, uint16_t nextHopMtu);
66
void
SendMessage
(
Ptr<Packet>
packet,
Ipv4Address
dest, uint8_t type, uint8_t code);
67
void
SendMessage
(
Ptr<Packet>
packet,
Ipv4Address
source,
Ipv4Address
dest, uint8_t type, uint8_t code,
Ptr<Ipv4Route>
route);
68
void
Forward
(
Ipv4Address
source,
Icmpv4Header
icmp,
69
uint32_t info,
Ipv4Header
ipHeader,
70
const
uint8_t payload[8]);
71
72
virtual
void
DoDispose
(
void
);
73
74
Ptr<Node>
m_node
;
75
IpL4Protocol::DownTargetCallback
m_downTarget
;
76
};
77
78
}
// namespace ns3
79
80
#endif
/* ICMPV4_L4_PROTOCOL_H */
src
internet
model
icmpv4-l4-protocol.h
Generated on Tue Oct 9 2012 16:45:37 for ns-3 by
1.8.1.2