#!/bin/sh

if [ x"$new_rfc3442_classless_static_routes" != x"" ]; then
    if [ x"$reason" == x"BOUND" -o x"$reason" == x"REBOOT" ]; then
		rfc_routes=($new_rfc3442_classless_static_routes)

		for(( i=0; i < ${#rfc_routes[@]}; )); do
			net_length=${rfc_routes[$i]}
			((i++))

			net_address=(0 0 0 0)
			for(( j=0; j < $[$net_length / 8 + ($net_length % 8 ? 1 : 0)]; j++, i++)); do
			    net_address[$j]=${rfc_routes[$i]}
			done

			gateway=(0 0 0 0)
			for (( j=0; j < 4; j++, i++ )); do
			    gateway[$j]=${rfc_routes[$i]}
			done

			old_IFS="$IFS"
			IFS='.'

			if [[ -n "$(which ip 2>/dev/null)" ]]; then
			    ip route replace "${net_address[*]}/$net_length" via "${gateway[*]}"
			else
			    if [[ -n "$(which route 2>/dev/null)" ]]; then
				if [ x"$net_length" == x"32" ]; then
				    route add -host "${net_address[*]}" gw "${gateway[*]}"
				else
				    route add -net "${net_address[*]}/$net_length" gw "${gateway[*]}"
				fi
			    fi
			fi

			IFS="$old_IFS"
		done
    fi
fi


if [ x"$new_ms_classless_static_routes" != x"" ]; then
    if [ x"$reason" == x"BOUND" -o x"$reason" == x"REBOOT" ]; then
		ms_routes=($new_ms_classless_static_routes)

		for(( i=0; i < ${#ms_routes[@]}; )); do
			net_length=${ms_routes[$i]}
			((i++))

			net_address=(0 0 0 0)
			for(( j=0; j < $[$net_length / 8 + ($net_length % 8 ? 1 : 0)]; j++, i++)); do
			    net_address[$j]=${ms_routes[$i]}
			done

			gateway=(0 0 0 0)
			for (( j=0; j < 4; j++, i++ )); do
			    gateway[$j]=${ms_routes[$i]}
			done

			old_IFS="$IFS"
			IFS='.'

			if [[ -n "$(which ip 2>/dev/null)" ]]; then
			    ip route replace "${net_address[*]}/$net_length" via "${gateway[*]}"
			else
			    if [[ -n "$(which route 2>/dev/null)" ]]; then
				if [ x"$net_length" == x"32" ]; then
				    route add -host "${net_address[*]}" gw "${gateway[*]}"
				else
				    route add -net "${net_address[*]}/$net_length" gw "${gateway[*]}"
				fi
			    fi
			fi

			IFS="$old_IFS"
		done
    fi
fi
