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" ] || {
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() {
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" ] || {
}
/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
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
;;
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
;;