mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-09 18:45:54 +02:00
dhcpcd: rework mtu handling on buggy nic's
some nic's loose the carrier after setting new mtu. Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
This commit is contained in:
31
config/dhcpc/dhcpcd-hooks/10-mtu
Normal file
31
config/dhcpc/dhcpcd-hooks/10-mtu
Normal file
@@ -0,0 +1,31 @@
|
||||
# Configure the MTU for the interface
|
||||
|
||||
eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
|
||||
|
||||
set_mtu()
|
||||
{
|
||||
local mtu=$1
|
||||
ip link set "$interface" mtu "$mtu"
|
||||
|
||||
# test for buggy nic that lose link at mtu set...
|
||||
carrier=`cat /sys/class/net/$interface/carrier`
|
||||
if [ "$carrier" == "0" ]; then
|
||||
syslog info "Warning! Carrier loss after MTU set. Reinit ..."
|
||||
ip link set "$interface" down
|
||||
ip link set "$interface" up
|
||||
fi
|
||||
}
|
||||
if [ -n "$new_interface_mtu" ] && $if_up; then
|
||||
if [ $RED_DHCP_FORCE_MTU -ge 576 ]; then
|
||||
new_interface_mtu=$RED_DHCP_FORCE_MTU
|
||||
fi
|
||||
if [ ! "$new_interface_mtu" == "$ifmtu" ]; then
|
||||
# The smalled MTU dhcpcd can work with is 576
|
||||
if [ "$new_interface_mtu" -gt 576 ]; then
|
||||
if set_mtu "$new_interface_mtu"; then
|
||||
syslog info "MTU set to $new_interface_mtu"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
etc/system-release
|
||||
etc/issue
|
||||
etc/rc.d/init.d/firewall
|
||||
etc/rc.d/init.d/networking/dhcpcd.exe
|
||||
etc/modprobe.d/nf_conntrack.conf
|
||||
srv/web/ipfire/cgi-bin/logs.cgi/firewalllog.dat
|
||||
srv/web/ipfire/cgi-bin/logs.cgi/firewalllogcountry.dat
|
||||
@@ -16,3 +17,4 @@ srv/web/ipfire/cgi-bin/webaccess.cgi
|
||||
usr/bin/pgrep
|
||||
usr/local/bin/qosctrl
|
||||
usr/local/bin/timectrl
|
||||
var/ipfire/dhcpc/dhcpcd-hooks/10-mtu
|
||||
|
||||
@@ -85,9 +85,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
|
||||
rm -f $(CONFIG_ROOT)/dhcpc/dhcpcd-hooks/50-yp.conf
|
||||
rm -f $(CONFIG_ROOT)/dhcpc/dhcpcd-hooks/50-ypbind
|
||||
|
||||
sed -i -e "s|-ge 576|-gt 576|g" $(CONFIG_ROOT)/dhcpc/dhcpcd-hooks/10-mtu
|
||||
|
||||
install -m 644 $(DIR_SRC)/config/dhcpc/dhcpcd.conf $(CONFIG_ROOT)/dhcpc/
|
||||
install -m 444 $(DIR_SRC)/config/dhcpc/dhcpcd-hooks/10-mtu $(CONFIG_ROOT)/dhcpc/dhcpcd-hooks
|
||||
|
||||
chown root:root $(CONFIG_ROOT)/dhcpc/dhcpcd.conf
|
||||
|
||||
@rm -rf $(DIR_APP)
|
||||
|
||||
@@ -31,13 +31,6 @@ dhcpcd_up()
|
||||
# Only if RED_TYPE=DHCP update /var/ipfire/red
|
||||
if [ "$RED_TYPE" == "DHCP" ]; then
|
||||
|
||||
#Force MTU option for KabelDeutschland because this ISP
|
||||
#set the MTU to 576 instead of the supportet 1500
|
||||
if [ $RED_DHCP_FORCE_MTU -ge 576 ]; then
|
||||
logger -p local0.info -t dhcpcd.exe[$$] "Force mtu to $RED_DHCP_FORCE_MTU"
|
||||
ip link set $interface mtu $RED_DHCP_FORCE_MTU
|
||||
fi
|
||||
|
||||
#Check if we have to restart the services at update
|
||||
[ ! -e "/var/ipfire/red/active" ] && update=1;
|
||||
if [ "$old_domain_name_service" != "$new_domain_name_service" ]; then
|
||||
|
||||
Reference in New Issue
Block a user