SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы
Назад
#!/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