diff --git a/pyof/v0x01/controller2switch/packet_out.py b/pyof/v0x01/controller2switch/packet_out.py index 8a68c3f1a..64136514d 100644 --- a/pyof/v0x01/controller2switch/packet_out.py +++ b/pyof/v0x01/controller2switch/packet_out.py @@ -112,13 +112,17 @@ def _update_actions_len(self): self.actions_len = ListOfActions(self.actions).get_size() def _validate_in_port(self): - port = self.in_port valid = True - if isinstance(port, Port): - if port not in _VIRT_IN_PORTS: + if (isinstance(self.in_port, int) and + (self.in_port > 0 and self.in_port < Port.OFPP_MAX.value)): + return + if not isinstance(self.in_port, Port): + try: + self.in_port = Port(self.in_port) + except ValueError: valid = False - elif isinstance(port, int) and (port < 1 or port >= - Port.OFPP_MAX.value): + if self.in_port not in _VIRT_IN_PORTS: valid = False if not valid: - raise ValidationError('{} is not a valid input port.'.format(port)) + raise ValidationError( + '{} is not a valid input port.'.format(self.in_port))