Add enable-local-control and disable-local-control commands
diff --git a/nb-configuration.xml b/nb-configuration.xml
index a191290..2beea40 100644
--- a/nb-configuration.xml
+++ b/nb-configuration.xml
@@ -13,7 +13,7 @@
That way multiple projects can share the same settings (useful for formatting rules for example).
Any value defined here will override the pom.xml file value but is only applicable to the current project.
-->
- <netbeans.hint.license>intel-license</netbeans.hint.license>
+ <netbeans.hint.license>intel-license-lgpl</netbeans.hint.license>
<org-netbeans-modules-editor-indent.CodeStyle.usedProfile>project</org-netbeans-modules-editor-indent.CodeStyle.usedProfile>
<org-netbeans-modules-editor-indent.CodeStyle.project.spaces-per-tab>2</org-netbeans-modules-editor-indent.CodeStyle.project.spaces-per-tab>
<org-netbeans-modules-editor-indent.CodeStyle.project.tab-size>4</org-netbeans-modules-editor-indent.CodeStyle.project.tab-size>
diff --git a/src/main/java/com/intel/jndn/management/NFD.java b/src/main/java/com/intel/jndn/management/NFD.java
index 58d5d70..026faca 100644
--- a/src/main/java/com/intel/jndn/management/NFD.java
+++ b/src/main/java/com/intel/jndn/management/NFD.java
@@ -17,6 +17,7 @@
import com.intel.jndn.management.types.ControlResponse;
import com.intel.jndn.management.types.FaceStatus;
import com.intel.jndn.management.types.FibEntry;
+import com.intel.jndn.management.types.LocalControlHeader;
import com.intel.jndn.management.types.RibEntry;
import com.intel.jndn.utils.Client;
import com.intel.jndn.utils.SegmentedClient;
@@ -232,6 +233,46 @@
}
/**
+ * Enable a local control feature on the given forwarder. See
+ * http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt#Enable-a-LocalControlHeader-feature
+ *
+ * @param forwarder
+ * @param header
+ * @return
+ * @throws Exception
+ */
+ public static boolean enableLocalControlHeader(Face forwarder, LocalControlHeader header) throws Exception {
+ // build command name
+ Name command = new Name("/localhost/nfd/faces/enable-local-control");
+ ControlParameters parameters = new ControlParameters();
+ parameters.setLocalControlFeature(header.getNumericValue());
+ command.append(parameters.wireEncode());
+
+ // send command and return
+ return sendCommandAndErrorCheck(forwarder, new Interest(command));
+ }
+
+ /**
+ * Disable a local control feature on the given forwarder. See
+ * http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt#Disable-a-LocalControlHeader-feature
+ *
+ * @param forwarder
+ * @param header
+ * @return
+ * @throws Exception
+ */
+ public static boolean disableLocalControlHeader(Face forwarder, LocalControlHeader header) throws Exception {
+ // build command name
+ Name command = new Name("/localhost/nfd/faces/disable-local-control");
+ ControlParameters parameters = new ControlParameters();
+ parameters.setLocalControlFeature(header.getNumericValue());
+ command.append(parameters.wireEncode());
+
+ // send command and return
+ return sendCommandAndErrorCheck(forwarder, new Interest(command));
+ }
+
+ /**
* Register a route on the forwarder; see
* http://named-data.net/doc/NFD/current/manpages/nfdc.html for command-line
* usage and http://redmine.named-data.net/projects/nfd/wiki/RibMgmt for
diff --git a/src/main/java/com/intel/jndn/management/types/LocalControlHeader.java b/src/main/java/com/intel/jndn/management/types/LocalControlHeader.java
new file mode 100644
index 0000000..4a2aee2
--- /dev/null
+++ b/src/main/java/com/intel/jndn/management/types/LocalControlHeader.java
@@ -0,0 +1,36 @@
+/*
+ * jndn-management
+ * Copyright (c) 2015, Intel Corporation.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU Lesser General Public License,
+ * version 3, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
+ * more details.
+ */
+package com.intel.jndn.management.types;
+
+/**
+ * Define constants for local control header options. See
+ * http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt#Enable-a-LocalControlHeader-feature
+ *
+ * @author Andrew Brown <andrew.brown@intel.com>
+ */
+public enum LocalControlHeader {
+
+ INCOMING_FACE_ID(1),
+ NEXT_HOP_FACE_ID(2),
+ CACHING_POLICY(3);
+
+ LocalControlHeader(int value) {
+ value_ = value;
+ }
+
+ public final int getNumericValue() {
+ return value_;
+ }
+ private final int value_;
+}
diff --git a/src/test/java/com/intel/jndn/management/LocalControlHeaderTest.java b/src/test/java/com/intel/jndn/management/LocalControlHeaderTest.java
new file mode 100644
index 0000000..a8116fb
--- /dev/null
+++ b/src/test/java/com/intel/jndn/management/LocalControlHeaderTest.java
@@ -0,0 +1,56 @@
+/*
+ * jndn-management
+ * Copyright (c) 2015, Intel Corporation.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU Lesser General Public License,
+ * version 3, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
+ * more details.
+ */
+package com.intel.jndn.management;
+
+import com.intel.jndn.management.types.LocalControlHeader;
+import com.intel.jndn.utils.Client;
+import java.util.logging.Logger;
+import net.named_data.jndn.Data;
+import net.named_data.jndn.Face;
+import net.named_data.jndn.Name;
+import net.named_data.jndn.encoding.EncodingException;
+import net.named_data.jndn.security.KeyChain;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Test functionality for LocalControlHeader
+ *
+ * @author Andrew Brown <andrew.brown@intel.com>
+ */
+public class LocalControlHeaderTest {
+
+ private static final Logger logger = Logger.getLogger(IntegrationSuite.class.getName());
+
+ /**
+ * Integration test to run on actual system
+ *
+ * @param args
+ * @throws EncodingException
+ */
+ public static void main(String[] args) throws Exception {
+ // setup forwarder face
+ Face forwarder = new Face("localhost");
+ KeyChain keyChain = IntegrationSuite.buildTestKeyChain();
+ forwarder.setCommandSigningInfo(keyChain, keyChain.getDefaultCertificateName());
+
+ // enable incoming face ID header
+ boolean success = NFD.enableLocalControlHeader(forwarder, LocalControlHeader.INCOMING_FACE_ID);
+ assertTrue(success);
+
+ // use and verify
+ Data data = Client.getDefault().getSync(forwarder, new Name("/localhop/nfd"));
+ long faceId = data.getIncomingFaceId();
+ logger.info("Face ID for this client on the forwarder: " + faceId);
+ }
+}