37 lines
1.0 KiB
Plaintext
37 lines
1.0 KiB
Plaintext
# From https://chromium.googlesource.com/chromiumos/third_party/dhcpcd/+/refs/tags/dhcpcd-6.0.0/dhcpcd-hooks
|
|
|
|
# Configure the MTU for the interface
|
|
mtu_dir="$state_dir/mtu"
|
|
set_mtu()
|
|
{
|
|
local mtu=$1
|
|
if [ -w /sys/class/net/$interface/mtu ]; then
|
|
echo "$mtu" >/sys/class/net/$interface/mtu
|
|
else
|
|
ifconfig "$interface" mtu "$mtu"
|
|
fi
|
|
}
|
|
if [ "$reason" = PREINIT -a -e "$mtu_dir/$interface" ]; then
|
|
rm "$mtu_dir/$interface"
|
|
elif [ -n "$new_interface_mtu" ] && $if_up; then
|
|
# The smalled MTU dhcpcd can work with is 576
|
|
if [ "$new_interface_mtu" -ge 576 ]; then
|
|
if set_mtu "$new_interface_mtu"; then
|
|
syslog info "MTU set to $new_interface_mtu"
|
|
# Save the MTU so we can restore it later
|
|
if [ ! -e "$mtu_dir/$interface" ]; then
|
|
mkdir -p "$mtu_dir"
|
|
echo "$ifmtu" > "$mtu_dir/$interface"
|
|
fi
|
|
fi
|
|
fi
|
|
elif [ -e "$mtu_dir/$interface" ]; then
|
|
if $if_up || $if_down; then
|
|
# No MTU in this state, so restore the prior MTU
|
|
mtu=$(cat "$mtu_dir/$interface")
|
|
syslog info "MTU restored to $mtu"
|
|
set_mtu "$mtu"
|
|
rm "$mtu_dir/$interface"
|
|
fi
|
|
fi
|