From: Roy Marples Date: Mon, 27 Jul 2015 09:31:35 +0000 (+0000) Subject: Only apply interface MTU on DHCP messages, or static IPv4 configuration. X-Git-Tag: v6.9.2~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=67aeb589bf8e3f163bd4919ad8bcb9ce874aeaca;p=thirdparty%2Fdhcpcd.git Only apply interface MTU on DHCP messages, or static IPv4 configuration. --- diff --git a/dhcpcd-hooks/10-mtu b/dhcpcd-hooks/10-mtu index f8657cbd..f563624c 100644 --- a/dhcpcd-hooks/10-mtu +++ b/dhcpcd-hooks/10-mtu @@ -13,26 +13,31 @@ set_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" +# Only set interface MTU on either a DHCP option recieved or a static +# configuration for IPv4 which is wrapped in the DHCP setup. +# IPv6 MTU is done via routing. +if [ "$ifsuffix" = ".dhcp" ]; then + 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 - 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" + 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 fi