File 0002-Add-permanent-ARP-entries-for-DVR-fip-qrouter-veth-p.patch of Package openstack-neutron

From 685d9745f2dac84a865f389f6a14f4b551e565ae Mon Sep 17 00:00:00 2001
From: Brian Haley <bhaley@redhat.com>
Date: Wed, 3 Oct 2018 14:35:05 -0400
Subject: [PATCH 2/5] Add permanent ARP entries for DVR fip/qrouter veth pair

Since we know the IP and MAC addresses of both sides of the
fip/qrouter namespace veth pair device, just add permanent
ARP entries for them.

Change-Id: I6193b00681dfb79222eedfd00c89620321ac1b4f
Related-Bug: #1791989
(cherry picked from commit ac5815a110f0033c1a217481822fc0c72c1ba16c)
---
 neutron/agent/l3/dvr_fip_ns.py                 | 7 +++++++
 neutron/tests/unit/agent/l3/test_dvr_fip_ns.py | 6 ++++++
 2 files changed, 13 insertions(+)

Index: neutron-9.4.2.dev21/neutron/agent/l3/dvr_fip_ns.py
===================================================================
--- neutron-9.4.2.dev21.orig/neutron/agent/l3/dvr_fip_ns.py
+++ neutron-9.4.2.dev21/neutron/agent/l3/dvr_fip_ns.py
@@ -391,6 +391,13 @@ class FipNamespace(namespaces.Namespace)
 
         self._add_cidr_to_device(rtr_2_fip_dev, str(rtr_2_fip))
         self._add_cidr_to_device(fip_2_rtr_dev, str(fip_2_rtr))
+
+        # Add permanant ARP entries on each side of veth pair
+        rtr_2_fip_dev.neigh.add(common_utils.cidr_to_ip(fip_2_rtr),
+                                fip_2_rtr_dev.link.address)
+        fip_2_rtr_dev.neigh.add(common_utils.cidr_to_ip(rtr_2_fip),
+                                rtr_2_fip_dev.link.address)
+
         self._add_rtr_ext_route_rule_to_route_table(ri, fip_2_rtr,
                                                     fip_2_rtr_name)
 
Index: neutron-9.4.2.dev21/neutron/tests/unit/agent/l3/test_dvr_fip_ns.py
===================================================================
--- neutron-9.4.2.dev21.orig/neutron/tests/unit/agent/l3/test_dvr_fip_ns.py
+++ neutron-9.4.2.dev21/neutron/tests/unit/agent/l3/test_dvr_fip_ns.py
@@ -24,6 +24,7 @@ from neutron.agent.l3 import router_info
 from neutron.agent.linux import ip_lib
 from neutron.agent.linux import iptables_manager
 from neutron.common import exceptions as n_exc
+from neutron.common import utils as n_utils
 from neutron.tests import base
 
 _uuid = uuidutils.generate_uuid
@@ -301,6 +302,11 @@ class TestDvrFipNs(base.BaseTestCase):
             device.addr.add.assert_has_calls(expected)
             self.assertEqual(2, device.addr.add.call_count)
 
+        expected = [mock.call(n_utils.cidr_to_ip(addr_pair[1]), mock.ANY),
+                    mock.call(n_utils.cidr_to_ip(addr_pair[0]), mock.ANY)]
+        device.neigh.add.assert_has_calls(expected)
+        self.assertEqual(2, device.neigh.add.call_count)
+
         device.route.add_gateway.assert_called_once_with(
             '169.254.31.29', table=16)
         self.assertTrue(
openSUSE Build Service is sponsored by