net/keepalived: move track_interface generation into own section
authorFlorian Eckert <fe@dev.tdt.de>
Wed, 18 Oct 2017 14:00:38 +0000 (16:00 +0200)
committerFlorian Eckert <fe@dev.tdt.de>
Mon, 30 Oct 2017 14:40:25 +0000 (15:40 +0100)
In a vrrp_instance the track_interface could not be referenced similar
to a track_script. The uci track_interface section must be always set
into every vrrp_instance.

During config generation use the already prepared function
"print_track_elem_indent" to write the track_interface section into every
vrrp_instance which references this.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
net/keepalived/files/keepalived.init

index 400d12a0139cc91c54a720470bc5e039caaae280..41e311d545311356f556acc87df21b60d1367d64 100644 (file)
@@ -297,8 +297,8 @@ vrrp_instance() {
                printf "$INDENT_1}\n" >> $KEEPALIVED_CONF
        done
 
-       # Handle track_interface & track_script lists
-       for opt in track_interface track_script; do
+       # Handle track_script lists
+       for opt in track_script; do
                config_get $opt $1 $opt
                eval optval=\$$opt
                [ -z "$optval" ] && continue
@@ -309,6 +309,18 @@ vrrp_instance() {
                printf "$INDENT_1}\n" >> $KEEPALIVED_CONF
        done
 
+       # Handle track_interface lists
+       for opt in track_interface; do
+               config_get $opt $1 $opt
+               eval optval=\$$opt
+               [ -z "$optval" ] && continue
+               printf "$INDENT_1$opt {\n" >> $KEEPALIVED_CONF
+               for t in $optval; do
+                       config_foreach print_track_elem_indent track_interface $t $INDENT_2
+               done
+               printf "$INDENT_1}\n" >> $KEEPALIVED_CONF
+       done
+
        # Handle simple lists of strings (with no spaces in between)
        for opt in unicast_peer; do
                config_get $opt $1 $opt