]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Use sysfs if we don't have ifconfig(8) on Linux.
authorRoy Marples <roy@marples.name>
Mon, 5 Mar 2012 11:13:06 +0000 (11:13 +0000)
committerRoy Marples <roy@marples.name>
Mon, 5 Mar 2012 11:13:06 +0000 (11:13 +0000)
Thanks to Dave Reisner.

dhcpcd-hooks/10-mtu

index 639697c916e1a2543a3da8a52c4c2ef59c57d7f0..f04274e70b448e1ee21a745458f2f18b4ca32b34 100644 (file)
@@ -2,12 +2,23 @@
 
 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 ifconfig "$interface" mtu "$new_interface_mtu"; then
+               if set_mtu "$new_interface_mtu"; then
                        syslog info "$interface: MTU set to $new_interface_mtu"
                        # Save the MTU so we can restore it later
                        if [ ! -e "$mtu_dir/$interface" ]; then
@@ -21,7 +32,7 @@ elif [ -e "$mtu_dir/$interface" ]; then
                # No MTU in this state, so restore the prior MTU
                mtu=$(cat "$mtu_dir/$interface")
                syslog info "$interface: MTU restored to $mtu"
-               ifconfig "$interface" mtu "$mtu"
+               set_mtu "$mtu"
                rm "$mtu_dir/$interface"
        fi
 fi