More progress on CCNx stack. Now we have helpers. Everything compiles, but not yet working
diff --git a/model/ccnx-l3-protocol.h b/model/ccnx-l3-protocol.h
index d45f0b3..3af0c9a 100644
--- a/model/ccnx-l3-protocol.h
+++ b/model/ccnx-l3-protocol.h
@@ -1,4 +1,4 @@
-// -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*-
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
//
// Copyright (c) 2006 Georgia Tech Research Corporation
//
@@ -26,20 +26,19 @@
#include <stdint.h>
#include "ns3/ptr.h"
#include "ns3/net-device.h"
-#include "ns3/ccnx.h"
#include "ns3/traced-callback.h"
+#include "ccnx.h"
+
namespace ns3 {
class Packet;
class NetDevice;
-class CcnxInterface;
-class CcnxRoute;
class Node;
-class Socket;
+class CcnxFace;
+class CcnxRoute;
class CcnxForwardingProtocol;
-
/**
* \brief Implement the Ccnx layer.
*
@@ -96,7 +95,7 @@
* \param to lower layer address of the destination
* \param packetType type of the packet (broadcast/multicast/unicast/otherhost)
*/
- void Receive (Ptr<NetDevice> device, Ptr<const Packet> p, uint16_t protocol,
+ void ReceiveFromLower (Ptr<NetDevice> device, Ptr<const Packet> p, uint16_t protocol,
const Address &from,
const Address &to,
NetDevice::PacketType packetType);
@@ -104,7 +103,7 @@
/**
* Actual processing of incoming CCNx packets. Also processing packets coming from local apps
*/
- void Receive (Ptr<CcnxFace> face, Ptr<const Packet> p);
+ void ReceiveAndProcess (Ptr<CcnxFace> face, Ptr<Packet> p);
/**
* \param packet packet to send
@@ -117,7 +116,7 @@
virtual uint32_t AddFace (Ptr<CcnxFace> face);
virtual uint32_t GetNFaces (void) const;
- virtual Ptr<CcnxFace> GetFace (uint32_t face);
+ virtual Ptr<CcnxFace> GetFace (uint32_t face) const;
virtual void SetMetric (uint32_t i, uint16_t metric);
virtual uint16_t GetMetric (uint32_t i) const;
@@ -144,24 +143,25 @@
*/
Ptr<CcnxFace> GetFaceForDevice (Ptr<const NetDevice> device) const;
- void RouteInputError (Ptr<const Packet> p, const CcnxHeader & ipHeader, Socket::SocketErrno sockErrno);
+ void RouteInputError (Ptr<Packet> p);
+ //, Socket::SocketErrno sockErrno);
private:
typedef std::vector<Ptr<CcnxFace> > CcnxFaceList;
CcnxFaceList m_faces;
Ptr<Node> m_node;
- // Ptr<CcnxForwardingProtocol> m_forwardingProtocol;
+ Ptr<CcnxForwardingProtocol> m_forwardingProtocol;
- TracedCallback<const CcnxHeader &, Ptr<const Packet>, uint32_t> m_sendOutgoingTrace;
- TracedCallback<const CcnxHeader &, Ptr<const Packet>, uint32_t> m_unicastForwardTrace;
- TracedCallback<const CcnxHeader &, Ptr<const Packet>, uint32_t> m_localDeliverTrace;
+ TracedCallback<Ptr<const Packet>, Ptr<const CcnxFace> > m_sendOutgoingTrace;
+ TracedCallback<Ptr<const Packet>, Ptr<const CcnxFace> > m_unicastForwardTrace;
+ TracedCallback<Ptr<const Packet>, Ptr<const CcnxFace> > m_localDeliverTrace;
// The following two traces pass a packet with an IP header
- TracedCallback<Ptr<const Packet>, Ptr<Ccnx>, uint32_t> m_txTrace;
- TracedCallback<Ptr<const Packet>, Ptr<Ccnx>, uint32_t> m_rxTrace;
+ TracedCallback<Ptr<const Packet>, Ptr<Ccnx>, Ptr<const CcnxFace> > m_txTrace;
+ TracedCallback<Ptr<const Packet>, Ptr<Ccnx>, Ptr<const CcnxFace> > m_rxTrace;
// <ip-header, payload, reason, ifindex> (ifindex not valid if reason is DROP_NO_ROUTE)
- TracedCallback<const CcnxHeader &, Ptr<const Packet>, DropReason, Ptr<Ccnx>, uint32_t> m_dropTrace;
+ TracedCallback<Ptr<const Packet>, DropReason, Ptr<const Ccnx>, Ptr<const CcnxFace> > m_dropTrace;
};
} // Namespace ns3