model+cs: Now it is possible to get pointer to ContentStore from cs::Entry

In some cases it is desirable to know which ContentStore (=on which
Node) a particular cs::Entry belongs to.  Now it is possible to
accomplish this task using cs::Entry::GetContentStore method.
diff --git a/bindings/modulegen__gcc_ILP32.py b/bindings/modulegen__gcc_ILP32.py
index bf1a2af..323ad58 100644
--- a/bindings/modulegen__gcc_ILP32.py
+++ b/bindings/modulegen__gcc_ILP32.py
@@ -90,6 +90,8 @@
     module.add_class('RandomVariable', import_from_module='ns.core')
     ## rng-seed-manager.h (module 'core'): ns3::RngSeedManager [class]
     module.add_class('RngSeedManager', import_from_module='ns.core')
+    ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned int, int> [class]
+    module.add_class('SequenceNumber32', import_from_module='ns.network')
     ## random-variable.h (module 'core'): ns3::SequentialVariable [class]
     module.add_class('SequentialVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariable'])
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
@@ -98,6 +100,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## traced-value.h (module 'core'): ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status> [class]
+    module.add_class('TracedValue', template_parameters=['ns3::ndn::fib::FaceMetric::Status'])
     ## random-variable.h (module 'core'): ns3::TriangularVariable [class]
     module.add_class('TriangularVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariable'])
     ## type-id.h (module 'core'): ns3::TypeId [class]
@@ -278,6 +282,12 @@
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
     module.add_container('std::map< std::string, std::string >', ('std::string', 'std::string'), container_type='map')
     module.add_container('std::list< ns3::TopologyReader::Link >', 'ns3::TopologyReader::Link', container_type='list')
+    typehandlers.add_type_alias('ns3::SequenceNumber< short unsigned int, short int >', 'ns3::SequenceNumber16')
+    typehandlers.add_type_alias('ns3::SequenceNumber< short unsigned int, short int >*', 'ns3::SequenceNumber16*')
+    typehandlers.add_type_alias('ns3::SequenceNumber< short unsigned int, short int >&', 'ns3::SequenceNumber16&')
+    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >', 'ns3::SequenceNumber32')
+    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >*', 'ns3::SequenceNumber32*')
+    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >&', 'ns3::SequenceNumber32&')
     typehandlers.add_type_alias('ns3::RngSeedManager', 'ns3::SeedManager')
     typehandlers.add_type_alias('ns3::RngSeedManager*', 'ns3::SeedManager*')
     typehandlers.add_type_alias('ns3::RngSeedManager&', 'ns3::SeedManager&')
@@ -364,6 +374,10 @@
     module.add_class('NetDeviceFace', parent=root_module['ns3::ndn::Face'])
     ## ndn-pit.h (module 'ndnSIM'): ns3::ndn::Pit [class]
     module.add_class('Pit', parent=root_module['ns3::Object'])
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttEstimator [class]
+    module.add_class('RttEstimator', parent=root_module['ns3::Object'])
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttHistory [class]
+    module.add_class('RttHistory')
     ## ndn-stack-helper.h (module 'ndnSIM'): ns3::ndn::StackHelper [class]
     module.add_class('StackHelper')
     ## ndn-header-helper.h (module 'ndnSIM'): ns3::ndn::UnknownHeaderException [class]
@@ -373,6 +387,9 @@
     module.add_container('std::vector< ns3::Ptr< ns3::ndn::Face > >', 'ns3::Ptr< ns3::ndn::Face >', container_type='vector')
     module.add_container('std::list< boost::reference_wrapper< std::string const > >', 'boost::reference_wrapper< std::basic_string< char, std::char_traits< char >, std::allocator< char > > const >', container_type='list')
     module.add_container('std::list< std::string >', 'std::string', container_type='list')
+    typehandlers.add_type_alias('std::deque< ns3::ndn::RttHistory, std::allocator< ns3::ndn::RttHistory > >', 'ns3::ndn::RttHistory_t')
+    typehandlers.add_type_alias('std::deque< ns3::ndn::RttHistory, std::allocator< ns3::ndn::RttHistory > >*', 'ns3::ndn::RttHistory_t*')
+    typehandlers.add_type_alias('std::deque< ns3::ndn::RttHistory, std::allocator< ns3::ndn::RttHistory > >&', 'ns3::ndn::RttHistory_t&')
     
     ## Register a nested module for the namespace cs
     
@@ -481,10 +498,12 @@
     register_Ns3PacketTagListTagData_methods(root_module, root_module['ns3::PacketTagList::TagData'])
     register_Ns3RandomVariable_methods(root_module, root_module['ns3::RandomVariable'])
     register_Ns3RngSeedManager_methods(root_module, root_module['ns3::RngSeedManager'])
