#!/bin/sh
kernel_version_48() {
	local kver="$(uname -r)"
	local kverMaj="$(echo $kver | sed 's/\([0-9]\+\)\.\([0-9]\+\).*/\1/')"
	local kverMin="$(echo $kver | sed 's/\([0-9]\+\)\.\([0-9]\+\).*/\2/')"

	if [ "$kverMaj" -le 4 -a "$kverMin" -lt 8 ]; then
		return 0
	fi
	return 1
}

handle_init() {
	${MOCK} /sbin/ip link $1 $IFACE type vrf table $IF_VRF_TABLE
	if kernel_version_48; then
		${MOCK} /sbin/ip rule $1 iif $IFACE table $IF_VRF_TABLE
		${MOCK} /sbin/ip rule $1 oif $IFACE table $IF_VRF_TABLE
	fi
}

handle_member() {
	${MOCK} /sbin/ip link set $IFACE master $IF_VRF_MEMBER
}

handle_member_off() {
	${MOCK} /sbin/ip link set $IFACE nomaster
}

[ -n "$VERBOSE" ] && set -x

case "$PHASE" in
create)
	if [ -n "$IF_VRF_TABLE" ]; then
		handle_init "add"
	fi
	;;
pre-up)
	if [ -n "$IF_VRF_MEMBER" ]; then
		handle_member
	fi
	;;
post-down)
	if [ -n "$IF_VRF_MEMBER" ]; then
		handle_member_off
	fi
	;;
destroy)
	if [ -n "$IF_VRF_TABLE" ]; then
		handle_init "del"
	fi
	;;
depend)
	echo "$IF_VRF_MEMBER"
	;;
*)
	;;
esac

exit 0
