management: Updating nfd::Controller for latest changes in protocol

Also this commit introduces two generic methods that can be used to send
fib/(add|remove)-nexthop.  In addition, face/* and fib/* commands now
generate proper CommandInterests (using default identity/certificate).

Change-Id: Ib683ad37023365046e31a54ae03ed084feadc662
Refs: #1343
diff --git a/src/management/nfd-controller.cpp b/src/management/nfd-controller.cpp
index 735c927..723c984 100644
--- a/src/management/nfd-controller.cpp
+++ b/src/management/nfd-controller.cpp
@@ -17,7 +17,6 @@
 
 Controller::Controller(Face& face)
   : m_face(face)
-  , m_faceId(0)
 {
 }
 
@@ -26,49 +25,39 @@
                                const SuccessCallback& onSuccess,
                                const FailCallback&    onFail)
 {
-  // two stage process:
-  // 1. insert FIB entry
-  // 2. add-nexthop <self> to the FIB entry
-
-  // Step 1.
-  startFibCommand("insert",
-                  FibManagementOptions()
-                    .setName(prefixToRegister),
-                  bind(&Controller::selfRegisterPrefixAddNextop, this, _1, onSuccess, onFail),
-                  onFail);
+  fibAddNextHop(prefixToRegister, 0, 0, onSuccess, onFail);
 }
 
 void
-Controller::selfRegisterPrefixAddNextop(const FibManagementOptions& entry,
-                                        const SuccessCallback& onSuccess,
-                                        const FailCallback&    onFail)
-{
-  // Step 2.
-  startFibCommand("add-nexthop",
-                  FibManagementOptions(entry) // prefixToRegister should be inside the entry
-                    .setFaceId(0) // self-registration
-                    .setCost(0),
-                  bind(&Controller::recordSelfRegisteredFaceId, this, _1, onSuccess),
-                  onFail);
-}
-
-
-void
-Controller::selfDeregisterPrefix(const Name& prefixToRegister,
+Controller::selfDeregisterPrefix(const Name& prefixToDeRegister,
                                  const SuccessCallback& onSuccess,
                                  const FailCallback&    onFail)
 {
-  if (m_faceId == 0)
-    {
-      if (static_cast<bool>(onFail))
-        onFail("Face ID is not set, should have been set after a successful prefix registration command");
-      return;
-    }
+  fibRemoveNextHop(prefixToDeRegister, 0, onSuccess, onFail);
+}
 
+void
+Controller::fibAddNextHop(const Name& prefix, uint64_t faceId, int cost,
+                          const SuccessCallback& onSuccess,
+                          const FailCallback&    onFail)
+{
+  startFibCommand("add-nexthop",
+                  FibManagementOptions()
+                    .setName(prefix)
+                    .setFaceId(faceId)
+                    .setCost(cost),
+                  bind(onSuccess), onFail);
+}
+
+void
+Controller::fibRemoveNextHop(const Name& prefix, uint64_t faceId,
+                             const SuccessCallback& onSuccess,
+                             const FailCallback&    onFail)
+{
   startFibCommand("remove-nexthop",
                   FibManagementOptions()
-                    .setName(prefixToRegister)
-                    .setFaceId(m_faceId),
+                    .setName(prefix)
+                    .setFaceId(faceId),
                   bind(onSuccess), onFail);
 }
 
@@ -84,7 +73,7 @@
     .append(options.wireEncode());
 
   Interest fibCommandInterest(fibCommandInterestName);
-  // m_keyChain.sign(fibCommandInterest);
+  m_commandInterestGenerator.generate(fibCommandInterest);
 
   m_face.expressInterest(fibCommandInterest,
                          bind(&Controller::processFibCommandResponse, this, _2,
@@ -93,14 +82,6 @@
 }
 
 void
-Controller::recordSelfRegisteredFaceId(const FibManagementOptions& entry,
-                                       const SuccessCallback& onSuccess)
-{
-  m_faceId = entry.getFaceId();
-  onSuccess();
-}
-
-void
 Controller::processFibCommandResponse(Data& data,
                                       const FibCommandSucceedCallback& onSuccess,
                                       const FailCallback& onFail)
@@ -133,7 +114,7 @@
     .append(options.wireEncode());
 
   Interest faceCommandInterest(faceCommandInterestName);
-  // m_keyChain.sign(fibCommandInterest);
+  m_commandInterestGenerator.generate(faceCommandInterest);
 
   m_face.expressInterest(faceCommandInterest,
                          bind(&Controller::processFaceCommandResponse, this, _2,
@@ -161,5 +142,6 @@
         return onFail(e.what());
     }
 }
+
 } // namespace nfd
 } // namespace ndn