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 is my attempt to allow DHCP on an OVS. It is probably
not a good solution and I am open to suggestions.

Signed-off-by: Gurucharan Shetty <gshe...@nicira.com>
---
 rhel/README.RHEL                            |    8 ++++++++
 rhel/etc_sysconfig_network-scripts_ifup-ovs |   10 +++++++++-
 2 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/rhel/README.RHEL b/rhel/README.RHEL
index 3e682b3..eed8831 100644
--- a/rhel/README.RHEL
+++ b/rhel/README.RHEL
@@ -62,6 +62,14 @@ IPADDR=A.B.C.D
 NETMASK=X.Y.Z.0
 HOTPLUG=no
 
+Enable DHCP on the bridge(Needs OVSBOOTPROTO instead of BOOTPROTO):
+
+DEVICE=ovsbridge0
+ONBOOT=yes
+DEVICETYPE=ovs
+TYPE=OVSBridge
+OVSBOOTPROTO="dhcp"
+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..33c0b49 100755
--- a/rhel/etc_sysconfig_network-scripts_ifup-ovs
+++ b/rhel/etc_sysconfig_network-scripts_ifup-ovs
@@ -36,17 +36,24 @@ fi
 case "$TYPE" in
        OVSBridge)
                ovs-vsctl -- --may-exist add-br "$DEVICE" $OVS_OPTIONS 
${OVS_EXTRA+-- $OVS_EXTRA}
-               ${OTHERSCRIPT} ${CONFIG} ${2}
+               if [ "x${2}" = "xpost" ]; then
+                       if [ "x$OVSBOOTPROTO" = "xdhcp" ]; then
+                               export BOOTPROTO="dhcp"
+                       fi
+                       ${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}
+               /sbin/ifup "$OVS_BRIDGE" "post"
                ;;
        OVSIntPort)
                /sbin/ifup "$OVS_BRIDGE"
                ovs-vsctl -- --may-exist add-port "$OVS_BRIDGE" "$DEVICE" 
$OVS_OPTIONS -- set Interface "$DEVICE" type=internal ${OVS_EXTRA+-- $OVS_EXTRA}
                ${OTHERSCRIPT} ${CONFIG} ${2}
+               /sbin/ifup "$OVS_BRIDGE" "post"
                ;;
        OVSBond)
                /sbin/ifup "$OVS_BRIDGE"
@@ -55,6 +62,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}
+               /sbin/ifup "$OVS_BRIDGE" "post"
                ;;
        *)
                echo $"Invalid OVS interface type $TYPE"
-- 
1.7.2.5

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to