5d6c7732ed
When having multiple addresses set from the same prefix they might/will(?) be configured as 'secondary' and implicitly removed when removing the non-secondary address. This leads ip complaining about not being able to remove the secondaries as they are already gone. So we ignore errors while deconfiguring addresses as they liked occur when removing a vanish address anyway. Signed-off-by: Maximilian Wilhelm <max@sdn.clinic>
62 lines
1.6 KiB
Bash
Executable file
62 lines
1.6 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 addr in ${IF_ADDRESSES}; do
|
|
addrfam=$(addr_family ${addr})
|
|
if [ "${IF_POINT_TO_POINT}" -a "${addrfam}" = "-4" ]; then
|
|
PEER="peer ${IF_POINT_TO_POINT}"
|
|
else
|
|
PEER=""
|
|
fi
|
|
|
|
if [ -z "${MOCK}" -a "${1}" = "del" ]; then
|
|
# When having multiple addresses set from the same prefix they might/will(?) be configured
|
|
# as 'secondary' and implicitly removed when removing the non-secondary address. This
|
|
# leads ip complaining about not being able to remove the secondaries as they are already
|
|
# gone. So we ignore errors while deconfiguring addresses as they liked occur when removing
|
|
# a vanish address anyway.
|
|
${MOCK} ip "${addrfam}" addr "${1}" "${addr}" ${PEER} dev "${IFACE}" 2>/dev/null
|
|
else
|
|
${MOCK} ip "${addrfam}" addr "${1}" "${addr}" ${PEER} dev "${IFACE}"
|
|
fi
|
|
done
|
|
}
|
|
|
|
configure_gateways() {
|
|
for gw in ${IF_GATEWAYS}; do
|
|
addrfam=$(addr_family ${gw})
|
|
${MOCK} ip "${addrfam}" route "${1}" default via "${gw}" ${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
|