all: Fixing compatibility with NFD 0.5 and ndn-cxx 0.5

Change-Id: I3d23acf29f4858049d1040a3e421e1c7151b3aba
diff --git a/bindings/module-helpers.cpp b/bindings/module-helpers.cpp
new file mode 100644
index 0000000..cd7c198
--- /dev/null
+++ b/bindings/module-helpers.cpp
@@ -0,0 +1,32 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2011-2016  Regents of the University of California.
+ *
+ * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
+ * contributors.
+ *
+ * ndnSIM is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Foundation,
+ * either version 3 of the License, or (at your option) any later version.
+ *
+ * ndnSIM 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
+ * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "module-helpers.hpp"
+
+namespace nfd {
+namespace fib {
+
+std::shared_ptr<Face>
+getFaceFromFibNextHop(const NextHop& nextHop)
+{
+  return nextHop.getFace().shared_from_this();
+}
+
+} // namespace fib
+} // namespace nfd
diff --git a/bindings/module-helpers.hpp b/bindings/module-helpers.hpp
new file mode 100644
index 0000000..3f90e98
--- /dev/null
+++ b/bindings/module-helpers.hpp
@@ -0,0 +1,34 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2011-2016  Regents of the University of California.
+ *
+ * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
+ * contributors.
+ *
+ * ndnSIM is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Foundation,
+ * either version 3 of the License, or (at your option) any later version.
+ *
+ * ndnSIM 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
+ * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#ifndef NDNSIM_BINDINGS_MODULE_HELPERS_HPP
+#define NDNSIM_BINDINGS_MODULE_HELPERS_HPP
+
+#include <ns3/ndnSIM/NFD/daemon/table/fib.hpp>
+
+namespace nfd {
+namespace fib {
+
+std::shared_ptr<Face>
+getFaceFromFibNextHop(const NextHop& nextHop);
+
+} // namespace fib
+} // namespace nfd
+
+#endif // NDNSIM_BINDINGS_MODULE_HELPERS_HPP
diff --git a/bindings/modulegen__gcc_ILP32.py b/bindings/modulegen__gcc_ILP32.py
index 940aa6e..e0df60e 100644
--- a/bindings/modulegen__gcc_ILP32.py
+++ b/bindings/modulegen__gcc_ILP32.py
@@ -242,7 +242,7 @@
         # cls.add_method('insert', retval('std::pair<std::shared_ptr<ns3::ndn::nfd::fib::Entry>, bool>'), [param('const ns3::ndn::Name&', 'prefix')])
         cls.add_method('erase', retval('void'), [param('const ns3::ndn::Name&', 'prefix')])
         cls.add_method('erase', retval('void'), [param('const ns3::ndn::nfd::fib::Entry&', 'entry')])
-        cls.add_method('removeNextHopFromAllEntries', retval('void'), [param('std::shared_ptr<ns3::ndn::Face>', 'face')])
+        # cls.add_method('removeNextHopFromAllEntries', retval('void'), [param('std::shared_ptr<ns3::ndn::Face>', 'face')])
 
         def reg_Entry(cls):
             cls.add_method('getPrefix', 'const ns3::ndn::Name&', [], is_const=True)
@@ -251,9 +251,11 @@
         reg_Entry(root_module['ns3::ndn::nfd::fib::Entry'])
 
         def reg_NextHop(cls):
-            cls.add_constructor([param('std::shared_ptr<ns3::ndn::Face>', 'face')])
+            cls.add_constructor([param('const ns3::ndn::Face&', 'face')])
 
-            cls.add_method('getFace', 'std::shared_ptr<ns3::ndn::Face>', [], is_const=True)
+            cls.add_function_as_method('getFaceFromFibNextHop', 'std::shared_ptr<ns3::ndn::Face>',
+                                       [param('const ns3::ndn::nfd::fib::NextHop&', 'obj')],
+                                       custom_name='getFace')
             cls.add_method('setCost', 'void', [param('uint64_t', 'cost')])
             cls.add_method('getCost', 'uint64_t', [], is_const=True)
         reg_NextHop(root_module['ns3::ndn::nfd::fib::NextHop'])
diff --git a/bindings/modulegen__gcc_LP64.py b/bindings/modulegen__gcc_LP64.py
index 940aa6e..e0df60e 100644
--- a/bindings/modulegen__gcc_LP64.py
+++ b/bindings/modulegen__gcc_LP64.py
@@ -242,7 +242,7 @@
         # cls.add_method('insert', retval('std::pair<std::shared_ptr<ns3::ndn::nfd::fib::Entry>, bool>'), [param('const ns3::ndn::Name&', 'prefix')])
         cls.add_method('erase', retval('void'), [param('const ns3::ndn::Name&', 'prefix')])
         cls.add_method('erase', retval('void'), [param('const ns3::ndn::nfd::fib::Entry&', 'entry')])
-        cls.add_method('removeNextHopFromAllEntries', retval('void'), [param('std::shared_ptr<ns3::ndn::Face>', 'face')])
+        # cls.add_method('removeNextHopFromAllEntries', retval('void'), [param('std::shared_ptr<ns3::ndn::Face>', 'face')])
 
         def reg_Entry(cls):
             cls.add_method('getPrefix', 'const ns3::ndn::Name&', [], is_const=True)
@@ -251,9 +251,11 @@
         reg_Entry(root_module['ns3::ndn::nfd::fib::Entry'])
 
         def reg_NextHop(cls):
-            cls.add_constructor([param('std::shared_ptr<ns3::ndn::Face>', 'face')])
+            cls.add_constructor([param('const ns3::ndn::Face&', 'face')])
 
-            cls.add_method('getFace', 'std::shared_ptr<ns3::ndn::Face>', [], is_const=True)
+            cls.add_function_as_method('getFaceFromFibNextHop', 'std::shared_ptr<ns3::ndn::Face>',
+                                       [param('const ns3::ndn::nfd::fib::NextHop&', 'obj')],
+                                       custom_name='getFace')
             cls.add_method('setCost', 'void', [param('uint64_t', 'cost')])
             cls.add_method('getCost', 'uint64_t', [], is_const=True)
         reg_NextHop(root_module['ns3::ndn::nfd::fib::NextHop'])