X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/85773b84bec362be8f137e51d6c373259675c153..920b7c5334b0064e4cf2e3007fda5450c7b6249b:/package/base-files/files/etc/hotplug.d/iface/10-routes diff --git a/package/base-files/files/etc/hotplug.d/iface/10-routes b/package/base-files/files/etc/hotplug.d/iface/10-routes index 118c1a665..a36885b87 100644 --- a/package/base-files/files/etc/hotplug.d/iface/10-routes +++ b/package/base-files/files/etc/hotplug.d/iface/10-routes @@ -13,6 +13,7 @@ add_route() { config_get netmask "$config" netmask config_get gateway "$config" gateway config_get metric "$config" metric + config_get mtu "$config" mtu # make sure there is a gateway and a target [ -n "$target" ] || { @@ -33,7 +34,8 @@ add_route() { dest="${dest:--host "$target"}" /sbin/route add $dest ${gateway:+gw "$gateway"} \ - ${dev:+dev "$dev"} ${metric:+ metric "$metric"} + ${dev:+dev "$dev"} ${metric:+ metric "$metric"} \ + ${mtu:+mss "$mtu"} } add_route6() { @@ -50,6 +52,7 @@ add_route6() { config_get target "$config" target config_get gateway "$config" gateway config_get metric "$config" metric + config_get mtu "$config" mtu # make sure there is a gateway and a target [ -n "$target" ] || { @@ -61,9 +64,13 @@ add_route6() { } /sbin/route -A inet6 add $target ${gateway:+gw "$gateway"} \ - ${dev:+dev "$dev"} ${metric:+ metric "$metric"} + ${dev:+dev "$dev"} ${metric:+ metric "$metric"} \ + ${mtu:+mss "$mtu"} } +# Skip fake devices (e.g. relayd) +grep -qs "^ *$DEVICE:" /proc/net/dev || exit 0 + case "$ACTION" in ifup) include /lib/network @@ -86,6 +93,33 @@ case "$ACTION" in ifconfig "$DEVICE" del "$ip6addr" ifconfig "$DEVICE" add "$ip6addr" } + + # Setup sysctls + local proto accept_ra send_rs + + config_get proto "$INTERFACE" proto + if [ "$proto" = dhcp ]; then + accept_ra=1 + send_rs=0 + else + accept_ra=0 + send_rs=1 + fi + + config_get_bool accept_ra "$INTERFACE" accept_ra $accept_ra + [ $accept_ra -eq 0 ] || { + logger -t ifup "Allowing Router Advertisements on $INTERFACE ($DEVICE)" + accept_ra=2 + } + do_sysctl "net.ipv6.conf.$DEVICE.accept_ra" $accept_ra + + config_get_bool send_rs "$INTERFACE" send_rs $send_rs + [ $send_rs -eq 0 ] || { + logger -t ifup "Enabling Router Solicitations on $INTERFACE ($DEVICE)" + send_rs=2 + } + do_sysctl "net.ipv6.conf.$DEVICE.forwarding" $send_rs + # Setup routes config_foreach "add_route" route @@ -93,8 +127,9 @@ case "$ACTION" in ;; ifdown) # Bring down named aliases + local device=$(uci_get_state network "$INTERFACE" device) local ifn - for ifn in $(ifconfig | sed -ne "s/^\($DEVICE:[^[:space:]]\+\).*/\1/p"); do + for ifn in $(ifconfig | sed -ne "s/^\(\($DEVICE${device:+\|$device}\|br-$INTERFACE\):[^[:space:]]\+\).*/\1/p"); do ifconfig "$ifn" down done ;;