From 5442edb9e0afb6fdc4cd81e5d1ebd3e0d4e6accf Mon Sep 17 00:00:00 2001 From: Gurucharan Shetty Date: Mon, 30 Jan 2012 20:17:53 -0800 Subject: [PATCH] rhel: Enable DHCP in redhat network scripts. The current network-script, ifup-ovs does not work well if you enable DHCP on the OVS. It will work if we name the bridge alphabetically greater than the underlying physical interfaces. Even then, it will do multiple DHCP attempts slowing down the boot up process. This patch allows DHCP on an OVS bridge. Signed-off-by: Gurucharan Shetty --- rhel/README.RHEL | 12 ++++++++++++ rhel/etc_sysconfig_network-scripts_ifup-ovs | 16 +++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/rhel/README.RHEL b/rhel/README.RHEL index 3e682b39..b97fb6c0 100644 --- a/rhel/README.RHEL +++ b/rhel/README.RHEL @@ -62,6 +62,18 @@ IPADDR=A.B.C.D NETMASK=X.Y.Z.0 HOTPLUG=no +Enable DHCP on the bridge: +* Needs OVSBOOTPROTO instead of BOOTPROTO. +* All the interfaces that can reach the DHCP server +as a comma separated list in OVSDHCPINTERFACES. + +DEVICE=ovsbridge0 +ONBOOT=yes +DEVICETYPE=ovs +TYPE=OVSBridge +OVSBOOTPROTO="dhcp" +OVSDHCPINTERFACES="eth0" +HOTPLUG=no Adding physical eth0 to ovsbridge0 described above: diff --git a/rhel/etc_sysconfig_network-scripts_ifup-ovs b/rhel/etc_sysconfig_network-scripts_ifup-ovs index 7074c072..18cebc4d 100755 --- a/rhel/etc_sysconfig_network-scripts_ifup-ovs +++ b/rhel/etc_sysconfig_network-scripts_ifup-ovs @@ -36,12 +36,25 @@ fi case "$TYPE" in OVSBridge) ovs-vsctl -- --may-exist add-br "$DEVICE" $OVS_OPTIONS ${OVS_EXTRA+-- $OVS_EXTRA} - ${OTHERSCRIPT} ${CONFIG} ${2} + if [ "${OVSBOOTPROTO}" = "dhcp" ] && [ -n "${OVSINTF}" ]; then + case ${OVSDHCPINTERFACES} in + ${OVSINTF#ifcfg-} | \ + "${OVSINTF#ifcfg-},"* | \ + *",${OVSINTF#ifcfg-}" | \ + *",${OVSINTF#ifcfg-},"*) + BOOTPROTO=dhcp ${OTHERSCRIPT} ${CONFIG} + ;; + esac + fi + if [ "${OVSBOOTPROTO}" != "dhcp" ] && [ -z "${OVSINTF}" ]; then + ${OTHERSCRIPT} ${CONFIG} + fi ;; OVSPort) /sbin/ifup "$OVS_BRIDGE" ${OTHERSCRIPT} ${CONFIG} ${2} ovs-vsctl -- --may-exist add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS ${OVS_EXTRA+-- $OVS_EXTRA} + OVSINTF=${CONFIG} /sbin/ifup "$OVS_BRIDGE" ;; OVSIntPort) /sbin/ifup "$OVS_BRIDGE" @@ -55,6 +68,7 @@ case "$TYPE" in done ovs-vsctl -- --fake-iface add-bond "$OVS_BRIDGE" "$DEVICE" ${BOND_IFACES} $OVS_OPTIONS ${OVS_EXTRA+-- $OVS_EXTRA} ${OTHERSCRIPT} ${CONFIG} ${2} + OVSINTF=${CONFIG} /sbin/ifup "$OVS_BRIDGE" ;; *) echo $"Invalid OVS interface type $TYPE" -- 2.30.2