6dc43a2bb4
Signed-off-by: Maximilian Wilhelm <max@sdn.clinic>
52 lines
1 KiB
Bash
Executable file
52 lines
1 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
[ -z "$VERBOSE" ] || set -x
|
|
|
|
[ -z "$IF_METRIC" ] && IF_METRIC="1"
|
|
[ -n "$IF_VRF_TABLE" ] && VRF_TABLE="table $IF_VRF_TABLE"
|
|
[ -n "$IF_VRF_MEMBER" ] && VRF_TABLE="vrf $IF_VRF_MEMBER"
|
|
[ -n "$IF_METRIC" ] && METRIC="metric $IF_METRIC"
|
|
|
|
addr_family() {
|
|
if [ "$1" != "${1#*[0-9].[0-9]}" ]; then
|
|
echo "-4"
|
|
elif [ "$1" != "${1#*:[0-9a-fA-F]}" ]; then
|
|
echo "-6"
|
|
else
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
configure_addresses() {
|
|
for i in $(ifquery -p address -i $INTERFACES_FILE $IFACE); do
|
|
addrfam=$(addr_family $i)
|
|
if [ "${IF_POINT_TO_POINT}" -a "${addrfam}" = "-4" ]; then
|
|
PEER="peer ${IF_POINT_TO_POINT}"
|
|
else
|
|
PEER=""
|
|
fi
|
|
|
|
${MOCK} ip $addrfam addr $1 $i $PEER dev $IFACE
|
|
done
|
|
}
|
|
|
|
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 $METRIC dev $IFACE
|
|
done
|
|
}
|
|
|
|
case "$PHASE" in
|
|
up)
|
|
configure_addresses add
|
|
configure_gateways add
|
|
;;
|
|
down)
|
|
configure_gateways del
|
|
configure_addresses del
|
|
;;
|
|
*) exit 0 ;;
|
|
esac
|