From cf17176bfc0806c8b331ded8d3dcbc6e86e2b7d7 Mon Sep 17 00:00:00 2001 From: Julien Duponchelle Date: Wed, 12 Jul 2017 11:33:32 +0200 Subject: [PATCH] Fix recreate a link with dynamips Fix #1122 --- gns3server/compute/dynamips/nios/nio_udp.py | 2 ++ gns3server/compute/dynamips/nodes/router.py | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/gns3server/compute/dynamips/nios/nio_udp.py b/gns3server/compute/dynamips/nios/nio_udp.py index 106e3836..522b3c5a 100644 --- a/gns3server/compute/dynamips/nios/nio_udp.py +++ b/gns3server/compute/dynamips/nios/nio_udp.py @@ -92,6 +92,8 @@ class NIOUDP(NIO): @asyncio.coroutine def close(self): if self._local_tunnel_lport: + name = 'DYNAMIPS-{}-{}'.format(self._local_tunnel_lport, self._local_tunnel_rport) + yield from self._node.ubridge_delete_bridge(name) self._node.manager.port_manager.release_udp_port(self._local_tunnel_lport, self ._node.project) if self._local_tunnel_rport: self._node.manager.port_manager.release_udp_port(self._local_tunnel_rport, self._node.project) diff --git a/gns3server/compute/dynamips/nodes/router.py b/gns3server/compute/dynamips/nodes/router.py index f0a87a1b..e9a0fa47 100644 --- a/gns3server/compute/dynamips/nodes/router.py +++ b/gns3server/compute/dynamips/nodes/router.py @@ -1281,6 +1281,17 @@ class Router(BaseNode): yield from self.slot_enable_nio(slot_number, port_number) adapter.add_nio(port_number, nio) + @asyncio.coroutine + def slot_update_nio_binding(self, slot_number, port_number, nio): + """ + Update a slot NIO binding. + + :param slot_number: slot number + :param port_number: port number + :param nio: NIO instance to add to the slot/port + """ + pass + @asyncio.coroutine def slot_remove_nio_binding(self, slot_number, port_number): """ @@ -1313,8 +1324,7 @@ class Router(BaseNode): nio = adapter.get_nio(port_number) if nio is None: return - if isinstance(nio, NIOUDP): - self.manager.port_manager.release_udp_port(nio.lport, self._project) + yield from nio.close() adapter.remove_nio(port_number) log.info('Router "{name}" [{id}]: NIO {nio_name} removed from port {slot_number}/{port_number}'.format(name=self._name,