[ovs-dev] [PATCH v4] rhel: Enable DHCP in redhat network scripts.

Gurucharan Shetty gshetty at nicira.com
Tue Jan 31 21:53:49 UTC 2012


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 <gshetty at nicira.com>
---
 rhel/README.RHEL                            |   12 ++++++++++++
 rhel/etc_sysconfig_network-scripts_ifup-ovs |   16 +++++++++++++++-
 2 files changed, 27 insertions(+), 1 deletions(-)

diff --git a/rhel/README.RHEL b/rhel/README.RHEL
index 3e682b3..b97fb6c 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 7074c07..18cebc4 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"
-- 
1.7.2.5




More information about the dev mailing list