diff --git a/gns3server/modules/dynamips/nodes/ethernet_switch.py b/gns3server/modules/dynamips/nodes/ethernet_switch.py index fc74e09c..2f8f0d87 100644 --- a/gns3server/modules/dynamips/nodes/ethernet_switch.py +++ b/gns3server/modules/dynamips/nodes/ethernet_switch.py @@ -298,6 +298,9 @@ class EthernetSwitch(Device): nio = self._nios[port_number] + if not nio: + raise DynamipsError("Port {} is not connected".format(port_number)) + data_link_type = data_link_type.lower() if data_link_type.startswith("dlt_"): data_link_type = data_link_type[4:] @@ -324,6 +327,10 @@ class EthernetSwitch(Device): raise DynamipsError("Port {} is not allocated".format(port_number)) nio = self._nios[port_number] + + if not nio: + raise DynamipsError("Port {} is not connected".format(port_number)) + yield from nio.unbind_filter("both") log.info('Ethernet switch "{name}" [{id}]: stopping packet capture on port {port}'.format(name=self._name, id=self._id, diff --git a/gns3server/modules/dynamips/nodes/router.py b/gns3server/modules/dynamips/nodes/router.py index 4efee4d0..0b0d6492 100644 --- a/gns3server/modules/dynamips/nodes/router.py +++ b/gns3server/modules/dynamips/nodes/router.py @@ -1303,6 +1303,10 @@ class Router(BaseVM): nio = adapter.get_nio(port_number) + if not nio: + raise DynamipsError("Port {slot_number}/{port_number} is not connected".format(slot_number=slot_number, + port_number=port_number)) + if nio.input_filter[0] is not None and nio.output_filter[0] is not None: raise DynamipsError("Port {port_number} has already a filter applied on {adapter}".format(adapter=adapter, port_number=port_number)) @@ -1335,6 +1339,11 @@ class Router(BaseVM): port_number=port_number)) nio = adapter.get_nio(port_number) + + if not nio: + raise DynamipsError("Port {slot_number}/{port_number} is not connected".format(slot_number=slot_number, + port_number=port_number)) + yield from nio.unbind_filter("both") log.info('Router "{name}" [{id}]: stopping packet capture on port {slot_number}/{port_number}'.format(name=self._name, diff --git a/gns3server/modules/virtualbox/virtualbox_vm.py b/gns3server/modules/virtualbox/virtualbox_vm.py index ddeb6089..546c2239 100644 --- a/gns3server/modules/virtualbox/virtualbox_vm.py +++ b/gns3server/modules/virtualbox/virtualbox_vm.py @@ -871,6 +871,10 @@ class VirtualBoxVM(BaseVM): raise VirtualBoxError("Sorry, packet capturing on a started VirtualBox VM is not supported.") nio = adapter.get_nio(0) + + if not nio: + raise VirtualBoxError("Adapter {} is not connected".format(adapter_number)) + if nio.capturing: raise VirtualBoxError("Packet capture is already activated on adapter {adapter_number}".format(adapter_number=adapter_number)) @@ -893,6 +897,10 @@ class VirtualBoxVM(BaseVM): adapter_number=adapter_number)) nio = adapter.get_nio(0) + + if not nio: + raise VirtualBoxError("Adapter {} is not connected".format(adapter_number)) + nio.stopPacketCapture() log.info("VirtualBox VM '{name}' [{id}]: stopping packet capture on adapter {adapter_number}".format(name=self.name,