]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Adds an option to enable broadcast replies to Dnsmasq
authorItzik Brown <itzikb@dev.mellanox.co.il>
Tue, 2 Sep 2014 07:02:22 +0000 (10:02 +0300)
committerItzik Brown <itzikb@redhat.com>
Mon, 27 Oct 2014 15:02:45 +0000 (17:02 +0200)
Adds a flag for DHCP agent configuration
to add dhcp-broadcast flag to Dnsmasq process
In order to support virtual network on top of Infiniband
Fabric, there is a requirement to receive DHCP response
via broadcast message (according to IB Spec).

DocImpact
Change-Id: I95329e535bacf14b650a8f37179ecd020b5bfafe
Closes-Bug: #1293953

etc/dhcp_agent.ini
neutron/agent/linux/dhcp.py
neutron/tests/unit/test_linux_dhcp.py

index 9836d350007d4a55b97520834fc2dff57070987d..0f998789449b77c76a3e726b204335efc0578550 100644 (file)
@@ -72,6 +72,9 @@
 # Location to DHCP lease relay UNIX domain socket
 # dhcp_lease_relay_socket = $state_path/dhcp/lease_relay
 
+# Use broadcast in DHCP replies
+# dhcp_broadcast_reply = False
+
 # Location of Metadata Proxy UNIX domain socket
 # metadata_proxy_socket = $state_path/metadata_proxy
 
index 51e89913d48b254e90cea7d1251f83cb05ccadcb..67e498d2dd2cadd26bb213a4b170b9096c58edbc 100644 (file)
@@ -57,6 +57,8 @@ OPTS = [
         'dnsmasq_lease_max',
         default=(2 ** 24),
         help=_('Limit number of leases to prevent a denial-of-service.')),
+    cfg.BoolOpt('dhcp_broadcast_reply', default=False,
+                help=_("Use broadcast in DHCP replies")),
 ]
 
 IPV4 = 4
@@ -414,6 +416,9 @@ class Dnsmasq(DhcpLocalProcess):
         if self.conf.dhcp_domain:
             cmd.append('--domain=%s' % self.conf.dhcp_domain)
 
+        if self.conf.dhcp_broadcast_reply:
+            cmd.append('--dhcp-broadcast')
+
         ip_wrapper = ip_lib.IPWrapper(self.root_helper,
                                       self.network.namespace)
         ip_wrapper.netns.execute(cmd, addl_env=env)
index a0187369b82a271b1f96fdc7fb5ea4530c7e19a4..39edd30a8fd55ab6e37eb387c96adfbd0139f7ac 100644 (file)
@@ -856,6 +856,11 @@ class TestDnsmasq(TestBase):
             network=FakeV4Network(),
             max_leases=256)
 
+    def test_spawn_cfg_broadcast(self):
+        self.conf.set_override('dhcp_broadcast_reply', True)
+        self._test_spawn(['--conf-file=', '--domain=openstacklocal',
+                          '--dhcp-broadcast'])
+
     def test_output_opts_file(self):
         fake_v6 = '2001:0200:feed:7ac0::1'
         expected = (