summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Dake <stdake@cisco.com>2015-04-15 16:38:09 -0700
committerSteven Dake <stdake@cisco.com>2015-04-15 19:18:41 -0700
commit64a2cf40a5a0690afc17a804d6ffa44520553535 (patch)
tree3d92516f5a37ef5f8a7b029a0fbcf953427d2169
parent095fbd7d7c07984141bda1d31779a3b046c6be90 (diff)
downloadkolla-64a2cf40a5a0690afc17a804d6ffa44520553535.tar.gz
kolla-64a2cf40a5a0690afc17a804d6ffa44520553535.zip
Add workaround to work with cirros image
The cirros image uses an old dhcp client which does not work properly with hardware that has checksum offload enabled. Add a bootp rule to rewrite the checksum via iptables. Latest cirros 0.3.33 is afflicted by this bug. Change-Id: Ibfd1f87af5d0bef9fcb1354121e76e4e0db8ab5e
-rwxr-xr-xdocker/neutron/neutron-agents/config-scripts/config-dhcp-agent.sh8
1 files changed, 8 insertions, 0 deletions
diff --git a/docker/neutron/neutron-agents/config-scripts/config-dhcp-agent.sh b/docker/neutron/neutron-agents/config-scripts/config-dhcp-agent.sh
index 415644aa6..08d2b21b1 100755
--- a/docker/neutron/neutron-agents/config-scripts/config-dhcp-agent.sh
+++ b/docker/neutron/neutron-agents/config-scripts/config-dhcp-agent.sh
@@ -18,6 +18,14 @@ check_required_vars VERBOSE_LOGGING DEBUG_LOGGING MECHANISM_DRIVERS \
cfg=/etc/neutron/dhcp_agent.ini
neutron_conf=/etc/neutron/neutron.conf
+# Workaround bug in dhclient in cirros images which does not correctly
+# handle setting checksums of packets when using hardware with checksum
+# offloading. See:
+# https://www.rdoproject.org/forum/discussion/567/packstack-allinone-grizzly-cirros-image-cannot-get-a-dhcp-address-when-a-centos-image-can/p1
+
+/usr/sbin/iptables -A POSTROUTING -t mangle -p udp --dport bootpc \
+ -j CHECKSUM --checksum-fill
+
if [[ ${MECHANISM_DRIVERS} =~ linuxbridge ]]; then
interface_driver="neutron.agent.linux.interface.BridgeInterfaceDriver"
elif [[ ${MECHANISM_DRIVERS} == "openvswitch" ]]; then