add_route4() { local interface="$1" local subnet="$2" local gateway="$3" local netmask="$4" local cidr="$(mask2cidr $netmask)" if has ip; then ip route del "$subnet/$cidr" via "$gateway" dev "$interface" || true ip route add "$subnet/$cidr" via "$gateway" dev "$interface" elif has route; then route -n del -net "$subnet/$prefixlen" "$gateway" || true route -n add -net "$subnet/$prefixlen" "$gateway" 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 ip; then ip route del "$subnet/$prefixlen" via "$gateway" dev "$interface" || true ip route add "$subnet/$prefixlen" via "$gateway" dev "$interface" if has route; then 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" 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 }