+    register_Ns3SequenceNumber32_methods(root_module, root_module['ns3::SequenceNumber32'])
     register_Ns3SequentialVariable_methods(root_module, root_module['ns3::SequentialVariable'])
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TracedValue__Ns3NdnFibFaceMetricStatus_methods(root_module, root_module['ns3::TracedValue< ns3::ndn::fib::FaceMetric::Status >'])
     register_Ns3TriangularVariable_methods(root_module, root_module['ns3::TriangularVariable'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
@@ -593,6 +612,8 @@
     register_Ns3NdnNameValue_methods(root_module, root_module['ns3::ndn::NameValue'])
     register_Ns3NdnNetDeviceFace_methods(root_module, root_module['ns3::ndn::NetDeviceFace'])
     register_Ns3NdnPit_methods(root_module, root_module['ns3::ndn::Pit'])
+    register_Ns3NdnRttEstimator_methods(root_module, root_module['ns3::ndn::RttEstimator'])
+    register_Ns3NdnRttHistory_methods(root_module, root_module['ns3::ndn::RttHistory'])
     register_Ns3NdnStackHelper_methods(root_module, root_module['ns3::ndn::StackHelper'])
     register_Ns3NdnUnknownHeaderException_methods(root_module, root_module['ns3::ndn::UnknownHeaderException'])
     register_Ns3NdnAppFace_methods(root_module, root_module['ns3::ndn::AppFace'])
@@ -2052,6 +2073,31 @@
                    is_static=True)
     return
 
+def register_Ns3SequenceNumber32_methods(root_module, cls):
+    cls.add_binary_comparison_operator('!=')
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('ns3::SequenceNumber< unsigned int, int > const &', 'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('int', 'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('int', 'right'))
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('<=')
+    cls.add_binary_comparison_operator('==')
+    cls.add_binary_comparison_operator('>')
+    cls.add_binary_comparison_operator('>=')
+    ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned int, int>::SequenceNumber() [constructor]
+    cls.add_constructor([])
+    ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned int, int>::SequenceNumber(unsigned int value) [constructor]
+    cls.add_constructor([param('unsigned int', 'value')])
+    ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned int, int>::SequenceNumber(ns3::SequenceNumber<unsigned int, int> const & value) [copy constructor]
+    cls.add_constructor([param('ns3::SequenceNumber< unsigned int, int > const &', 'value')])
+    ## sequence-number.h (module 'network'): unsigned int ns3::SequenceNumber<unsigned int, int>::GetValue() const [member function]
+    cls.add_method('GetValue', 
+                   'unsigned int', 
+                   [], 
+                   is_const=True)
+    return
+
 def register_Ns3SequentialVariable_methods(root_module, cls):
     ## random-variable.h (module 'core'): ns3::SequentialVariable::SequentialVariable(ns3::SequentialVariable const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::SequentialVariable const &', 'arg0')])
@@ -2168,6 +2214,40 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TracedValue__Ns3NdnFibFaceMetricStatus_methods(root_module, cls):
+    ## traced-value.h (module 'core'): ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status>::TracedValue() [constructor]
+    cls.add_constructor([])
+    ## traced-value.h (module 'core'): ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status>::TracedValue(ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status> const & o) [copy constructor]
+    cls.add_constructor([param('ns3::TracedValue< ns3::ndn::fib::FaceMetric::Status > const &', 'o')])
+    ## traced-value.h (module 'core'): ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status>::TracedValue(ns3::ndn::fib::FaceMetric::Status const & v) [constructor]
+    cls.add_constructor([param('ns3::ndn::fib::FaceMetric::Status const &', 'v')])
+    ## traced-value.h (module 'core'): void ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status>::Connect(ns3::CallbackBase const & cb, std::basic_string<char,std::char_traits<char>,std::allocator<char> > path) [member function]
+    cls.add_method('Connect', 
+                   'void', 
+                   [param('ns3::CallbackBase const &', 'cb'), param('std::string', 'path')])
+    ## traced-value.h (module 'core'): void ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status>::ConnectWithoutContext(ns3::CallbackBase const & cb) [member function]
+    cls.add_method('ConnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase const &', 'cb')])
+    ## traced-value.h (module 'core'): void ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status>::Disconnect(ns3::CallbackBase const & cb, std::basic_string<char,std::char_traits<char>,std::allocator<char> > path) [member function]
+    cls.add_method('Disconnect', 
+                   'void', 
+                   [param('ns3::CallbackBase const &', 'cb'), param('std::string', 'path')])
+    ## traced-value.h (module 'core'): void ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status>::DisconnectWithoutContext(ns3::CallbackBase const & cb) [member function]
+    cls.add_method('DisconnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase const &', 'cb')])
+    ## traced-value.h (module 'core'): ns3::ndn::fib::FaceMetric::Status ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status>::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::ndn::fib::FaceMetric::Status', 
+                   [], 
+                   is_const=True)
+    ## traced-value.h (module 'core'): void ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status>::Set(ns3::ndn::fib::FaceMetric::Status const & v) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::ndn::fib::FaceMetric::Status const &', 'v')])
+    return
+
 def register_Ns3TriangularVariable_methods(root_module, cls):
     ## random-variable.h (module 'core'): ns3::TriangularVariable::TriangularVariable(ns3::TriangularVariable const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::TriangularVariable const &', 'arg0')])
@@ -5218,10 +5298,16 @@
     cls.add_method('AddOriginsForAll', 
                    'void', 
                    [])
