First step of refactoring code (ccnx prefix => ndn prefix)
diff --git a/model/ndn-l3-protocol.h b/model/ndn-l3-protocol.h
new file mode 100644
index 0000000..3b1897d
--- /dev/null
+++ b/model/ndn-l3-protocol.h
@@ -0,0 +1,187 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#ifndef NDN_L3_PROTOCOL_H
+#define NDN_L3_PROTOCOL_H
+
+#include <list>
+#include <vector>
+
+#include "ns3/ptr.h"
+#include "ns3/net-device.h"
+#include "ns3/nstime.h"
+
+// #include "ndn-content-store.h"
+// #include "ndn-pit.h"
+// #include "ndn-fib.h"
+
+#include "ndn.h"
+
+namespace ns3 {
+
+class Packet;
+class NetDevice;
+class Node;
+class NdnFace;
+class NdnRoute;
+class NdnForwardingStrategy;
+class Header;
+class NdnInterestHeader;
+class NdnContentObjectHeader;
+
+    
+/**
+ * \ingroup ndn
+ * \brief Actual implementation of the Ndn network layer
+ * 
+ * \todo This description is incorrect. Should be changed accordingly
+ *
+ * This class contains two distinct groups of trace sources.  The
+ * trace sources 'Rx' and 'Tx' are called, respectively, immediately
+ * after receiving from the NetDevice and immediately before sending
+ * to a NetDevice for transmitting a packet.  These are low level
+ * trace sources that include the NdnHeader already serialized into
+ * the packet.  In contrast, the Drop, SendOutgoing, UnicastForward,
+ * and LocalDeliver trace sources are slightly higher-level and pass
+ * around the NdnHeader as an explicit parameter and not as part of
+ * the packet.
+ */
+class NdnL3Protocol : public Ndn
+{
+public:
+  /**
+   * \brief Interface ID
+   *
+   * \return interface ID
+   */
+  static TypeId GetTypeId ();
+
+  static const uint16_t ETHERNET_FRAME_TYPE; ///< \brief Ethernet Frame Type of Ndn
+  // static const uint16_t IP_PROTOCOL_TYPE;    ///< \brief IP protocol type of Ndn
+  // static const uint16_t UDP_PORT;            ///< \brief UDP port of Ndn
+
+  /**
+   * \brief Default constructor. Creates an empty stack without forwarding strategy set
+   */
+  NdnL3Protocol();
+  virtual ~NdnL3Protocol ();
+
+  ////////////////////////////////////////////////////////////////////
+  // functions defined in base class Ndn
+
+  virtual uint32_t
+  AddFace (const Ptr<NdnFace> &face);
+  
+  virtual uint32_t
+  GetNFaces () const;
+  
+  virtual Ptr<NdnFace>
+  GetFace (uint32_t face) const;
+
+  virtual void
+  RemoveFace (Ptr<NdnFace> face);
+
+  virtual Ptr<NdnFace>
+  GetFaceByNetDevice (Ptr<NetDevice> netDevice) const;
+  
+  // void ScheduleLeakage();
+private:
+  void
+  Receive (const Ptr<NdnFace> &face, const Ptr<const Packet> &p);
+
+  // /**
+  //  * \brief Actual processing of incoming Ndn interests. Note, interests do not have payload
+  //  * 
+  //  * Processing Interest packets
+  //  * @param face    incoming face
+  //  * @param header  deserialized Interest header
+  //  * @param packet  original packet
+  //  */
+  // void
+  // OnInterest (const Ptr<NdnFace> &face,
+  //             Ptr<NdnInterestHeader> &header,
+  //             const Ptr<const Packet> &p);
+
+  // /**
+  //  * \brief Processing of incoming Ndn NACKs. Note, these packets, like interests, do not have payload
+  //  * 
+  //  * Processing NACK packets
+  //  * @param face    incoming face
+  //  * @param header  deserialized Interest header
+  //  * @param packet  original packet
+  //  */
+  // void
+  // OnNack (const Ptr<NdnFace> &face,
+  //         Ptr<NdnInterestHeader> &header,
+  //         const Ptr<const Packet> &p);
+  
+  // /**
+  //  * \brief Actual processing of incoming Ndn content objects
+  //  * 
+  //  * Processing ContentObject packets
+  //  * @param face    incoming face
+  //  * @param header  deserialized ContentObject header
+  //  * @param payload data packet payload
+  //  * @param packet  original packet
+  //  */
+  // void
+  // OnData (const Ptr<NdnFace> &face,
+  //         Ptr<NdnContentObjectHeader> &header,
+  //         Ptr<Packet> &payload,
+  //         const Ptr<const Packet> &packet);
+
+protected:
+  virtual void DoDispose (void); ///< @brief Do cleanup
+
+  /**
+   * This function will notify other components connected to the node that a new stack member is now connected
+   * This will be used to notify Layer 3 protocol of layer 4 protocol stack to connect them together.
+   */
+  virtual void NotifyNewAggregate ();
+
+private:
+  NdnL3Protocol(const NdnL3Protocol &); ///< copy constructor is disabled
+  NdnL3Protocol &operator = (const NdnL3Protocol &); ///< copy operator is disabled
+
+  // void
+  // GiveUpInterest (Ptr<NdnPitEntry> pitEntry,
+  //                 Ptr<NdnInterestHeader> header);
+
+  // void
+  // OnDataDelayed (Ptr<const NdnContentObjectHeader> header,
+  //                Ptr<const Packet> payload,
+  //                const Ptr<const Packet> &packet);
+  
+private:
+  uint32_t m_faceCounter; ///< \brief counter of faces. Increased every time a new face is added to the stack
+  typedef std::vector<Ptr<NdnFace> > NdnFaceList;
+  NdnFaceList m_faces; ///< \brief list of faces that belongs to ndn stack on this node
+
+  // These objects are aggregated, but for optimization, get them here
+  Ptr<Node> m_node; ///< \brief node on which ndn stack is installed
+  Ptr<NdnForwardingStrategy> m_forwardingStrategy; ///< \brief smart pointer to the selected forwarding strategy
+
+  // bool m_nacksEnabled;
+  // bool m_cacheUnsolicitedData;
+};
+  
+} // Namespace ns3
+
+#endif /* NDN_L3_PROTOCOL_H */