From d9795afd64a38fbc7e7d42a0b00c009755d8df53 Mon Sep 17 00:00:00 2001 From: Thomas Graf Date: Fri, 25 Jan 2013 17:31:56 +0100 Subject: [PATCH] rhel: Add OVSREQUIRES to automatically bring up OpenFlow interface dependencies The use of OpenFlow controllers may require for a subset of the network (typically the management network intrerface) to be brought up before the openvswitch service is started. The newly introduced key "OVSREQUIRES" allows to specify a list of interfaces that need the be brought up before the openvswitch service is autostarted. It is also possible to build a chain of bridge dependencies. TYPE=OVSBridge OVSREQURIES="em1" [...] A special UPPEDSTACK var that is passed along avoids getting lost in dependency loops. Signed-off-by: Thomas Graf Signed-off-by: Ben Pfaff --- rhel/etc_sysconfig_network-scripts_ifup-ovs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/rhel/etc_sysconfig_network-scripts_ifup-ovs b/rhel/etc_sysconfig_network-scripts_ifup-ovs index 61b0af9d5..dcf90e45b 100755 --- a/rhel/etc_sysconfig_network-scripts_ifup-ovs +++ b/rhel/etc_sysconfig_network-scripts_ifup-ovs @@ -34,6 +34,25 @@ if [ ! -x ${OTHERSCRIPT} ]; then OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-eth" fi +check_recursion() +{ + [ -n "${UPPEDSTACK}" ] && for _r in ${UPPEDSTACK}; do + [ "$_r" = "$1" ] && return 1 + done + + return 0 +} + +if [ -z "${UPPEDSTACK}" ]; then + UPPEDSTACK="${DEVICE}" +fi + +[ -n "${OVSREQUIRES}" ] && for _i in ${OVSREQUIRES}; do + if ( check_recursion "$_i" ); then + UPPEDSTACK="${UPPEDSTACK} $_i" /sbin/ifup "$_i" + fi +done + [ -f /var/lock/subsys/openvswitch ] || /sbin/service openvswitch start case "$TYPE" in -- 2.20.1