aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2025-05-21 23:03:08 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2025-05-21 23:07:59 +0200
commit5150cd647073be1f1c12688aef291bdf17970154 (patch)
tree9b843e6603ad4dc10a128b90c2be640bfda03a71
parentversion: bump (diff)
downloadwireguard-tools-5150cd647073be1f1c12688aef291bdf17970154.tar.xz
wireguard-tools-5150cd647073be1f1c12688aef291bdf17970154.zip
wg-quick: linux: use smallest mtu, not largest
By accident, this function was looking at the endpoint with the largest MTU rather than the smallest one. Reported-by: Ismael Bouya <ismael@bouya.org> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rwxr-xr-xsrc/wg-quick/linux.bash10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/wg-quick/linux.bash b/src/wg-quick/linux.bash
index 93df80d..acb015d 100755
--- a/src/wg-quick/linux.bash
+++ b/src/wg-quick/linux.bash
@@ -123,7 +123,7 @@ add_addr() {
}
set_mtu_up() {
- local mtu=0 endpoint output
+ local mtu=2147483647 endpoint output
if [[ -n $MTU ]]; then
cmd ip link set mtu "$MTU" up dev "$INTERFACE"
return
@@ -131,13 +131,13 @@ set_mtu_up() {
while read -r _ endpoint; do
[[ $endpoint =~ ^\[?([a-z0-9:.]+)\]?:[0-9]+$ ]] || continue
output="$(ip route get "${BASH_REMATCH[1]}" || true)"
- [[ ( $output =~ mtu\ ([0-9]+) || ( $output =~ dev\ ([^ ]+) && $(ip link show dev "${BASH_REMATCH[1]}") =~ mtu\ ([0-9]+) ) ) && ${BASH_REMATCH[1]} -gt $mtu ]] && mtu="${BASH_REMATCH[1]}"
+ [[ ( $output =~ mtu\ ([0-9]+) || ( $output =~ dev\ ([^ ]+) && $(ip link show dev "${BASH_REMATCH[1]}") =~ mtu\ ([0-9]+) ) ) && ${BASH_REMATCH[1]} -lt $mtu ]] && mtu="${BASH_REMATCH[1]}"
done < <(wg show "$INTERFACE" endpoints)
- if [[ $mtu -eq 0 ]]; then
+ if [[ $mtu -eq 2147483647 ]]; then
read -r output < <(ip route show default || true) || true
- [[ ( $output =~ mtu\ ([0-9]+) || ( $output =~ dev\ ([^ ]+) && $(ip link show dev "${BASH_REMATCH[1]}") =~ mtu\ ([0-9]+) ) ) && ${BASH_REMATCH[1]} -gt $mtu ]] && mtu="${BASH_REMATCH[1]}"
+ [[ ( $output =~ mtu\ ([0-9]+) || ( $output =~ dev\ ([^ ]+) && $(ip link show dev "${BASH_REMATCH[1]}") =~ mtu\ ([0-9]+) ) ) && ${BASH_REMATCH[1]} -lt $mtu ]] && mtu="${BASH_REMATCH[1]}"
fi
- [[ $mtu -gt 0 ]] || mtu=1500
+ [[ $mtu -gt 0 && $mtu -lt 2147483647 ]] || mtu=1500
cmd ip link set mtu $(( mtu - 80 )) up dev "$INTERFACE"
}