diff --git a/model/fw/ndn-forwarding-strategy.cc b/model/fw/ndn-forwarding-strategy.cc
index 390bdd1..b3e7940 100644
--- a/model/fw/ndn-forwarding-strategy.cc
+++ b/model/fw/ndn-forwarding-strategy.cc
@@ -347,7 +347,7 @@
       if (ok)
         {
           m_outData (header, payload, inFace == 0, incoming.m_face);
-          DidSendOutData (incoming.m_face, header, payload, origPacket, pitEntry);
+          DidSendOutData (inFace, incoming.m_face, header, payload, origPacket, pitEntry);
           
           NS_LOG_DEBUG ("Satisfy " << *incoming.m_face);
         }
@@ -521,13 +521,14 @@
   Ptr<Packet> packetToSend = origPacket->Copy ();
   outFace->Send (packetToSend);
 
-  DidSendOutInterest (outFace, header, origPacket, pitEntry);
+  DidSendOutInterest (inFace, outFace, header, origPacket, pitEntry);
 
   return true;
 }
 
 void
-ForwardingStrategy::DidSendOutInterest (Ptr<Face> outFace,
+ForwardingStrategy::DidSendOutInterest (Ptr<Face> inFace,
+                                        Ptr<Face> outFace,
                                         Ptr<const InterestHeader> header,
                                         Ptr<const Packet> origPacket,
                                         Ptr<pit::Entry> pitEntry)
@@ -536,7 +537,8 @@
 }
 
 void
-ForwardingStrategy::DidSendOutData (Ptr<Face> outFace,
+ForwardingStrategy::DidSendOutData (Ptr<Face> inFace,
+                                    Ptr<Face> outFace,
                                     Ptr<const ContentObjectHeader> header,
                                     Ptr<const Packet> payload,
                                     Ptr<const Packet> origPacket,
diff --git a/model/fw/ndn-forwarding-strategy.h b/model/fw/ndn-forwarding-strategy.h
index cd0d041..d3b5c37 100644
--- a/model/fw/ndn-forwarding-strategy.h
+++ b/model/fw/ndn-forwarding-strategy.h
@@ -274,6 +274,7 @@
   /**
    * @brief Event which is fired just after data was send out on the face
    *
+   * @param inFace     incoming face of the ContentObject
    * @param outFace  outgoing face
    * @param header  deserialized ContentObject header
    * @param payload ContentObject payload
@@ -281,7 +282,8 @@
    * @param pitEntry an existing PIT entry, corresponding to the duplicated Interest
    */
   virtual void
-  DidSendOutData (Ptr<Face> outFace,
+  DidSendOutData (Ptr<Face> inFace,
+                  Ptr<Face> outFace,
                   Ptr<const ContentObjectHeader> header,
                   Ptr<const Packet> payload,
                   Ptr<const Packet> origPacket,
@@ -369,13 +371,15 @@
   /**
    * @brief Event fired just after forwarding the Interest
    *
+   * @param inFace     incoming face of the Interest
    * @param outFace    outgoing face of the Interest
    * @param header     parsed Interest header
    * @param origPacket original Interest packet
    * @param pitEntry   reference to PIT entry (reference to corresponding FIB entry inside)
    */
   virtual void
-  DidSendOutInterest (Ptr<Face> outFace,
+  DidSendOutInterest (Ptr<Face> inFace,
+                      Ptr<Face> outFace,
                       Ptr<const InterestHeader> header,
                       Ptr<const Packet> origPacket,
                       Ptr<pit::Entry> pitEntry);