-    ## ndn-global-routing-helper.h (module 'ndnSIM'): void ns3::ndn::GlobalRoutingHelper::CalculateRoutes() [member function]
+    ## ndn-global-routing-helper.h (module 'ndnSIM'): static void ns3::ndn::GlobalRoutingHelper::CalculateAllPossibleRoutes() [member function]
+    cls.add_method('CalculateAllPossibleRoutes', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    ## ndn-global-routing-helper.h (module 'ndnSIM'): static void ns3::ndn::GlobalRoutingHelper::CalculateRoutes() [member function]
     cls.add_method('CalculateRoutes', 
                    'void', 
-                   [])
+                   [], 
+                   is_static=True)
     ## ndn-global-routing-helper.h (module 'ndnSIM'): void ns3::ndn::GlobalRoutingHelper::Install(ns3::Ptr<ns3::Node> node) [member function]
     cls.add_method('Install', 
                    'void', 
@@ -5764,6 +5850,105 @@
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
+def register_Ns3NdnRttEstimator_methods(root_module, cls):
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttEstimator::RttEstimator() [constructor]
+    cls.add_constructor([])
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttEstimator::RttEstimator(ns3::ndn::RttEstimator const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ndn::RttEstimator const &', 'arg0')])
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::Time ns3::ndn::RttEstimator::AckSeq(ns3::SequenceNumber32 ackSeq) [member function]
+    cls.add_method('AckSeq', 
+                   'ns3::Time', 
+                   [param('ns3::SequenceNumber32', 'ackSeq')], 
+                   is_virtual=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): void ns3::ndn::RttEstimator::ClearSent() [member function]
+    cls.add_method('ClearSent', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::Ptr<ns3::ndn::RttEstimator> ns3::ndn::RttEstimator::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::ndn::RttEstimator >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::Time ns3::ndn::RttEstimator::GetCurrentEstimate() const [member function]
+    cls.add_method('GetCurrentEstimate', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::Time ns3::ndn::RttEstimator::GetMaxRto() const [member function]
+    cls.add_method('GetMaxRto', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::Time ns3::ndn::RttEstimator::GetMinRto() const [member function]
+    cls.add_method('GetMinRto', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): static ns3::TypeId ns3::ndn::RttEstimator::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): void ns3::ndn::RttEstimator::IncreaseMultiplier() [member function]
+    cls.add_method('IncreaseMultiplier', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): void ns3::ndn::RttEstimator::Measurement(ns3::Time t) [member function]
+    cls.add_method('Measurement', 
+                   'void', 
+                   [param('ns3::Time', 't')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): void ns3::ndn::RttEstimator::Reset() [member function]
+    cls.add_method('Reset', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): void ns3::ndn::RttEstimator::ResetMultiplier() [member function]
+    cls.add_method('ResetMultiplier', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::Time ns3::ndn::RttEstimator::RetransmitTimeout() [member function]
+    cls.add_method('RetransmitTimeout', 
+                   'ns3::Time', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): void ns3::ndn::RttEstimator::SentSeq(ns3::SequenceNumber32 seq, uint32_t size) [member function]
+    cls.add_method('SentSeq', 
+                   'void', 
+                   [param('ns3::SequenceNumber32', 'seq'), param('uint32_t', 'size')], 
+                   is_virtual=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): void ns3::ndn::RttEstimator::SetCurrentEstimate(ns3::Time estimate) [member function]
+    cls.add_method('SetCurrentEstimate', 
+                   'void', 
+                   [param('ns3::Time', 'estimate')])
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): void ns3::ndn::RttEstimator::SetMaxRto(ns3::Time maxRto) [member function]
+    cls.add_method('SetMaxRto', 
+                   'void', 
+                   [param('ns3::Time', 'maxRto')])
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): void ns3::ndn::RttEstimator::SetMinRto(ns3::Time minRto) [member function]
+    cls.add_method('SetMinRto', 
+                   'void', 
+                   [param('ns3::Time', 'minRto')])
+    return
+
+def register_Ns3NdnRttHistory_methods(root_module, cls):
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttHistory::RttHistory(ns3::SequenceNumber32 s, uint32_t c, ns3::Time t) [constructor]
+    cls.add_constructor([param('ns3::SequenceNumber32', 's'), param('uint32_t', 'c'), param('ns3::Time', 't')])
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttHistory::RttHistory(ns3::ndn::RttHistory const & h) [copy constructor]
+    cls.add_constructor([param('ns3::ndn::RttHistory const &', 'h')])
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttHistory::count [variable]
+    cls.add_instance_attribute('count', 'uint32_t', is_const=False)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttHistory::retx [variable]
+    cls.add_instance_attribute('retx', 'bool', is_const=False)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttHistory::seq [variable]
+    cls.add_instance_attribute('seq', 'ns3::SequenceNumber32', is_const=False)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttHistory::time [variable]
+    cls.add_instance_attribute('time', 'ns3::Time', is_const=False)
+    return
+
 def register_Ns3NdnStackHelper_methods(root_module, cls):
     ## ndn-stack-helper.h (module 'ndnSIM'): ns3::ndn::StackHelper::StackHelper() [constructor]
     cls.add_constructor([])
@@ -5881,8 +6066,12 @@
 def register_Ns3NdnCsEntry_methods(root_module, cls):
     ## ndn-content-store.h (module 'ndnSIM'): ns3::ndn::cs::Entry::Entry(ns3::ndn::cs::Entry const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::ndn::cs::Entry const &', 'arg0')])
-    ## ndn-content-store.h (module 'ndnSIM'): ns3::ndn::cs::Entry::Entry(ns3::Ptr<ns3::ndn::ContentObjectHeader const> header, ns3::Ptr<const ns3::Packet> packet) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::ndn::ContentObjectHeader const >', 'header'), param('ns3::Ptr< ns3::Packet const >', 'packet')])
+    ## ndn-content-store.h (module 'ndnSIM'): ns3::ndn::cs::Entry::Entry(ns3::Ptr<ns3::ndn::ContentStore> cs, ns3::Ptr<ns3::ndn::ContentObjectHeader const> header, ns3::Ptr<const ns3::Packet> packet) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::ndn::ContentStore >', 'cs'), param('ns3::Ptr< ns3::ndn::ContentObjectHeader const >', 'header'), param('ns3::Ptr< ns3::Packet const >', 'packet')])
+    ## ndn-content-store.h (module 'ndnSIM'): ns3::Ptr<ns3::ndn::ContentStore> ns3::ndn::cs::Entry::GetContentStore() [member function]
+    cls.add_method('GetContentStore', 
+                   'ns3::Ptr< ns3::ndn::ContentStore >', 
+                   [])
     ## ndn-content-store.h (module 'ndnSIM'): ns3::Ptr<ns3::Packet> ns3::ndn::cs::Entry::GetFullyFormedNdnPacket() const [member function]
     cls.add_method('GetFullyFormedNdnPacket', 
                    'ns3::Ptr< ns3::Packet >', 
@@ -5987,6 +6176,10 @@
                    'ns3::ndn::fib::FaceMetric::Status', 
                    [], 
                    is_const=True)
+    ## ndn-fib-entry.h (module 'ndnSIM'): ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status> & ns3::ndn::fib::FaceMetric::GetStatusTrace() [member function]
+    cls.add_method('GetStatusTrace', 
+                   'ns3::TracedValue< ns3::ndn::fib::FaceMetric::Status > &', 
+                   [])
     ## ndn-fib-entry.h (module 'ndnSIM'): void ns3::ndn::fib::FaceMetric::SetRealDelay(ns3::Time realDelay) [member function]
     cls.add_method('SetRealDelay', 
                    'void', 
diff --git a/bindings/modulegen__gcc_LP64.py b/bindings/modulegen__gcc_LP64.py
index bf1a2af..323ad58 100644
--- a/bindings/modulegen__gcc_LP64.py
+++ b/bindings/modulegen__gcc_LP64.py
@@ -90,6 +90,8 @@
     module.add_class('RandomVariable', import_from_module='ns.core')
     ## rng-seed-manager.h (module 'core'): ns3::RngSeedManager [class]
     module.add_class('RngSeedManager', import_from_module='ns.core')
+    ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned int, int> [class]
+    module.add_class('SequenceNumber32', import_from_module='ns.network')
     ## random-variable.h (module 'core'): ns3::SequentialVariable [class]
     module.add_class('SequentialVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariable'])
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
@@ -98,6 +100,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## traced-value.h (module 'core'): ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status> [class]
+    module.add_class('TracedValue', template_parameters=['ns3::ndn::fib::FaceMetric::Status'])
     ## random-variable.h (module 'core'): ns3::TriangularVariable [class]
     module.add_class('TriangularVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariable'])
     ## type-id.h (module 'core'): ns3::TypeId [class]
@@ -278,6 +282,12 @@
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
     module.add_container('std::map< std::string, std::string >', ('std::string', 'std::string'), container_type='map')
     module.add_container('std::list< ns3::TopologyReader::Link >', 'ns3::TopologyReader::Link', container_type='list')
+    typehandlers.add_type_alias('ns3::SequenceNumber< short unsigned int, short int >', 'ns3::SequenceNumber16')
+    typehandlers.add_type_alias('ns3::SequenceNumber< short unsigned int, short int >*', 'ns3::SequenceNumber16*')
+    typehandlers.add_type_alias('ns3::SequenceNumber< short unsigned int, short int >&', 'ns3::SequenceNumber16&')
+    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >', 'ns3::SequenceNumber32')
+    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >*', 'ns3::SequenceNumber32*')
+    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >&', 'ns3::SequenceNumber32&')
     typehandlers.add_type_alias('ns3::RngSeedManager', 'ns3::SeedManager')
     typehandlers.add_type_alias('ns3::RngSeedManager*', 'ns3::SeedManager*')
     typehandlers.add_type_alias('ns3::RngSeedManager&', 'ns3::SeedManager&')
@@ -364,6 +374,10 @@
     module.add_class('NetDeviceFace', parent=root_module['ns3::ndn::Face'])
     ## ndn-pit.h (module 'ndnSIM'): ns3::ndn::Pit [class]
     module.add_class('Pit', parent=root_module['ns3::Object'])
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttEstimator [class]
+    module.add_class('RttEstimator', parent=root_module['ns3::Object'])
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttHistory [class]
+    module.add_class('RttHistory')
     ## ndn-stack-helper.h (module 'ndnSIM'): ns3::ndn::StackHelper [class]
     module.add_class('StackHelper')
     ## ndn-header-helper.h (module 'ndnSIM'): ns3::ndn::UnknownHeaderException [class]
@@ -373,6 +387,9 @@
     module.add_container('std::vector< ns3::Ptr< ns3::ndn::Face > >', 'ns3::Ptr< ns3::ndn::Face >', container_type='vector')
     module.add_container('std::list< boost::reference_wrapper< std::string const > >', 'boost::reference_wrapper< std::basic_string< char, std::char_traits< char >, std::allocator< char > > const >', container_type='list')
     module.add_container('std::list< std::string >', 'std::string', container_type='list')
+    typehandlers.add_type_alias('std::deque< ns3::ndn::RttHistory, std::allocator< ns3::ndn::RttHistory > >', 'ns3::ndn::RttHistory_t')
+    typehandlers.add_type_alias('std::deque< ns3::ndn::RttHistory, std::allocator< ns3::ndn::RttHistory > >*', 'ns3::ndn::RttHistory_t*')
+    typehandlers.add_type_alias('std::deque< ns3::ndn::RttHistory, std::allocator< ns3::ndn::RttHistory > >&', 'ns3::ndn::RttHistory_t&')
     
     ## Register a nested module for the namespace cs
     
@@ -481,10 +498,12 @@
     register_Ns3PacketTagListTagData_methods(root_module, root_module['ns3::PacketTagList::TagData'])
     register_Ns3RandomVariable_methods(root_module, root_module['ns3::RandomVariable'])
     register_Ns3RngSeedManager_methods(root_module, root_module['ns3::RngSeedManager'])
+    register_Ns3SequenceNumber32_methods(root_module, root_module['ns3::SequenceNumber32'])
     register_Ns3SequentialVariable_methods(root_module, root_module['ns3::SequentialVariable'])
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TracedValue__Ns3NdnFibFaceMetricStatus_methods(root_module, root_module['ns3::TracedValue< ns3::ndn::fib::FaceMetric::Status >'])
     register_Ns3TriangularVariable_methods(root_module, root_module['ns3::TriangularVariable'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
@@ -593,6 +612,8 @@
     register_Ns3NdnNameValue_methods(root_module, root_module['ns3::ndn::NameValue'])
     register_Ns3NdnNetDeviceFace_methods(root_module, root_module['ns3::ndn::NetDeviceFace'])
     register_Ns3NdnPit_methods(root_module, root_module['ns3::ndn::Pit'])
+    register_Ns3NdnRttEstimator_methods(root_module, root_module['ns3::ndn::RttEstimator'])
+    register_Ns3NdnRttHistory_methods(root_module, root_module['ns3::ndn::RttHistory'])
     register_Ns3NdnStackHelper_methods(root_module, root_module['ns3::ndn::StackHelper'])
     register_Ns3NdnUnknownHeaderException_methods(root_module, root_module['ns3::ndn::UnknownHeaderException'])
     register_Ns3NdnAppFace_methods(root_module, root_module['ns3::ndn::AppFace'])
@@ -2052,6 +2073,31 @@
                    is_static=True)
     return
 
+def register_Ns3SequenceNumber32_methods(root_module, cls):
+    cls.add_binary_comparison_operator('!=')
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('ns3::SequenceNumber< unsigned int, int > const &', 'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('int', 'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('int', 'right'))
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('<=')
+    cls.add_binary_comparison_operator('==')
+    cls.add_binary_comparison_operator('>')
+    cls.add_binary_comparison_operator('>=')
+    ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned int, int>::SequenceNumber() [constructor]
+    cls.add_constructor([])
+    ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned int, int>::SequenceNumber(unsigned int value) [constructor]
+    cls.add_constructor([param('unsigned int', 'value')])
+    ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned int, int>::SequenceNumber(ns3::SequenceNumber<unsigned int, int> const & value) [copy constructor]
+    cls.add_constructor([param('ns3::SequenceNumber< unsigned int, int > const &', 'value')])
+    ## sequence-number.h (module 'network'): unsigned int ns3::SequenceNumber<unsigned int, int>::GetValue() const [member function]
+    cls.add_method('GetValue', 
+                   'unsigned int', 
+                   [], 
+                   is_const=True)
+    return
+
 def register_Ns3SequentialVariable_methods(root_module, cls):
     ## random-variable.h (module 'core'): ns3::SequentialVariable::SequentialVariable(ns3::SequentialVariable const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::SequentialVariable const &', 'arg0')])
@@ -2168,6 +2214,40 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TracedValue__Ns3NdnFibFaceMetricStatus_methods(root_module, cls):
+    ## traced-value.h (module 'core'): ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status>::TracedValue() [constructor]
+    cls.add_constructor([])
+    ## traced-value.h (module 'core'): ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status>::TracedValue(ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status> const & o) [copy constructor]
+    cls.add_constructor([param('ns3::TracedValue< ns3::ndn::fib::FaceMetric::Status > const &', 'o')])
+    ## traced-value.h (module 'core'): ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status>::TracedValue(ns3::ndn::fib::FaceMetric::Status const & v) [constructor]
+    cls.add_constructor([param('ns3::ndn::fib::FaceMetric::Status const &', 'v')])
+    ## traced-value.h (module 'core'): void ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status>::Connect(ns3::CallbackBase const & cb, std::basic_string<char,std::char_traits<char>,std::allocator<char> > path) [member function]
+    cls.add_method('Connect', 
+                   'void', 
+                   [param('ns3::CallbackBase const &', 'cb'), param('std::string', 'path')])
+    ## traced-value.h (module 'core'): void ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status>::ConnectWithoutContext(ns3::CallbackBase const & cb) [member function]
+    cls.add_method('ConnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase const &', 'cb')])
+    ## traced-value.h (module 'core'): void ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status>::Disconnect(ns3::CallbackBase const & cb, std::basic_string<char,std::char_traits<char>,std::allocator<char> > path) [member function]
+    cls.add_method('Disconnect', 
+                   'void', 
+                   [param('ns3::CallbackBase const &', 'cb'), param('std::string', 'path')])
+    ## traced-value.h (module 'core'): void ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status>::DisconnectWithoutContext(ns3::CallbackBase const & cb) [member function]
+    cls.add_method('DisconnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase const &', 'cb')])
+    ## traced-value.h (module 'core'): ns3::ndn::fib::FaceMetric::Status ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status>::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::ndn::fib::FaceMetric::Status', 
+                   [], 
+                   is_const=True)
+    ## traced-value.h (module 'core'): void ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status>::Set(ns3::ndn::fib::FaceMetric::Status const & v) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::ndn::fib::FaceMetric::Status const &', 'v')])
+    return
+
 def register_Ns3TriangularVariable_methods(root_module, cls):
     ## random-variable.h (module 'core'): ns3::TriangularVariable::TriangularVariable(ns3::TriangularVariable const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::TriangularVariable const &', 'arg0')])
