diff --git a/neutron/agent/linux/ip_lib.py b/neutron/agent/linux/ip_lib.py index c8a0e672a43..b4c9bd07203 100644 --- a/neutron/agent/linux/ip_lib.py +++ b/neutron/agent/linux/ip_lib.py @@ -147,8 +147,8 @@ def add_device_to_namespace(self, device): device.link.set_netns(self.namespace) def add_vxlan(self, name, vni, group=None, dev=None, ttl=None, tos=None, - local=None, port=None): - cmd = ['add', name, 'type', 'vxlan', 'id', vni, 'proxy'] + local=None, port=None, proxy=False): + cmd = ['add', name, 'type', 'vxlan', 'id', vni] if group: cmd.extend(['group', group]) if dev: @@ -159,6 +159,8 @@ def add_vxlan(self, name, vni, group=None, dev=None, ttl=None, tos=None, cmd.extend(['tos', tos]) if local: cmd.extend(['local', local]) + if proxy: + cmd.append('proxy') # tuple: min,max if port and len(port) == 2: cmd.extend(['port', port[0], port[1]]) diff --git a/neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py b/neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py index d7159a37b51..30f12740596 100755 --- a/neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py +++ b/neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py @@ -256,6 +256,8 @@ def ensure_vxlan(self, segmentation_id): args['ttl'] = cfg.CONF.VXLAN.ttl if cfg.CONF.VXLAN.tos: args['tos'] = cfg.CONF.VXLAN.tos + if cfg.CONF.VXLAN.l2_population: + args['proxy'] = True int_vxlan = self.ip.add_vxlan(interface, segmentation_id, **args) int_vxlan.link.set_up() LOG.debug(_("Done creating vxlan interface %s"), interface) diff --git a/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py b/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py index f115733695d..535900dd943 100644 --- a/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py +++ b/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py @@ -361,6 +361,13 @@ def test_ensure_vxlan(self): add_vxlan_fn.assert_called_with("vxlan-" + seg_id, seg_id, group="224.0.0.1", dev=self.lbm.local_int) + cfg.CONF.set_override('l2_population', 'True', 'VXLAN') + self.assertEqual(self.lbm.ensure_vxlan(seg_id), + "vxlan-" + seg_id) + add_vxlan_fn.assert_called_with("vxlan-" + seg_id, seg_id, + group="224.0.0.1", + dev=self.lbm.local_int, + proxy=True) def test_update_interface_ip_details(self): gwdict = dict(gateway='1.1.1.1',