Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(501)

Unified Diff: src/internet-stack/udp-l4-protocol.cc

Issue 1690056: NS-3 Click Integration Code Review (Closed)
Patch Set: Full Patch Set Created 13 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/internet-stack/tcp-l4-protocol.cc ('k') | src/internet-stack/udp-socket-impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/internet-stack/udp-l4-protocol.cc
===================================================================
--- a/src/internet-stack/udp-l4-protocol.cc
+++ b/src/internet-stack/udp-l4-protocol.cc
@@ -31,6 +31,7 @@
#include "ipv4-end-point-demux.h"
#include "ipv4-end-point.h"
#include "ipv4-l3-protocol.h"
+#include "ipv4-l3-click-protocol.h"
#include "udp-socket-impl.h"
NS_LOG_COMPONENT_DEFINE ("UdpL4Protocol");
@@ -82,11 +83,26 @@
Ptr<Node> node = this->GetObject<Node> ();
if (node != 0)
{
- Ptr<Ipv4L3Protocol> ipv4 = this->GetObject<Ipv4L3Protocol> ();
+ bool isClickNode = false;
+
+ if (DynamicCast<Ipv4L3ClickProtocol> (this->GetObject<Ipv4> ()))
+ {
+ isClickNode = true;
+ }
+
+ Ptr<Ipv4> ipv4 = this->GetObject<Ipv4> ();
+
if (ipv4 != 0)
{
this->SetNode (node);
- ipv4->Insert (this);
+ if (!isClickNode)
+ {
+ DynamicCast<Ipv4L3Protocol> (ipv4)->Insert (this);
+ }
+ else
+ {
+ DynamicCast<Ipv4L3ClickProtocol> (ipv4)->Insert (this);
+ }
Ptr<UdpSocketFactoryImpl> udpFactory = CreateObject<UdpSocketFactoryImpl> ();
udpFactory->SetUdp (this);
node->AggregateObject (udpFactory);
@@ -255,12 +271,24 @@
packet->AddHeader (udpHeader);
- Ptr<Ipv4L3Protocol> ipv4 = m_node->GetObject<Ipv4L3Protocol> ();
+ bool isClickNode = false;
+ Ptr<Ipv4> ipv4 = m_node->GetObject<Ipv4> ();
+
+ if (DynamicCast<Ipv4L3ClickProtocol> (ipv4))
+ isClickNode = true;
+
if (ipv4 != 0)
{
NS_LOG_LOGIC ("Sending to IP");
// Send with null route
- ipv4->Send (packet, saddr, daddr, PROT_NUMBER, 0);
+ if (!isClickNode)
+ {
+ DynamicCast<Ipv4L3Protocol> (ipv4)->Send (packet, saddr, daddr, PROT_NUMBER, 0);
+ }
+ else
+ {
+ DynamicCast<Ipv4L3ClickProtocol> (ipv4)->Send (packet, saddr, daddr, PROT_NUMBER, 0);
+ }
}
}
@@ -284,11 +312,23 @@
packet->AddHeader (udpHeader);
- Ptr<Ipv4L3Protocol> ipv4 = m_node->GetObject<Ipv4L3Protocol> ();
+ bool isClickNode = false;
+ Ptr<Ipv4> ipv4 = m_node->GetObject<Ipv4> ();
+
+ if (DynamicCast<Ipv4L3ClickProtocol> (ipv4))
+ isClickNode = true;
+
if (ipv4 != 0)
{
NS_LOG_LOGIC ("Sending to IP");
- ipv4->Send (packet, saddr, daddr, PROT_NUMBER, route);
+ if (!isClickNode)
+ {
+ DynamicCast<Ipv4L3Protocol> (ipv4)->Send (packet, saddr, daddr, PROT_NUMBER, route);
+ }
+ else
+ {
+ DynamicCast<Ipv4L3ClickProtocol> (ipv4)->Send (packet, saddr, daddr, PROT_NUMBER, route);
+ }
}
}
« no previous file with comments | « src/internet-stack/tcp-l4-protocol.cc ('k') | src/internet-stack/udp-socket-impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b