diff --git a/executor-scripts/linux/static b/executor-scripts/linux/static index d7e3ee3..e14ca6b 100755 --- a/executor-scripts/linux/static +++ b/executor-scripts/linux/static @@ -1,5 +1,8 @@ #!/bin/sh +VRF_TABLE="" +[ -n "$IF_VRF_TABLE" ] && VRF_TABLE="table $IF_VRF_TABLE" + addr_family() { if [ "$1" != "${1#*[0-9].[0-9]}" ]; then echo "-4" @@ -20,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 + ${MOCK} ip $addrfam route $1 default via $i $VRF_TABLE done } diff --git a/tests/fixtures/vrf.interfaces b/tests/fixtures/vrf.interfaces index bfcf11b..fc40df2 100644 --- a/tests/fixtures/vrf.interfaces +++ b/tests/fixtures/vrf.interfaces @@ -1,5 +1,6 @@ iface vrf-red vrf-table 1 + gateway 203.0.113.2 auto eth0 iface eth0 diff --git a/tests/linux/static_test b/tests/linux/static_test index a07ea8e..79bf820 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 +tests_init up down vrf_up vrf_down up_body() { export IFACE=eth0 PHASE=up MOCK=echo INTERFACES_FILE="$FIXTURES/static-eth0.interfaces" @@ -25,3 +25,19 @@ down_body() { -o match:'route del default via 2001:db8:1000:2::1' \ ${EXECUTOR} } + +vrf_up_body() { + export IFACE=vrf-red PHASE=up MOCK=echo INTERFACES_FILE="$FIXTURES/vrf.interfaces" \ + IF_VRF_TABLE=1 + atf_check -s exit:0 \ + -o match:'route add default via 203.0.113.2 table 1' \ + ${EXECUTOR} +} + +vrf_down_body() { + export IFACE=vrf-red PHASE=down MOCK=echo INTERFACES_FILE="$FIXTURES/vrf.interfaces" \ + IF_VRF_TABLE=1 + atf_check -s exit:0 \ + -o match:'route del default via 203.0.113.2 table 1' \ + ${EXECUTOR} +}