5
0
mirror of https://github.com/cwinfo/yggdrasil-go.git synced 2024-12-01 19:41:35 +00:00

Cap MTU on Linux in TAP mode

This commit is contained in:
Neil Alexander 2018-07-19 10:01:12 +01:00
parent 1baafdd17d
commit df9cadd938
No known key found for this signature in database
GPG Key ID: A02A2019A2BB0944

View File

@ -29,6 +29,14 @@ func (tun *tunDevice) setup(ifname string, iftapmode bool, addr string, mtu int)
} }
tun.iface = iface tun.iface = iface
tun.mtu = getSupportedMTU(mtu) tun.mtu = getSupportedMTU(mtu)
// The following check is specific to Linux, as the TAP driver only supports
// an MTU of 65535-14 to make room for the ethernet headers. This makes sure
// that the MTU gets rounded down to 65521 instead of causing a panic.
if iftapmode {
if tun.mtu > 65535-tun_ETHER_HEADER_LENGTH {
tun.mtu = 65535-tun_ETHER_HEADER_LENGTH
}
}
return tun.setupAddress(addr) return tun.setupAddress(addr)
} }