@@ -5218,10 +5298,16 @@
     cls.add_method('AddOriginsForAll', 
                    'void', 
                    [])
-    ## ndn-global-routing-helper.h (module 'ndnSIM'): void ns3::ndn::GlobalRoutingHelper::CalculateRoutes() [member function]
+    ## ndn-global-routing-helper.h (module 'ndnSIM'): static void ns3::ndn::GlobalRoutingHelper::CalculateAllPossibleRoutes() [member function]
+    cls.add_method('CalculateAllPossibleRoutes', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    ## ndn-global-routing-helper.h (module 'ndnSIM'): static void ns3::ndn::GlobalRoutingHelper::CalculateRoutes() [member function]
     cls.add_method('CalculateRoutes', 
                    'void', 
-                   [])
+                   [], 
+                   is_static=True)
     ## ndn-global-routing-helper.h (module 'ndnSIM'): void ns3::ndn::GlobalRoutingHelper::Install(ns3::Ptr<ns3::Node> node) [member function]
     cls.add_method('Install', 
                    'void', 
@@ -5764,6 +5850,105 @@
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
+def register_Ns3NdnRttEstimator_methods(root_module, cls):
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttEstimator::RttEstimator() [constructor]
+    cls.add_constructor([])
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttEstimator::RttEstimator(ns3::ndn::RttEstimator const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ndn::RttEstimator const &', 'arg0')])
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::Time ns3::ndn::RttEstimator::AckSeq(ns3::SequenceNumber32 ackSeq) [member function]
+    cls.add_method('AckSeq', 
+                   'ns3::Time', 
+                   [param('ns3::SequenceNumber32', 'ackSeq')], 
+                   is_virtual=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): void ns3::ndn::RttEstimator::ClearSent() [member function]
+    cls.add_method('ClearSent', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::Ptr<ns3::ndn::RttEstimator> ns3::ndn::RttEstimator::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::ndn::RttEstimator >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::Time ns3::ndn::RttEstimator::GetCurrentEstimate() const [member function]
+    cls.add_method('GetCurrentEstimate', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::Time ns3::ndn::RttEstimator::GetMaxRto() const [member function]
+    cls.add_method('GetMaxRto', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::Time ns3::ndn::RttEstimator::GetMinRto() const [member function]
+    cls.add_method('GetMinRto', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): static ns3::TypeId ns3::ndn::RttEstimator::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): void ns3::ndn::RttEstimator::IncreaseMultiplier() [member function]
+    cls.add_method('IncreaseMultiplier', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): void ns3::ndn::RttEstimator::Measurement(ns3::Time t) [member function]
+    cls.add_method('Measurement', 
+                   'void', 
+                   [param('ns3::Time', 't')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): void ns3::ndn::RttEstimator::Reset() [member function]
+    cls.add_method('Reset', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): void ns3::ndn::RttEstimator::ResetMultiplier() [member function]
+    cls.add_method('ResetMultiplier', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::Time ns3::ndn::RttEstimator::RetransmitTimeout() [member function]
+    cls.add_method('RetransmitTimeout', 
+                   'ns3::Time', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): void ns3::ndn::RttEstimator::SentSeq(ns3::SequenceNumber32 seq, uint32_t size) [member function]
+    cls.add_method('SentSeq', 
+                   'void', 
+                   [param('ns3::SequenceNumber32', 'seq'), param('uint32_t', 'size')], 
+                   is_virtual=True)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): void ns3::ndn::RttEstimator::SetCurrentEstimate(ns3::Time estimate) [member function]
+    cls.add_method('SetCurrentEstimate', 
+                   'void', 
+                   [param('ns3::Time', 'estimate')])
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): void ns3::ndn::RttEstimator::SetMaxRto(ns3::Time maxRto) [member function]
+    cls.add_method('SetMaxRto', 
+                   'void', 
+                   [param('ns3::Time', 'maxRto')])
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): void ns3::ndn::RttEstimator::SetMinRto(ns3::Time minRto) [member function]
+    cls.add_method('SetMinRto', 
+                   'void', 
+                   [param('ns3::Time', 'minRto')])
+    return
+
+def register_Ns3NdnRttHistory_methods(root_module, cls):
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttHistory::RttHistory(ns3::SequenceNumber32 s, uint32_t c, ns3::Time t) [constructor]
+    cls.add_constructor([param('ns3::SequenceNumber32', 's'), param('uint32_t', 'c'), param('ns3::Time', 't')])
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttHistory::RttHistory(ns3::ndn::RttHistory const & h) [copy constructor]
+    cls.add_constructor([param('ns3::ndn::RttHistory const &', 'h')])
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttHistory::count [variable]
+    cls.add_instance_attribute('count', 'uint32_t', is_const=False)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttHistory::retx [variable]
+    cls.add_instance_attribute('retx', 'bool', is_const=False)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttHistory::seq [variable]
+    cls.add_instance_attribute('seq', 'ns3::SequenceNumber32', is_const=False)
+    ## ndn-rtt-estimator.h (module 'ndnSIM'): ns3::ndn::RttHistory::time [variable]
+    cls.add_instance_attribute('time', 'ns3::Time', is_const=False)
+    return
+
 def register_Ns3NdnStackHelper_methods(root_module, cls):
     ## ndn-stack-helper.h (module 'ndnSIM'): ns3::ndn::StackHelper::StackHelper() [constructor]
     cls.add_constructor([])
@@ -5881,8 +6066,12 @@
 def register_Ns3NdnCsEntry_methods(root_module, cls):
     ## ndn-content-store.h (module 'ndnSIM'): ns3::ndn::cs::Entry::Entry(ns3::ndn::cs::Entry const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::ndn::cs::Entry const &', 'arg0')])
-    ## ndn-content-store.h (module 'ndnSIM'): ns3::ndn::cs::Entry::Entry(ns3::Ptr<ns3::ndn::ContentObjectHeader const> header, ns3::Ptr<const ns3::Packet> packet) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::ndn::ContentObjectHeader const >', 'header'), param('ns3::Ptr< ns3::Packet const >', 'packet')])
+    ## ndn-content-store.h (module 'ndnSIM'): ns3::ndn::cs::Entry::Entry(ns3::Ptr<ns3::ndn::ContentStore> cs, ns3::Ptr<ns3::ndn::ContentObjectHeader const> header, ns3::Ptr<const ns3::Packet> packet) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::ndn::ContentStore >', 'cs'), param('ns3::Ptr< ns3::ndn::ContentObjectHeader const >', 'header'), param('ns3::Ptr< ns3::Packet const >', 'packet')])
+    ## ndn-content-store.h (module 'ndnSIM'): ns3::Ptr<ns3::ndn::ContentStore> ns3::ndn::cs::Entry::GetContentStore() [member function]
+    cls.add_method('GetContentStore', 
+                   'ns3::Ptr< ns3::ndn::ContentStore >', 
+                   [])
     ## ndn-content-store.h (module 'ndnSIM'): ns3::Ptr<ns3::Packet> ns3::ndn::cs::Entry::GetFullyFormedNdnPacket() const [member function]
     cls.add_method('GetFullyFormedNdnPacket', 
                    'ns3::Ptr< ns3::Packet >', 
@@ -5987,6 +6176,10 @@
                    'ns3::ndn::fib::FaceMetric::Status', 
                    [], 
                    is_const=True)
+    ## ndn-fib-entry.h (module 'ndnSIM'): ns3::TracedValue<ns3::ndn::fib::FaceMetric::Status> & ns3::ndn::fib::FaceMetric::GetStatusTrace() [member function]
+    cls.add_method('GetStatusTrace', 
+                   'ns3::TracedValue< ns3::ndn::fib::FaceMetric::Status > &', 
+                   [])
     ## ndn-fib-entry.h (module 'ndnSIM'): void ns3::ndn::fib::FaceMetric::SetRealDelay(ns3::Time realDelay) [member function]
     cls.add_method('SetRealDelay', 
                    'void', 
diff --git a/model/cs/content-store-impl.h b/model/cs/content-store-impl.h
index cd277cc..ffbc925 100644
--- a/model/cs/content-store-impl.h
+++ b/model/cs/content-store-impl.h
@@ -44,8 +44,8 @@
   typedef Entry base_type;
 
 public:
-  EntryImpl (Ptr<const ContentObjectHeader> header, Ptr<const Packet> packet)
-    : Entry (header, packet)
+  EntryImpl (Ptr<ContentStore> cs, Ptr<const ContentObjectHeader> header, Ptr<const Packet> packet)
+    : Entry (cs, header, packet)
     , item_ (0)
   {
   }
@@ -187,7 +187,7 @@
 {
   NS_LOG_FUNCTION (this << header->GetName ());
 
-  Ptr< entry > newEntry = Create< entry > (header, packet);
+  Ptr< entry > newEntry = Create< entry > (this, header, packet);
   std::pair< typename super::iterator, bool > result = super::insert (header->GetName (), newEntry);
 
   if (result.first != super::end ())
diff --git a/model/cs/ndn-content-store.cc b/model/cs/ndn-content-store.cc
index 90a5699..fbe85ce 100644
--- a/model/cs/ndn-content-store.cc
+++ b/model/cs/ndn-content-store.cc
@@ -60,8 +60,9 @@
 
 //////////////////////////////////////////////////////////////////////
 
-Entry::Entry (Ptr<const ContentObjectHeader> header, Ptr<const Packet> packet)
-  : m_header (header)
+Entry::Entry (Ptr<ContentStore> cs, Ptr<const ContentObjectHeader> header, Ptr<const Packet> packet)
+  : m_cs (cs)
+  , m_header (header)
   , m_packet (packet->Copy ())
 {
 }
@@ -95,6 +96,13 @@
   return m_packet;
 }
 
+Ptr<ContentStore>
+Entry::GetContentStore ()
+{
+  return m_cs;
+}
+
+
 } // namespace cs
 } // namespace ndn
 } // namespace ns3
diff --git a/model/cs/ndn-content-store.h b/model/cs/ndn-content-store.h
index 19ff996..f03e4c9 100644
--- a/model/cs/ndn-content-store.h
+++ b/model/cs/ndn-content-store.h
@@ -38,6 +38,8 @@
 class InterestHeader;
 class NameComponents;
 
+class ContentStore;
+
 namespace cs {
 
 /**
@@ -63,7 +65,7 @@
    * The constructor will make a copy of the supplied packet and calls
    * RemoveHeader and RemoveTail on the copy.
    */
-  Entry (Ptr<const ContentObjectHeader> header, Ptr<const Packet> packet);
+  Entry (Ptr<ContentStore> cs, Ptr<const ContentObjectHeader> header, Ptr<const Packet> packet);
 
   /**
    * \brief Get prefix of the stored entry
@@ -93,7 +95,14 @@
   Ptr<Packet>
   GetFullyFormedNdnPacket () const;
 
+  /**
+   * @brief Get pointer to access store, to which this entry is added
+   */
+  Ptr<ContentStore>
+  GetContentStore ();
+
 private:
+  Ptr<ContentStore> m_cs; ///< \brief content store to which entry is added
   Ptr<const ContentObjectHeader> m_header; ///< \brief non-modifiable ContentObjectHeader
   Ptr<Packet> m_packet; ///< \brief non-modifiable content of the ContentObject packet
 };
@@ -123,7 +132,7 @@
    */
   virtual
   ~ContentStore ();
-            
+
   /**
    * \brief Find corresponding CS entry for the given interest
    *
@@ -135,7 +144,7 @@
    */
   virtual boost::tuple<Ptr<Packet>, Ptr<const ContentObjectHeader>, Ptr<const Packet> >
   Lookup (Ptr<const InterestHeader> interest) = 0;
-            
+
   /**
    * \brief Add a new content to the content store.
    *
@@ -155,7 +164,7 @@
   //  */
   // virtual bool
   // Remove (Ptr<InterestHeader> header) = 0;
-  
+
   /**
    * \brief Print out content store entries
    */
@@ -190,17 +199,17 @@
   ////////////////////////////////////////////////////////////////////////////
   ////////////////////////////////////////////////////////////////////////////
   ////////////////////////////////////////////////////////////////////////////
-  
+
   /**
    * @brief Static call to cheat python bindings
    */
   static inline Ptr<ContentStore>
   GetContentStore (Ptr<Object> node);
-  
+
 protected:
   TracedCallback<Ptr<const InterestHeader>,
                  Ptr<const ContentObjectHeader> > m_cacheHitsTrace; ///< @brief trace of cache hits
-    
+
   TracedCallback<Ptr<const InterestHeader> > m_cacheMissesTrace; ///< @brief trace of cache misses
 };