openvswitch: add option for failure mode
[feed/packages.git] / net / openvswitch / files / openvswitch.init
index 53259d5133a3aaeccc0d0d1db910ff20ef44d31d..f4a88edcfaf5a7cd22073e13cd9e09b2eb58895f 100755 (executable)
@@ -198,6 +198,20 @@ ovs_bridge_validate_datapath_desc() {
        fi
 }
 
+ovs_bridge_validate_fail_mode() {
+       local fail_mode="$1"
+
+       case "$fail_mode" in
+               secure|standalone)
+                       return 0
+                       ;;
+               *)
+                       logger -t openvswitch "invalid fail_mode: $fail_mode"
+                       return 1
+                       ;;
+       esac
+}
+
 ovs_bridge_init() {
        local cfg="$1"
 
@@ -226,6 +240,17 @@ ovs_bridge_init() {
                }
        }
 
+       config_get fail_mode "$cfg" fail_mode
+       [ -n "$fail_mode" ] && {
+               ovs_bridge_validate_fail_mode "$fail_mode" && {
+                       ovs-vsctl set-fail-mode "$name" "$fail_mode" 2> /dev/null
+               } || {
+                       ovs-vsctl del-fail-mode "$name" 2> /dev/null
+               }
+       } || {
+               ovs-vsctl del-fail-mode "$name" 2> /dev/null
+       }
+
        config_list_foreach "$cfg" "ports" ovs_bridge_port_add
        config_foreach ovs_bridge_port_add_complex ovs_port "$name"
        config_get_bool drop "$cfg" "drop_unknown_ports" 0