summaryrefslogtreecommitdiffstats
path: root/abs/core/dhcpcd/0001-set-MTU-via-sysfs-if-file-is-available.patch
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/dhcpcd/0001-set-MTU-via-sysfs-if-file-is-available.patch')
-rw-r--r--abs/core/dhcpcd/0001-set-MTU-via-sysfs-if-file-is-available.patch61
1 files changed, 61 insertions, 0 deletions
diff --git a/abs/core/dhcpcd/0001-set-MTU-via-sysfs-if-file-is-available.patch b/abs/core/dhcpcd/0001-set-MTU-via-sysfs-if-file-is-available.patch
new file mode 100644
index 0000000..7e78ecd
--- /dev/null
+++ b/abs/core/dhcpcd/0001-set-MTU-via-sysfs-if-file-is-available.patch
@@ -0,0 +1,61 @@
+From 950c00d1b183796034d227ef47a90eb248d79b72 Mon Sep 17 00:00:00 2001
+From: Dave Reisner <d@falconindy.com>
+Date: Tue, 21 Jun 2011 09:32:47 -0400
+Subject: [PATCH] set MTU via sysfs if file is available
+
+On Linux, a network interface's MTU can be set by writing to
+/sys/class/net/$interface/mtu, which removes the dependency on ifconfig.
+
+Signed-off-by: Dave Reisner <d@falconindy.com>
+---
+ dhcpcd-hooks/10-mtu | 4 ++--
+ dhcpcd-run-hooks.in | 11 +++++++++++
+ 2 files changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/dhcpcd-hooks/10-mtu b/dhcpcd-hooks/10-mtu
+index 639697c..8763930 100644
+--- a/dhcpcd-hooks/10-mtu
++++ b/dhcpcd-hooks/10-mtu
+@@ -7,7 +7,7 @@ if [ "$reason" = PREINIT -a -e "$mtu_dir/$interface" ]; then
+ 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 "$interface" "$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 +21,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 "$interface" "$mtu"
+ rm "$mtu_dir/$interface"
+ fi
+ fi
+diff --git a/dhcpcd-run-hooks.in b/dhcpcd-run-hooks.in
+index 0e60338..843f3ca 100644
+--- a/dhcpcd-run-hooks.in
++++ b/dhcpcd-run-hooks.in
+@@ -215,6 +215,17 @@ service_condcommand()
+ service_exists $1 && service_status $1 && service_cmd $1 $2
+ }
+
++# Set MTU for an interface
++set_mtu() {
++ local interface=$1 mtu=$2
++
++ if [ -e /sys/class/net/$interface/mtu ]; then
++ echo "$mtu" > /sys/class/net/$interface/mtu
++ else
++ ifconfig "$interface" mtu "$mtu"
++ fi
++}
++
+ # We source each script into this one so that scripts run earlier can
+ # remove variables from the environment so later scripts don't see them.
+ # Thus, the user can create their dhcpcd.enter/exit-hook script to configure
+--
+1.7.5.4
+