From 9ab2a58e4f6eee33c216090ca527d6389b5a047d Mon Sep 17 00:00:00 2001 From: niusmallnan Date: Fri, 5 Jan 2018 17:34:36 +0800 Subject: [PATCH] Fix for mtu display (#2209) --- images/01-base/Dockerfile | 5 ++- images/01-base/dhcpcd/10-mtu | 38 +++++++++++++++++++ images/01-base/{ => dhcpcd}/dhcpcd.debug | 0 images/01-base/{ => dhcpcd}/dhcpcd.enter-hook | 0 4 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 images/01-base/dhcpcd/10-mtu rename images/01-base/{ => dhcpcd}/dhcpcd.debug (100%) rename images/01-base/{ => dhcpcd}/dhcpcd.enter-hook (100%) diff --git a/images/01-base/Dockerfile b/images/01-base/Dockerfile index 7b06bf28..a8311b12 100644 --- a/images/01-base/Dockerfile +++ b/images/01-base/Dockerfile @@ -34,8 +34,9 @@ RUN rm /sbin/poweroff /sbin/reboot /sbin/halt && \ COPY inputrc /etc/inputrc COPY growpart /usr/bin/growpart COPY start_ntp.sh /bin/start_ntp.sh -COPY dhcpcd.enter-hook /etc/dhcpcd.enter-hook -COPY dhcpcd.debug /usr/share/logrotate/logrotate.d/ +COPY dhcpcd/dhcpcd.enter-hook /etc/dhcpcd.enter-hook +COPY dhcpcd/10-mtu /lib/dhcpcd/dhcpcd-hooks/ +COPY dhcpcd/dhcpcd.debug /usr/share/logrotate/logrotate.d/ RUN sed -i s/"partx --update \"\$part\" \"\$dev\""/"partx --update --nr \"\$part\" \"\$dev\""/g /usr/bin/growpart && \ sed -i -e 's/duid/clientid/g' /etc/dhcpcd.conf && \ sed -i 1,10d /etc/rsyslog.conf && \ diff --git a/images/01-base/dhcpcd/10-mtu b/images/01-base/dhcpcd/10-mtu new file mode 100644 index 00000000..f8657cbd --- /dev/null +++ b/images/01-base/dhcpcd/10-mtu @@ -0,0 +1,38 @@ +# 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 diff --git a/images/01-base/dhcpcd.debug b/images/01-base/dhcpcd/dhcpcd.debug similarity index 100% rename from images/01-base/dhcpcd.debug rename to images/01-base/dhcpcd/dhcpcd.debug diff --git a/images/01-base/dhcpcd.enter-hook b/images/01-base/dhcpcd/dhcpcd.enter-hook similarity index 100% rename from images/01-base/dhcpcd.enter-hook rename to images/01-base/dhcpcd/dhcpcd.enter-hook