Making everything compile. Now everything seems to work, but more
checking is necessary
diff --git a/model/ccnx-bestroute-strategy.cc b/model/ccnx-bestroute-strategy.cc
index cad2d67..a7a9801 100644
--- a/model/ccnx-bestroute-strategy.cc
+++ b/model/ccnx-bestroute-strategy.cc
@@ -24,6 +24,10 @@
#include "ns3/assert.h"
#include "ns3/log.h"
+#include <boost/lambda/lambda.hpp>
+#include <boost/lambda/bind.hpp>
+namespace ll = boost::lambda;
+
NS_LOG_COMPONENT_DEFINE ("CcnxBestRouteStrategy");
namespace ns3
@@ -65,12 +69,16 @@
if (pitEntry.m_outgoing.find (bestMetric.m_face) != pitEntry.m_outgoing.end ()) // already forwarded before
continue;
- bool faceAvailable = bestMetric.m_face->SendWithLimit (packet->Copy ());
+ bool faceAvailable = bestMetric.m_face->IsBelowLimit ();
if (!faceAvailable) // huh...
continue;
m_pit->modify (m_pit->iterator_to (pitEntry),
- bind(&CcnxPitEntry::AddOutgoing, lambda::_1, bestMetric.m_face));
+ ll::bind(&CcnxPitEntry::AddOutgoing, ll::_1, bestMetric.m_face));
+
+ // NS_LOG_DEBUG ("new outgoing entry for " << boost::cref (*metricFace.m_face));
+
+ bestMetric.m_face->Send (packet->Copy ());
forwardedCount++;
break; // if we succeeded in sending one packet, stop
diff --git a/model/ccnx-face.cc b/model/ccnx-face.cc
index 1bb55ab..e6aa03f 100644
--- a/model/ccnx-face.cc
+++ b/model/ccnx-face.cc
@@ -21,6 +21,7 @@
#include "ccnx-face.h"
+#include "ns3/packet.h"
#include "ns3/log.h"
#include "ns3/node.h"
#include "ns3/assert.h"
@@ -35,7 +36,7 @@
* invoke SetUp on them once an Ccnx address and mask have been set.
*/
CcnxFace::CcnxFace (Ptr<Node> node)
- : m_node (Ptr<Node> node)
+ : m_node (node)
, m_bucket (0.0)
, m_bucketMax (-1.0)
, m_bucketLeak (0.0)
@@ -44,6 +45,8 @@
, m_id ((uint32_t)-1)
{
NS_LOG_FUNCTION (this);
+
+ NS_ASSERT_MSG (node != 0, "node cannot be NULL. Check the code");
}
CcnxFace::~CcnxFace ()
@@ -63,17 +66,20 @@
void
CcnxFace::RegisterProtocolHandler (ProtocolHandler handler)
{
+ NS_LOG_FUNCTION_NOARGS ();
+
m_protocolHandler = handler;
}
bool
-CcnxFace::SendWithLimit (Ptr<Packet> packet)
+CcnxFace::IsBelowLimit ()
{
+ NS_LOG_FUNCTION_NOARGS ();
+
/// \todo Implement tracing, if requested
-
if (!IsUp ())
return false;
-
+
if (m_bucketMax > 0)
{
if (m_bucket+1.0 > m_bucketMax)
@@ -82,13 +88,14 @@
m_bucket += 1.0;
}
- SendImpl (packet);
return true;
}
bool
-CcnxFace::SendWithoutLimits (Ptr<Packet> packet)
+CcnxFace::Send (Ptr<Packet> packet)
{
+ NS_LOG_FUNCTION_NOARGS ();
+
/// \todo Implement tracing, if requested
if (!IsUp ())
@@ -99,14 +106,18 @@
}
bool
-CcnxFace::Receive (Ptr<const Packet> packet)
+CcnxFace::Receive (const Ptr<const Packet> &packet)
{
+ NS_LOG_FUNCTION_NOARGS ();
+
/// \todo Implement tracing, if requested
if (!IsUp ())
return false;
m_protocolHandler (this, packet);
+
+ return true;
}
// void
diff --git a/model/ccnx-face.h b/model/ccnx-face.h
index bc6769e..132ef36 100644
--- a/model/ccnx-face.h
+++ b/model/ccnx-face.h
@@ -22,9 +22,11 @@
#define CCNX_FACE_H
#include <ostream>
+#include <algorithm>
#include "ns3/ptr.h"
#include "ns3/ccnx.h"
+#include "ns3/nstime.h"
namespace ns3 {
@@ -71,40 +73,36 @@
*/
virtual void
RegisterProtocolHandler (ProtocolHandler handler);
-
- /**
- * \brief Send packet on a face with regard Interest limits
- *
- * This method will be called by lower layers to send data to device or application
- *
- * \param p smart pointer to a packet to send
- *
- * @return false if either limit is reached or face is down
- */
- bool
- SendWithLimit (Ptr<Packet> p);
/**
- * \brief Send content packet on a face without regard to limits
+ * @brief Check if Interest limit is reached
+ *
+ * Side effect: if limit is not yet reached, the number of outstanding packets will be increased
+ *
+ * @returns true if Interest limit is not yet reached
+ */
+ bool
+ IsBelowLimit ();
+
+ /**
+ * \brief Send packet on a face
*
* This method will be called by lower layers to send data to device or application
*
- * !!! The only difference between this call and SendInterest is that the former check Interest limit !!!
- *
* \param p smart pointer to a packet to send
*
- * @return false if face is down
+ * @return false if either limit is reached
*/
bool
- SendWithoutLimits (Ptr<Packet> p);
+ Send (Ptr<Packet> p);
/**
* \brief Receive packet from application or another node and forward it to the CCNx stack
*
* \todo The only reason for this call is to handle tracing, if requested
*/
- void
- Receive (Ptr<const Packet> p);
+ bool
+ Receive (const Ptr<const Packet> &p);
////////////////////////////////////////////////////////////////////
// /**
@@ -251,7 +249,7 @@
CcnxFace::LeakBucket (const Time &interval)
{
const double leak = m_bucketLeak * 1.0 / interval.ToDouble (Time::S);
- m_bucket -= std::max (0, m_bucket-leak);
+ m_bucket -= std::max (0.0, m_bucket-leak);
}
diff --git a/model/ccnx-fib.cc b/model/ccnx-fib.cc
index bd3cd67..e4e36d5 100644
--- a/model/ccnx-fib.cc
+++ b/model/ccnx-fib.cc
@@ -33,14 +33,10 @@
#define NDN_RTO_BETA 0.25
#define NDN_RTO_K 4
-//#define NDN_DEBUG_OSPF 0
-//#define NDN_DEBUG_OSPF_NODES 0
-
#include <boost/lambda/lambda.hpp>
+#include <boost/lambda/bind.hpp>
+namespace ll = boost::lambda;
-using namespace boost;
-
-//#define NDN_DUMP_FIB 0
namespace ns3 {
@@ -107,7 +103,7 @@
"Update status can be performed only on existing faces of CcxnFibEntry");
m_faces.modify (record,
- bind (&CcnxFibFaceMetric::UpdateRtt, lambda::_1, sample));
+ ll::bind (&CcnxFibFaceMetric::UpdateRtt, ll::_1, sample));
// reordering random access index same way as by metric index
m_faces.get<i_nth> ().rearrange (m_faces.get<i_metric> ().begin ());
@@ -121,7 +117,7 @@
"Update status can be performed only on existing faces of CcxnFibEntry");
m_faces.modify (record,
- (&lambda::_1)->*&CcnxFibFaceMetric::m_status = status);
+ (&ll::_1)->*&CcnxFibFaceMetric::m_status = status);
// reordering random access index same way as by metric index
m_faces.get<i_nth> ().rearrange (m_faces.get<i_metric> ().begin ());
@@ -141,7 +137,7 @@
else
{
m_faces.modify (record,
- (&lambda::_1)->*&CcnxFibFaceMetric::m_routingCost = metric);
+ (&ll::_1)->*&CcnxFibFaceMetric::m_routingCost = metric);
}
// reordering random access index same way as by metric index
@@ -211,33 +207,37 @@
NS_ASSERT_MSG (face != NULL, "Trying to modify NULL face");
modify (entry,
- bind (&CcnxFibEntry::AddOrUpdateRoutingMetric, lambda::_1, face, metric));
+ ll::bind (&CcnxFibEntry::AddOrUpdateRoutingMetric, ll::_1, face, metric));
return entry;
}
void
-CcnxFib::Delete (const CcnxNameComponents &prefix, Ptr<CcnxFace> face)
+CcnxFib::Remove (const CcnxFibEntry &entry, Ptr<CcnxFace> face)
{
- NS_LOG_FUNCTION (this << prefix << face);
+ NS_LOG_FUNCTION (this);
- CcnxFibEntryContainer::type::iterator entry = find (prefix);
- if (entry == end ())
- return;
-
- modify (entry,
- bind (&CcnxFibEntry::RemoveFace, _1, face));
- if (entry->m_faces.size () == 0)
+ modify (iterator_to (entry),
+ ll::bind (&CcnxFibEntry::RemoveFace, ll::_1, face));
+ if (entry.m_faces.size () == 0)
{
- erase (entry);
+ erase (iterator_to (entry));
}
}
void
-CcnxFib::DeleteFromAll (Ptr<CcnxFace> face)
+CcnxFib::RemoveFromAll (Ptr<CcnxFace> face)
{
+ NS_LOG_FUNCTION (this);
+
+ for_each (begin (), end (), ll::bind (&CcnxFib::Remove, this, ll::_1, face));
+ // BOOST_FOREACH (const CcnxFibEntry &entry, *this)
+ // {
+ // Remove (entry, face);
+ // }
}
+
std::ostream& operator<< (std::ostream& os, const CcnxFib &fib)
{
os << "Node " << Names::FindName (fib.m_node) << "\n";
diff --git a/model/ccnx-fib.h b/model/ccnx-fib.h
index 84d618d..3e7807b 100644
--- a/model/ccnx-fib.h
+++ b/model/ccnx-fib.h
@@ -193,6 +193,15 @@
*/
const CcnxFibFaceMetric &
FindBestCandidate (uint32_t skip = 0) const;
+
+ /**
+ * @brief Remove record associated with `face`
+ */
+ void
+ RemoveFace (const Ptr<CcnxFace> &face)
+ {
+ m_faces.erase (face);
+ }
private:
friend std::ostream& operator<< (std::ostream& os, const CcnxFibEntry &entry);
@@ -278,18 +287,18 @@
Add (const CcnxNameComponents &prefix, Ptr<CcnxFace> face, int32_t metric);
/**
- * @brief Remove reference to a face from the entry for `prefix`. If entry had only this face, the whole
+ * @brief Remove reference to a face from the entry. If entry had only this face, the whole
* entry will be removed
*/
void
- Delete (const CcnxNameComponents &prefix, Ptr<CcnxFace> face);
+ Remove (const CcnxFibEntry &entry, Ptr<CcnxFace> face);
/**
* @brief Remove all references to a face from FIB. If for some enty that face was the only element,
* this FIB entry will be removed.
*/
void
- DeleteFromAll (Ptr<CcnxFace> face);
+ RemoveFromAll (Ptr<CcnxFace> face);
protected:
// inherited from Object class
diff --git a/model/ccnx-flooding-strategy.cc b/model/ccnx-flooding-strategy.cc
index 1fa7a93..52231b4 100644
--- a/model/ccnx-flooding-strategy.cc
+++ b/model/ccnx-flooding-strategy.cc
@@ -23,7 +23,11 @@
#include "ns3/log.h"
#include "ccnx-interest-header.h"
+#include <boost/ref.hpp>
#include <boost/foreach.hpp>
+#include <boost/lambda/lambda.hpp>
+#include <boost/lambda/bind.hpp>
+namespace ll = boost::lambda;
NS_LOG_COMPONENT_DEFINE ("CcnxFloodingStrategy");
@@ -65,16 +69,21 @@
if (pitEntry.m_outgoing.find (metricFace.m_face) != pitEntry.m_outgoing.end ()) // already forwarded before
continue;
- bool faceAvailable = metricFace.m_face->SendWithLimit (packet->Copy ());
+ bool faceAvailable = metricFace.m_face->IsBelowLimit ();
if (!faceAvailable) // huh...
continue;
m_pit->modify (m_pit->iterator_to (pitEntry),
- bind(&CcnxPitEntry::AddOutgoing, lambda::_1, metricFace.m_face));
-
+ ll::bind(&CcnxPitEntry::AddOutgoing, ll::_1, metricFace.m_face));
+
+ // NS_LOG_DEBUG ("new outgoing entry for " << boost::cref (*metricFace.m_face));
+
+ metricFace.m_face->Send (packet->Copy ());
+
propagatedCount++;
}
+ NS_LOG_INFO ("Propagated to " << propagatedCount << " faces");
return propagatedCount > 0;
}
diff --git a/model/ccnx-l3-protocol.cc b/model/ccnx-l3-protocol.cc
index 1d4c548..e0e12c2 100644
--- a/model/ccnx-l3-protocol.cc
+++ b/model/ccnx-l3-protocol.cc
@@ -64,7 +64,8 @@
.AddAttribute ("BucketLeakInterval",
"Interval to leak buckets",
StringValue ("10ms"),
- MakeTimeAccessor (&CcnxPit::GetBucketLeakInterval, &CcnxPit::SetBucketLeakInterval),
+ MakeTimeAccessor (&CcnxL3Protocol::GetBucketLeakInterval,
+ &CcnxL3Protocol::SetBucketLeakInterval),
MakeTimeChecker ())
;
return tid;
@@ -144,7 +145,7 @@
{
NS_LOG_FUNCTION (this);
m_forwardingStrategy = forwardingStrategy;
- // m_forwardingStrategy->SetCcnx (this);
+ m_forwardingStrategy->SetPit (m_pit);
}
Ptr<CcnxForwardingStrategy>
@@ -158,7 +159,6 @@
{
NS_LOG_FUNCTION (this << &face);
- face->SetNode (m_node);
face->SetId (m_faceCounter); // sets a unique ID of the face. This ID serves only informational purposes
// ask face to register in lower-layer stack
@@ -176,16 +176,16 @@
face->RegisterProtocolHandler (MakeNullCallback<void,const Ptr<CcnxFace>&,const Ptr<const Packet>&> ());
// just to be on a safe side. Do the process in two steps
- list<CcnxPitEntryContainer::type::iterator> entriesToRemoves;
+ std::list<CcnxPitEntryContainer::type::iterator> entriesToRemoves;
BOOST_FOREACH (const CcnxPitEntry &pitEntry, *m_pit)
{
m_pit->modify (m_pit->iterator_to (pitEntry),
- ll::bind (CcnxPitEntry::RemoveAllReferencesToFace, ll::_1, face));
+ ll::bind (&CcnxPitEntry::RemoveAllReferencesToFace, ll::_1, face));
// If this face is the only for the associated FIB entry, then FIB entry will be removed soon.
// Thus, we have to remove the whole PIT entry
- if (m_pit->m_fibEntry.size () == 1 &&
- m_pit->m_fibEntry.m_faces.begin ()->m_face == face)
+ if (pitEntry.m_fibEntry.m_faces.size () == 1 &&
+ pitEntry.m_fibEntry.m_faces.begin ()->m_face == face)
{
entriesToRemoves.push_back (m_pit->iterator_to (pitEntry));
}
@@ -330,7 +330,7 @@
// {
// header->SetNonce(it->m_nonce);
// header->SetNack(true);
- // face.m_face->SendWithoutLimit (packet->Copy());
+ // face.m_face->Send (packet->Copy());
// }
// }
// }
@@ -373,7 +373,7 @@
Ptr<Packet> packet = Create<Packet> ();
packet->AddHeader (*header);
- incomingFace->SendWithoutLimit (packet);
+ incomingFace->Send (packet);
// //Trace duplicate interest
// m_droppedInterestsTrace (header, NDN_DUPLICATE_INTEREST, m_node->GetObject<Ccnx> (), incomingFace);
@@ -391,7 +391,7 @@
// TransmittedDataTrace (contentObject, CACHED,
// m_node->GetObject<Ccnx> (), incomingFace);
- incomingFace->SendWithoutLimit (contentObject);
+ incomingFace->Send (contentObject);
// Set pruning timout on PIT entry (instead of deleting the record)
m_pit->modify (m_pit->iterator_to (pitEntry),
@@ -462,7 +462,7 @@
BOOST_FOREACH (const CcnxPitEntryIncomingFace &incoming, pitEntry.m_incoming)
{
- incoming.m_face->SendWithoutLimit (packet->Copy ());
+ incoming.m_face->Send (packet->Copy ());
// m_droppedInterestsTrace (header, DROP_CONGESTION,
// m_node->GetObject<Ccnx> (), incomingFace);
@@ -479,10 +479,11 @@
}
// Processing ContentObjects
-void CcnxL3Protocol::OnData (const Ptr<CcnxFace> &incomingFace,
- Ptr<CcnxContentObjectHeader> &header,
- Ptr<Packet> &payload,
- const Ptr<const Packet> &packet)
+void
+CcnxL3Protocol::OnData (const Ptr<CcnxFace> &incomingFace,
+ Ptr<CcnxContentObjectHeader> &header,
+ Ptr<Packet> &payload,
+ const Ptr<const Packet> &packet)
{
NS_LOG_FUNCTION (incomingFace << header << payload << packet);
@@ -494,14 +495,6 @@
const CcnxPitEntry &pitEntry = m_pit->Lookup (*header);
// Note that with MultiIndex we need to modify entries indirectly
-
- // Update metric status for the incoming interface in the corresponding FIB entry
- m_fib->modify (m_fib->iterator_to (pitEntry.m_fibEntry),
- ll::bind (&CcnxFibEntry::UpdateStatus, ll::_1,
- incomingFace, CcnxFibFaceMetric::NDN_FIB_GREEN));
-
- // Add or update entry in the content store
- m_contentStore->Add (header, payload);
CcnxPitEntryOutgoingFaceContainer::type::iterator out = pitEntry.m_outgoing.find (incomingFace);
@@ -510,9 +503,9 @@
{
m_fib->modify (m_fib->iterator_to (pitEntry.m_fibEntry),
ll::bind (&CcnxFibEntry::UpdateFaceRtt,
- ll::_1,
- incomingFace,
- Simulator::Now () - out->m_sendTime));
+ ll::_1,
+ incomingFace,
+ Simulator::Now () - out->m_sendTime));
}
else
{
@@ -521,16 +514,25 @@
NS_LOG_ERROR ("Node "<< m_node->GetId() <<
". PIT entry for "<< header->GetName ()<<" is valid, "
- "but outgoing entry for interface "<< incomingFace <<" doesn't exist\n");
+ "but outgoing entry for interface "<< boost::cref(*incomingFace) <<" doesn't exist\n");
- NS_ASSERT (false); // temporary put false here
+ // ignore unsolicited data
+ return;
}
+ // Update metric status for the incoming interface in the corresponding FIB entry
+ m_fib->modify (m_fib->iterator_to (pitEntry.m_fibEntry),
+ ll::bind (&CcnxFibEntry::UpdateStatus, ll::_1,
+ incomingFace, CcnxFibFaceMetric::NDN_FIB_GREEN));
+
+ // Add or update entry in the content store
+ m_contentStore->Add (header, payload);
+
//satisfy all pending incoming Interests
BOOST_FOREACH (const CcnxPitEntryIncomingFace &incoming, pitEntry.m_incoming)
{
if (incoming.m_face != incomingFace)
- incoming.m_face->SendWithoutLimit (packet->Copy ());
+ incoming.m_face->Send (packet->Copy ());
// successfull forwarded data trace
}
@@ -573,7 +575,7 @@
}
void
-CcnxPit::LeakBuckets ()
+CcnxL3Protocol::LeakBuckets ()
{
BOOST_FOREACH (const Ptr<CcnxFace> &face, m_faces)
{
diff --git a/model/ccnx-local-face.cc b/model/ccnx-local-face.cc
index 4a7c777..0f8ef27 100644
--- a/model/ccnx-local-face.cc
+++ b/model/ccnx-local-face.cc
@@ -28,6 +28,8 @@
#include "ns3/assert.h"
#include "ns3/ccnx-header-helper.h"
+#include "ns3/ccnx-app.h"
+
#include "ccnx-interest-header.h"
#include "ccnx-content-object-header.h"
@@ -37,12 +39,12 @@
{
CcnxLocalFace::CcnxLocalFace (Ptr<CcnxApp> app)
- : CcnxFace (app->GetObject<Node> ())
+ : CcnxFace (app->GetNode ())
, m_app (app)
{
NS_LOG_FUNCTION (this << app);
- NS_ASSERT (app != 0);
+ NS_ASSERT (m_app != 0);
}
CcnxLocalFace::~CcnxLocalFace ()
@@ -53,11 +55,11 @@
void
CcnxLocalFace::RegisterProtocolHandler (ProtocolHandler handler)
{
- NS_LOG_FUNCTION (this << handler);
+ NS_LOG_FUNCTION (this);
CcnxFace::RegisterProtocolHandler (handler);
- app->RegisterProtocolHandler (MakeCallback (&CcnxFace::Receive, this));
+ m_app->RegisterProtocolHandler (MakeCallback (&CcnxFace::Receive, this));
}
void
@@ -71,23 +73,27 @@
switch (type)
{
case CcnxHeaderHelper::INTEREST:
- if (!m_onInterest.IsNull ())
- {
- Ptr<CcnxInterestHeader> header = Create<CcnxInterestHeader> ();
- p->RemoveHeader (*header);
- app->OnInterest (header);
- }
- break;
+ {
+ Ptr<CcnxInterestHeader> header = Create<CcnxInterestHeader> ();
+ p->RemoveHeader (*header);
+
+ if (header->GetNack () > 0)
+ m_app->OnNack (header);
+ else
+ m_app->OnInterest (header);
+
+ break;
+ }
case CcnxHeaderHelper::CONTENT_OBJECT:
- if (!m_onContentObject.IsNull ())
- {
- static CcnxContentObjectTail tail;
- Ptr<CcnxContentObjectHeader> header = Create<CcnxContentObjectHeader> ();
- p->RemoveHeader (*header);
- p->RemoveTrailer (tail);
- app->OnContentObject (header, p/*payload*/);
- }
- break;
+ {
+ static CcnxContentObjectTail tail;
+ Ptr<CcnxContentObjectHeader> header = Create<CcnxContentObjectHeader> ();
+ p->RemoveHeader (*header);
+ p->RemoveTrailer (tail);
+ m_app->OnContentObject (header, p/*payload*/);
+
+ break;
+ }
}
}
catch (CcnxUnknownHeaderException)
diff --git a/model/ccnx-local-face.h b/model/ccnx-local-face.h
index a7705ed..c8c4515 100644
--- a/model/ccnx-local-face.h
+++ b/model/ccnx-local-face.h
@@ -30,6 +30,7 @@
class CcnxInterestHeader;
class CcnxContentObjectHeader;
class Packet;
+class CcnxApp;
/**
* \ingroup ccnx-face
@@ -69,7 +70,7 @@
CcnxLocalFace& operator= (const CcnxLocalFace &); ///< \brief Disabled copy operator
private:
- Ptr<CcnxApp> m_application;
+ Ptr<CcnxApp> m_app;
};
std::ostream& operator<< (std::ostream& os, const CcnxLocalFace &localFace);
diff --git a/model/ccnx-name-components.h b/model/ccnx-name-components.h
index 5dafcfc..fdffe91 100644
--- a/model/ccnx-name-components.h
+++ b/model/ccnx-name-components.h
@@ -119,6 +119,13 @@
return *this;
}
+// template<>
+// void
+// CcnxNameComponents::Add (const std::string &string)
+// {
+// m_prefix.push_back (string);
+// }
+
template<class T>
void
CcnxNameComponents::Add (const T &value)
@@ -128,13 +135,6 @@
m_prefix.push_back (os.str ());
}
-template<class T=std::string>
-void
-CcnxNameComponents::Add (const T &string)
-{
- m_prefix.push_back (string);
-}
-
bool
CcnxNameComponents::operator== (const CcnxNameComponents &prefix) const
{
diff --git a/model/ccnx-net-device-face.cc b/model/ccnx-net-device-face.cc
index 72aa14a..dff7694 100644
--- a/model/ccnx-net-device-face.cc
+++ b/model/ccnx-net-device-face.cc
@@ -50,10 +50,6 @@
NS_LOG_FUNCTION_NOARGS ();
}
-CcnxNetDeviceFace::CcnxNetDeviceFace (const CcnxNetDeviceFace &)
-{
-}
-
CcnxNetDeviceFace& CcnxNetDeviceFace::operator= (const CcnxNetDeviceFace &)
{
return *this;
@@ -68,7 +64,7 @@
void
CcnxNetDeviceFace::RegisterProtocolHandler (ProtocolHandler handler)
{
- NS_LOG_FUNCTION (this << handler);
+ NS_LOG_FUNCTION (this);
CcnxFace::RegisterProtocolHandler (handler);
@@ -77,7 +73,7 @@
}
void
-CcnxNetDeviceFace::Send (Ptr<Packet> packet)
+CcnxNetDeviceFace::SendImpl (Ptr<Packet> packet)
{
NS_LOG_FUNCTION (this << packet);
diff --git a/model/ccnx-pit-entry.cc b/model/ccnx-pit-entry.cc
index cd6d854..a4db50a 100644
--- a/model/ccnx-pit-entry.cc
+++ b/model/ccnx-pit-entry.cc
@@ -38,12 +38,6 @@
{
}
-const CcnxNameComponents &
-CcnxPitEntry::GetPrefix () const
-{
- return *m_prefix;
-}
-
CcnxPitEntryIncomingFaceContainer::type::iterator
CcnxPitEntry::AddIncoming (Ptr<CcnxFace> face)
{
diff --git a/model/ccnx-pit-entry.h b/model/ccnx-pit-entry.h
index 52e7921..9f05e1e 100644
--- a/model/ccnx-pit-entry.h
+++ b/model/ccnx-pit-entry.h
@@ -108,8 +108,11 @@
// // Get number of outgoing interests that we're expecting data from
// inline size_t numberOfPromisingInterests( ) const;
- // const CcnxNameComponents &
- // GetPrefix () const;
+ const CcnxNameComponents &
+ GetPrefix () const
+ {
+ return *m_prefix;
+ }
/**
* @brief Get current expiration time of the record
diff --git a/model/ccnx-pit.cc b/model/ccnx-pit.cc
index 63e1db8..9770bd0 100644
--- a/model/ccnx-pit.cc
+++ b/model/ccnx-pit.cc
@@ -86,9 +86,6 @@
if (m_cleanupEvent.IsRunning ())
m_cleanupEvent.Cancel ();
- if (m_PitBucketLeakEvent.IsRunning ())
- m_PitBucketLeakEvent.Cancel ();
-
clear ();
}