Provide option to disable NLSR

refs: #4309

Change-Id: I78774aa535f3e1c8dea51b05e070b0e8815ff938
diff --git a/bin/minindn b/bin/minindn
index 07c223f..b2c8db6 100755
--- a/bin/minindn
+++ b/bin/minindn
@@ -112,6 +112,7 @@
         self.nFaces = 3
         self.templateFile = "minindn.conf"
         self.routingType = "link-state"
+        self.isNlsrEnabled = True
         self.isCliEnabled = True
         self.nlsrSecurity = False
         self.nPings = 300
@@ -164,6 +165,9 @@
                         help="""choices for routing are 'link-state' for link state, 'hr' for hyperbolic, and 'dry'
                         to test hyperbolic routing and compare with link state. Default is link-state.""")
 
+    parser.add_argument("--no-nlsr", action="store_false", dest="isNlsrEnabled",
+                        help="Run mini-ndn without NLSR routing")
+
     parser.add_argument("--list-experiments", action=PrintExperimentNames,
                         help="Lists the names of all available experiments")
 
@@ -215,6 +219,7 @@
     options.experimentName = args.experiment
     options.nFaces = args.faces
     options.routingType = args.routingType
+    options.isNlsrEnabled = args.isNlsrEnabled
     options.isCliEnabled = args.isCliEnabled
     options.nlsrSecurity = args.nlsrSecurity
     options.nPings = args.nPings
@@ -387,17 +392,19 @@
                 node2.setIP(ipStr(ipParse(ndnNetBase) + 2) + '/30', intf=link.intf2)
                 ndnNetBase = ipStr(ipParse(ndnNetBase) + 4)
 
-    # NLSR Security
-    if options.nlsrSecurity is True:
-        Nlsr.createKeysAndCertificates(net, options.workDir)
+    if options.isNlsrEnabled is True:
 
-    # NLSR initialization
-    for host in net.hosts:
-        conf = next(x for x in hosts_conf if x.name == host.name)
-        host.nlsrParameters = conf.nlsrParameters
+        # NLSR Security
+        if options.nlsrSecurity is True:
+            Nlsr.createKeysAndCertificates(net, options.workDir)
 
-        if options.nFaces is not None:
-            host.nlsrParameters["max-faces-per-prefix"] = options.nFaces
+        # NLSR initialization
+        for host in net.hosts:
+            conf = next(x for x in hosts_conf if x.name == host.name)
+            host.nlsrParameters = conf.nlsrParameters
+
+            if options.nFaces is not None:
+                host.nlsrParameters["max-faces-per-prefix"] = options.nFaces
 
         if options.routingType == 'dry':
             host.nlsrParameters["hyperbolic-state"] = "dry-run"
@@ -405,13 +412,13 @@
         elif options.routingType == 'hr':
             host.nlsrParameters["hyperbolic-state"] = "on"
 
-        # Generate NLSR configuration file
-        configGenerator = NlsrConfigGenerator(host, options.nlsrSecurity, options.faceType)
-        configGenerator.createConfigFile()
+            # Generate NLSR configuration file
+            configGenerator = NlsrConfigGenerator(host, options.nlsrSecurity, options.faceType)
+            configGenerator.createConfigFile()
 
-        # Start NLSR
-        host.nlsr = Nlsr(host, configGenerator.neighborIPs, options.faceType)
-        host.nlsr.start()
+            # Start NLSR
+            host.nlsr = Nlsr(host, configGenerator.neighborIPs, options.faceType)
+            host.nlsr.start()
 
     for host in net.hosts:
         if 'app' in host.params: