diff --git a/neutron/plugins/ml2/drivers/openvswitch/agent/openflow/native/br_int.py b/neutron/plugins/ml2/drivers/openvswitch/agent/openflow/native/br_int.py index 733f63da616..73ada8e40de 100644 --- a/neutron/plugins/ml2/drivers/openvswitch/agent/openflow/native/br_int.py +++ b/neutron/plugins/ml2/drivers/openvswitch/agent/openflow/native/br_int.py @@ -465,6 +465,11 @@ class OVSIntegrationBridge(ovs_bridge.OVSAgentBridge, eth_type=0x86DD) def setup_local_egress_flows(self, in_port, vlan): + if in_port == constants.OFPORT_INVALID: + LOG.warning("Invalid ofport: %s, vlan: %s - " + "skipping setup_local_egress_flows", in_port, vlan) + return + # Setting priority to 8 to give advantage to ARP/MAC spoofing rules self.install_goto(table_id=constants.LOCAL_SWITCHING, priority=8, diff --git a/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/openflow/native/test_br_int.py b/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/openflow/native/test_br_int.py index a79e877a3d3..cdd7f162c93 100644 --- a/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/openflow/native/test_br_int.py +++ b/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/openflow/native/test_br_int.py @@ -716,6 +716,13 @@ class OVSIntegrationBridgeTest(ovs_bridge_test_base.OVSBridgeTestBase): ] self.assertEqual(expected, self.mock.mock_calls) + def test_setup_local_egress_flows_ofport_invalid(self): + in_port = constants.OFPORT_INVALID + vlan = 3333 + self.br.setup_local_egress_flows(in_port=in_port, vlan=vlan) + + self.assertFalse(self.mock.called) + def test_install_garp_blocker(self): vlan = 2222 ip = '192.0.0.10'