diff --git a/executor-scripts/linux/static b/executor-scripts/linux/static index e14ca6b..f03b61d 100755 --- a/executor-scripts/linux/static +++ b/executor-scripts/linux/static @@ -1,7 +1,7 @@ #!/bin/sh -VRF_TABLE="" [ -n "$IF_VRF_TABLE" ] && VRF_TABLE="table $IF_VRF_TABLE" +[ -n "$IF_METRIC" ] && METRIC="metric $IF_METRIC" addr_family() { if [ "$1" != "${1#*[0-9].[0-9]}" ]; then @@ -23,7 +23,7 @@ configure_addresses() { configure_gateways() { for i in $(ifquery -p gateway -i $INTERFACES_FILE $IFACE); do addrfam=$(addr_family $i) - ${MOCK} ip $addrfam route $1 default via $i $VRF_TABLE + ${MOCK} ip $addrfam route $1 default via $i $VRF_TABLE $METRIC done } diff --git a/tests/linux/static_test b/tests/linux/static_test index 79bf820..d8bdab2 100755 --- a/tests/linux/static_test +++ b/tests/linux/static_test @@ -4,7 +4,7 @@ EXECUTOR="$(atf_get_srcdir)/../../executor-scripts/linux/static" FIXTURES="$(atf_get_srcdir)/../fixtures" -tests_init up down vrf_up vrf_down +tests_init up down vrf_up vrf_down metric_up metric_down up_body() { export IFACE=eth0 PHASE=up MOCK=echo INTERFACES_FILE="$FIXTURES/static-eth0.interfaces" @@ -41,3 +41,19 @@ vrf_down_body() { -o match:'route del default via 203.0.113.2 table 1' \ ${EXECUTOR} } + +metric_up_body() { + export IFACE=vrf-red PHASE=up MOCK=echo INTERFACES_FILE="$FIXTURES/vrf.interfaces" \ + IF_VRF_TABLE=1 IF_METRIC=20 + atf_check -s exit:0 \ + -o match:'route add default via 203.0.113.2 table 1 metric 20' \ + ${EXECUTOR} +} + +metric_down_body() { + export IFACE=vrf-red PHASE=down MOCK=echo INTERFACES_FILE="$FIXTURES/vrf.interfaces" \ + IF_VRF_TABLE=1 IF_METRIC=20 + atf_check -s exit:0 \ + -o match:'route del default via 203.0.113.2 table 1 metric 20' \ + ${EXECUTOR} +}