if node and node.uuid not in self.connected:
self.simulation.invoke(node.uuid, "AddDevice", self.uuid)
self._connected.add(node.uuid)
+
+ def _instantiate_object(self):
+ """ just validate that the simulator is in real time
+ mode, otherwise it is not going to work
+ """
+
+ mode = self.simulation.get("simulatorImplementationType")
+ if mode != "ns3::RealtimeSimulatorImpl":
+ msg = "The simulation must run in real time!!"
+ self.error(msg)
+ raise RuntimeError, msg
+ super(NS3BaseFdNetDevice, self)._instantiate_object()
+
+ def send_fd(self, fd):
+ import passfd
+ import socket
+
+ address = self.simulation.invoke(self.uuid, "recvFD")
+ sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
+ sock.connect(address)
+ passfd.sendfd(sock, fd, '0')
+
def _instantiate_object(self):
""" The pipe channel does not really exists as an ns-3 object.
- Do nothing, just validate that the simulator is in real time
- mode, otherwise it is not going to work.
+ Do nothing.
"""
- mode = self.simulator.get("simulatorImplementationType")
- if mode != "ns3::RealtimeSimulatorImpl":
- msg = "The simulation must run in real time!!"
- self.error(msg)
- raise RuntimeError, msg
+ pass
def _connect_object(self):
dev1 = self.devices[0]
if dev1.uuid not in self.connected and dev2.uuid not in self.connected:
(s0, s1) = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM, 0)
- self._send_fd(dev1, s0)
- self._send_fd(dev2, s1)
+
+ dev1.send_fd(s0)
- def _send_fd(self, dev, fd):
- import passfd
-
- address = self.simulation.invoke(dev.uuid, "recvFD")
- sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
- sock.connect(address)
- passfd.sendfd(sock, fd, '0')
+ self._connected.add(dev1.uuid)
+ dev1._connected.add(self.uuid)
+
+ dev2.send_fd(s1)
+
+ self._connected.add(dev2.uuid)
+ dev2._connected.add(self.uuid)
- self._connected.add(dev.uuid)
- dev._connected.add(self.uuid)
ec.set(dev, "prefix", prefix)
ec.register_connection(node, dev)
- #queue = ec.register_resource("ns3::DropTailQueue")
- #ec.register_connection(dev, queue)
-
return dev
class LinuxNS3FdNetDeviceTest(unittest.TestCase):