blob: b33fc37be50b458f1d4f440139d6e06507b664a4 [file] [log] [blame]
#!/usr/bin/env python
import time
class Nfd:
STRATEGY_BEST_ROUTE_V3 = "best-route/%FD%03"
STRATEGY_NCC = "ncc"
def __init__(self, node):
self.node = node
self.isRunning = False
# Create home directory for a node
node.cmd("cd /tmp && mkdir %s" % node.name)
node.cmd("cd %s" % node.name)
self.homeFolder = "/tmp/%s" % node.name
self.confFile = "%s/%s.conf" % (self.homeFolder, node.name)
self.logFile = "%s/%s.log" % (self.homeFolder, node.name)
self.sockFile = "/var/run/%s.sock" % node.name
self.ndnFolder = "%s/.ndn" % self.homeFolder
self.clientConf = "%s/client.conf" % self.ndnFolder
# Copy nfd.conf file from mini-ndn/ndn_utils to the node's home
node.cmd("sudo cp ~/mini-ndn/ndn_utils/nfd.conf %s" % self.confFile)
# Open the conf file and change socket file name
node.cmd("sudo sed -i 's|nfd.sock|%s.sock|g' %s" % (node.name, self.confFile))
# Make NDN folder
node.cmd("sudo mkdir %s" % self.ndnFolder)
# Copy the client.conf file and change the unix socket
node.cmd("sudo cp ~/mini-ndn/ndn_utils/client.conf.sample %s" % self.clientConf)
node.cmd("sudo sed -i 's|nfd.sock|%s.sock|g' %s" % (node.name, self.clientConf))
# Change home folder
node.cmd("export HOME=%s" % self.homeFolder)
def start(self):
if self.isRunning is True:
try:
os.kill(int(self.processId), 0)
except OSError:
self.isRunning = False
if self.isRunning is False:
self.node.cmd("sudo nfd --config %s 2>> %s &" % (self.confFile, self.logFile))
self.processId = self.node.cmd("echo $!")[:-1]
time.sleep(2)
self.isRunning = True
def stop(self):
if self.isRunning is True:
self.node.cmd("sudo kill %s" % self.processId)
self.isRunning = False
def setStrategy(self, name, strategy):
self.node.cmd("nfdc set-strategy %s ndn:/localhost/nfd/strategy/%s" % (name, strategy))
time.sleep(0.5)