evenet/lib/route.bash

58 lines
1.7 KiB
Bash

add_route4() {
local interface="$1"
local subnet="$2"
local gateway="$3"
local netmask="$4"
local cidr="$(mask2cidr $netmask)"
if has route; then
if [[ "$OSTYPE" == "linux-gnu" ]]; then
route del -net "$subnet" "$gateway" netmask "$netmask" "$interface" || true
route add -net "$subnet" "$gateway" netmask "$netmask" "$interface"
else
route -n del -net "$subnet/$prefixlen" "$gateway" || true
route -n add -net "$subnet/$prefixlen" "$gateway"
fi
elif has ip; then
ip route del "$subnet/$cidr" via "$gateway" dev "$interface" || true
ip route add "$subnet/$cidr" via "$gateway" dev "$interface"
else
die "no suitable program found to set routes, need iproute2 or ifconfig"
fi
}
add_route6() {
local interface="$1"
local subnet="$2"
local gateway="$3"
local prefixlen="$4"
if has route; then
if [[ "$OSTYPE" == "linux-gnu" ]]; then
route del -A inet6 "$subnet/$prefixlen" gw "$gateway" "$interface" || true
route add -A inet6 "$subnet/$prefixlen" gw "$gateway" "$interface"
else
if [[ "$gateway" == fe80* ]]; then
gateway="$gateway%$interface"
fi
route -n add -inet6 "$network" "$gateway" -prefixlen "$prefixlen" || true
route -n add -inet6 "$network" "$gateway" -prefixlen "$prefixlen"
fi
elif has ip; then
ip route del "$subnet/$prefixlen" via "$gateway" dev "$interface" || true
ip route add "$subnet/$prefixlen" via "$gateway" dev "$interface"
else
die "no suitable program found to set routes, need iproute2 or ifconfig"
fi
}
set_route_policy(){
# TODO: other operating systems
if [[ "$OSTYPE" != "linux-gnu" ]]; then
return
fi
if !has ip; then
warn "Could not set source "
fi
}