internet: (fixes #2890) Icmpv4 "ECHO" is defined in system-wide headers

This commit is contained in:
Tommaso Pecorella
2018-03-06 13:32:01 -06:00
parent c833e3d1cf
commit 2cb872f436
8 changed files with 33 additions and 32 deletions

View File

@@ -75,6 +75,7 @@ Bugs fixed
- Bug 2876 - tcp: Do not shrink adv window after we send the FIN
- Bug 2877 - wifi: Wrong data types for CWmin and CWmax
- Bug 2885 - lte: Tests fail for CQA and PSS testsuites
- Bug 2890 - internet: Icmpv4 "ECHO" is defined in system-wide headers
Known issues
------------

View File

@@ -105,7 +105,7 @@ ChainRegressionTest::SendPing ()
echo.SetData (dataPacket);
p->AddHeader (echo);
Icmpv4Header header;
header.SetType (Icmpv4Header::ECHO);
header.SetType (Icmpv4Header::ICMPV4_ECHO);
header.SetCode (0);
if (Node::ChecksumEnabled ())
{

View File

@@ -128,7 +128,7 @@ V4Ping::Receive (Ptr<Socket> socket)
NS_ASSERT (ipv4.GetProtocol () == 1); // protocol should be icmp.
Icmpv4Header icmp;
p->RemoveHeader (icmp);
if (icmp.GetType () == Icmpv4Header::ECHO_REPLY)
if (icmp.GetType () == Icmpv4Header::ICMPV4_ECHO_REPLY)
{
Icmpv4Echo echo;
p->RemoveHeader (echo);
@@ -225,7 +225,7 @@ V4Ping::Send ()
echo.SetData (dataPacket);
p->AddHeader (echo);
Icmpv4Header header;
header.SetType (Icmpv4Header::ECHO);
header.SetType (Icmpv4Header::ICMPV4_ECHO);
header.SetCode (0);
if (Node::ChecksumEnabled ())
{

View File

@@ -311,17 +311,17 @@ def register_types(module):
## icmpv4.h (module 'internet'): ns3::Icmpv4DestinationUnreachable [class]
module.add_class('Icmpv4DestinationUnreachable', parent=root_module['ns3::Header'])
## icmpv4.h (module 'internet'): ns3::Icmpv4DestinationUnreachable::ErrorDestinationUnreachable_e [enumeration]
module.add_enum('ErrorDestinationUnreachable_e', ['NET_UNREACHABLE', 'HOST_UNREACHABLE', 'PROTOCOL_UNREACHABLE', 'PORT_UNREACHABLE', 'FRAG_NEEDED', 'SOURCE_ROUTE_FAILED'], outer_class=root_module['ns3::Icmpv4DestinationUnreachable'])
module.add_enum('ErrorDestinationUnreachable_e', ['ICMPV4_NET_UNREACHABLE', 'ICMPV4_HOST_UNREACHABLE', 'ICMPV4_PROTOCOL_UNREACHABLE', 'ICMPV4_PORT_UNREACHABLE', 'ICMPV4_FRAG_NEEDED', 'ICMPV4_SOURCE_ROUTE_FAILED'], outer_class=root_module['ns3::Icmpv4DestinationUnreachable'])
## icmpv4.h (module 'internet'): ns3::Icmpv4Echo [class]
module.add_class('Icmpv4Echo', parent=root_module['ns3::Header'])
## icmpv4.h (module 'internet'): ns3::Icmpv4Header [class]
module.add_class('Icmpv4Header', parent=root_module['ns3::Header'])
## icmpv4.h (module 'internet'): ns3::Icmpv4Header::Type_e [enumeration]
module.add_enum('Type_e', ['ECHO_REPLY', 'DEST_UNREACH', 'ECHO', 'TIME_EXCEEDED'], outer_class=root_module['ns3::Icmpv4Header'])
module.add_enum('Type_e', ['ICMPV4_ECHO_REPLY', 'ICMPV4_DEST_UNREACH', 'ICMPV4_ECHO', 'ICMPV4_TIME_EXCEEDED'], outer_class=root_module['ns3::Icmpv4Header'])
## icmpv4.h (module 'internet'): ns3::Icmpv4TimeExceeded [class]
module.add_class('Icmpv4TimeExceeded', parent=root_module['ns3::Header'])
## icmpv4.h (module 'internet'): ns3::Icmpv4TimeExceeded::ErrorTimeExceeded_e [enumeration]
module.add_enum('ErrorTimeExceeded_e', ['TIME_TO_LIVE', 'FRAGMENT_REASSEMBLY'], outer_class=root_module['ns3::Icmpv4TimeExceeded'])
module.add_enum('ErrorTimeExceeded_e', ['ICMPV4_TIME_TO_LIVE', 'ICMPV4_FRAGMENT_REASSEMBLY'], outer_class=root_module['ns3::Icmpv4TimeExceeded'])
## icmpv6-header.h (module 'internet'): ns3::Icmpv6Header [class]
module.add_class('Icmpv6Header', parent=root_module['ns3::Header'])
## icmpv6-header.h (module 'internet'): ns3::Icmpv6Header::Type_e [enumeration]

View File

@@ -311,17 +311,17 @@ def register_types(module):
## icmpv4.h (module 'internet'): ns3::Icmpv4DestinationUnreachable [class]
module.add_class('Icmpv4DestinationUnreachable', parent=root_module['ns3::Header'])
## icmpv4.h (module 'internet'): ns3::Icmpv4DestinationUnreachable::ErrorDestinationUnreachable_e [enumeration]
module.add_enum('ErrorDestinationUnreachable_e', ['NET_UNREACHABLE', 'HOST_UNREACHABLE', 'PROTOCOL_UNREACHABLE', 'PORT_UNREACHABLE', 'FRAG_NEEDED', 'SOURCE_ROUTE_FAILED'], outer_class=root_module['ns3::Icmpv4DestinationUnreachable'])
module.add_enum('ErrorDestinationUnreachable_e', ['ICMPV4_NET_UNREACHABLE', 'ICMPV4_HOST_UNREACHABLE', 'ICMPV4_PROTOCOL_UNREACHABLE', 'ICMPV4_PORT_UNREACHABLE', 'ICMPV4_FRAG_NEEDED', 'ICMPV4_SOURCE_ROUTE_FAILED'], outer_class=root_module['ns3::Icmpv4DestinationUnreachable'])
## icmpv4.h (module 'internet'): ns3::Icmpv4Echo [class]
module.add_class('Icmpv4Echo', parent=root_module['ns3::Header'])
## icmpv4.h (module 'internet'): ns3::Icmpv4Header [class]
module.add_class('Icmpv4Header', parent=root_module['ns3::Header'])
## icmpv4.h (module 'internet'): ns3::Icmpv4Header::Type_e [enumeration]
module.add_enum('Type_e', ['ECHO_REPLY', 'DEST_UNREACH', 'ECHO', 'TIME_EXCEEDED'], outer_class=root_module['ns3::Icmpv4Header'])
module.add_enum('Type_e', ['ICMPV4_ECHO_REPLY', 'ICMPV4_DEST_UNREACH', 'ICMPV4_ECHO', 'ICMPV4_TIME_EXCEEDED'], outer_class=root_module['ns3::Icmpv4Header'])
## icmpv4.h (module 'internet'): ns3::Icmpv4TimeExceeded [class]
module.add_class('Icmpv4TimeExceeded', parent=root_module['ns3::Header'])
## icmpv4.h (module 'internet'): ns3::Icmpv4TimeExceeded::ErrorTimeExceeded_e [enumeration]
module.add_enum('ErrorTimeExceeded_e', ['TIME_TO_LIVE', 'FRAGMENT_REASSEMBLY'], outer_class=root_module['ns3::Icmpv4TimeExceeded'])
module.add_enum('ErrorTimeExceeded_e', ['ICMPV4_TIME_TO_LIVE', 'ICMPV4_FRAGMENT_REASSEMBLY'], outer_class=root_module['ns3::Icmpv4TimeExceeded'])
## icmpv6-header.h (module 'internet'): ns3::Icmpv6Header [class]
module.add_class('Icmpv6Header', parent=root_module['ns3::Header'])
## icmpv6-header.h (module 'internet'): ns3::Icmpv6Header::Type_e [enumeration]

View File

@@ -155,14 +155,14 @@ Icmpv4L4Protocol::SendDestUnreachFragNeeded (Ipv4Header header,
uint16_t nextHopMtu)
{
NS_LOG_FUNCTION (this << header << *orgData << nextHopMtu);
SendDestUnreach (header, orgData, Icmpv4DestinationUnreachable::FRAG_NEEDED, nextHopMtu);
SendDestUnreach (header, orgData, Icmpv4DestinationUnreachable::ICMPV4_FRAG_NEEDED, nextHopMtu);
}
void
Icmpv4L4Protocol::SendDestUnreachPort (Ipv4Header header,
Ptr<const Packet> orgData)
{
NS_LOG_FUNCTION (this << header << *orgData);
SendDestUnreach (header, orgData, Icmpv4DestinationUnreachable::PORT_UNREACHABLE, 0);
SendDestUnreach (header, orgData, Icmpv4DestinationUnreachable::ICMPV4_PORT_UNREACHABLE, 0);
}
void
Icmpv4L4Protocol::SendDestUnreach (Ipv4Header header, Ptr<const Packet> orgData,
@@ -175,7 +175,7 @@ Icmpv4L4Protocol::SendDestUnreach (Ipv4Header header, Ptr<const Packet> orgData,
unreach.SetHeader (header);
unreach.SetData (orgData);
p->AddHeader (unreach);
SendMessage (p, header.GetSource (), Icmpv4Header::DEST_UNREACH, code);
SendMessage (p, header.GetSource (), Icmpv4Header::ICMPV4_DEST_UNREACH, code);
}
void
@@ -189,11 +189,11 @@ Icmpv4L4Protocol::SendTimeExceededTtl (Ipv4Header header, Ptr<const Packet> orgD
p->AddHeader (time);
if (!isFragment)
{
SendMessage (p, header.GetSource (), Icmpv4Header::TIME_EXCEEDED, Icmpv4TimeExceeded::TIME_TO_LIVE);
SendMessage (p, header.GetSource (), Icmpv4Header::ICMPV4_TIME_EXCEEDED, Icmpv4TimeExceeded::ICMPV4_TIME_TO_LIVE);
}
else
{
SendMessage (p, header.GetSource (), Icmpv4Header::TIME_EXCEEDED, Icmpv4TimeExceeded::FRAGMENT_REASSEMBLY);
SendMessage (p, header.GetSource (), Icmpv4Header::ICMPV4_TIME_EXCEEDED, Icmpv4TimeExceeded::ICMPV4_FRAGMENT_REASSEMBLY);
}
}
@@ -209,7 +209,7 @@ Icmpv4L4Protocol::HandleEcho (Ptr<Packet> p,
Icmpv4Echo echo;
p->RemoveHeader (echo);
reply->AddHeader (echo);
SendMessage (reply, destination, source, Icmpv4Header::ECHO_REPLY, 0, 0);
SendMessage (reply, destination, source, Icmpv4Header::ICMPV4_ECHO_REPLY, 0, 0);
}
void
Icmpv4L4Protocol::Forward (Ipv4Address source, Icmpv4Header icmp,
@@ -268,13 +268,13 @@ Icmpv4L4Protocol::Receive (Ptr<Packet> p,
Icmpv4Header icmp;
p->RemoveHeader (icmp);
switch (icmp.GetType ()) {
case Icmpv4Header::ECHO:
case Icmpv4Header::ICMPV4_ECHO:
HandleEcho (p, icmp, header.GetSource (), header.GetDestination ());
break;
case Icmpv4Header::DEST_UNREACH:
case Icmpv4Header::ICMPV4_DEST_UNREACH:
HandleDestUnreach (p, icmp, header.GetSource (), header.GetDestination ());
break;
case Icmpv4Header::TIME_EXCEEDED:
case Icmpv4Header::ICMPV4_TIME_EXCEEDED:
HandleTimeExceeded (p, icmp, header.GetSource (), header.GetDestination ());
break;
default:

View File

@@ -45,10 +45,10 @@ public:
* ICMP type code.
*/
enum Type_e {
ECHO_REPLY = 0,
DEST_UNREACH = 3,
ECHO = 8,
TIME_EXCEEDED = 11
ICMPV4_ECHO_REPLY = 0,
ICMPV4_DEST_UNREACH = 3,
ICMPV4_ECHO = 8,
ICMPV4_TIME_EXCEEDED = 11
};
/**
@@ -176,12 +176,12 @@ public:
* ICMP error code : Destination Unreachable
*/
enum ErrorDestinationUnreachable_e {
NET_UNREACHABLE = 0,
HOST_UNREACHABLE = 1,
PROTOCOL_UNREACHABLE = 2,
PORT_UNREACHABLE = 3,
FRAG_NEEDED = 4,
SOURCE_ROUTE_FAILED = 5
ICMPV4_NET_UNREACHABLE = 0,
ICMPV4_HOST_UNREACHABLE = 1,
ICMPV4_PROTOCOL_UNREACHABLE = 2,
ICMPV4_PORT_UNREACHABLE = 3,
ICMPV4_FRAG_NEEDED = 4,
ICMPV4_SOURCE_ROUTE_FAILED = 5
};
/**
@@ -251,8 +251,8 @@ public:
*/
enum ErrorTimeExceeded_e
{
TIME_TO_LIVE = 0,
FRAGMENT_REASSEMBLY = 1
ICMPV4_TIME_TO_LIVE = 0,
ICMPV4_FRAGMENT_REASSEMBLY = 1
};
/**

View File

@@ -131,7 +131,7 @@ Bug780Test::SendPing ()
echo.SetData (dataPacket);
p->AddHeader (echo);
Icmpv4Header header;
header.SetType (Icmpv4Header::ECHO);
header.SetType (Icmpv4Header::ICMPV4_ECHO);
header.SetCode (0);
if (Node::ChecksumEnabled ())
{
@@ -158,7 +158,7 @@ Bug780Test::Receive (Ptr<Socket> socket)
NS_ASSERT (ipv4.GetProtocol () == 1); // protocol should be icmp.
Icmpv4Header icmp;
p->RemoveHeader (icmp);
if (icmp.GetType () == Icmpv4Header::ECHO_REPLY)
if (icmp.GetType () == Icmpv4Header::ICMPV4_ECHO_REPLY)
{
m_recvCount++;
}