2018-07-11 17:19:06 +01:00
|
|
|
from core.enumerations import NodeTypes
|
|
|
|
from core.misc import nodeutils
|
|
|
|
from core.service import CoreService
|
|
|
|
from core.xml import emanexml
|
|
|
|
|
|
|
|
|
|
|
|
class EmaneTransportService(CoreService):
|
|
|
|
name = "transportd"
|
|
|
|
executables = ("emanetransportd", "emanegentransportxml")
|
|
|
|
group = "EMANE"
|
|
|
|
dependencies = ()
|
|
|
|
dirs = ()
|
|
|
|
configs = ("emanetransport.sh",)
|
|
|
|
startup = ("sh %s" % configs[0],)
|
|
|
|
validate = ("pidof %s" % executables[0],)
|
|
|
|
validation_timer = 0.5
|
|
|
|
shutdown = ("killall %s" % executables[0],)
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def generate_config(cls, node, filename):
|
|
|
|
if filename == cls.configs[0]:
|
|
|
|
transport_commands = []
|
|
|
|
for interface in node.netifs(sort=True):
|
|
|
|
network_node = node.session.get_object(interface.net.objid)
|
|
|
|
if nodeutils.is_node(network_node, NodeTypes.EMANE):
|
2018-07-12 05:34:21 +01:00
|
|
|
config = node.session.emane.get_configs(network_node.objid, network_node.model.name)
|
|
|
|
if config and emanexml.is_external(config):
|
2018-07-11 17:19:06 +01:00
|
|
|
nem_id = network_node.getnemid(interface)
|
|
|
|
command = "emanetransportd -r -l 0 -d ../transportdaemon%s.xml" % nem_id
|
|
|
|
transport_commands.append(command)
|
|
|
|
transport_commands = "\n".join(transport_commands)
|
|
|
|
return """
|
|
|
|
emanegentransportxml -o ../ ../platform%s.xml
|
|
|
|
%s
|
|
|
|
""" % (node.objid, transport_commands)
|
|
|
|
else:
|
|
|
|
raise ValueError
|