set socket option IP_MTU_DISCOVER=IP_PMTUDISC_PROBE and IPV6_MTU_DISCOVER=IP_PMTUDISC_PROBE (#2911)

This commit is contained in:
msvoelker 2022-07-27 15:30:12 +02:00 коммит произвёл GitHub
Родитель d8f9066a45
Коммит 6583df53c0
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
1 изменённых файлов: 20 добавлений и 4 удалений

Просмотреть файл

@ -1054,11 +1054,10 @@ CxPlatSocketContextInitialize(
//
// Windows: setsockopt IPPROTO_IP IP_DONTFRAGMENT TRUE.
// Linux: IP_DONTFRAGMENT option is not available. IPV6_MTU_DISCOVER is the
// apparent alternative.
// TODO: Verify this.
// Linux: IP_DONTFRAGMENT option is not available. IP_MTU_DISCOVER/IPV6_MTU_DISCOVER
// is the apparent alternative.
//
Option = IP_PMTUDISC_DO;
Option = IP_PMTUDISC_PROBE;
Result =
setsockopt(
SocketContext->SocketFd,
@ -1076,6 +1075,23 @@ CxPlatSocketContextInitialize(
"setsockopt(IP_MTU_DISCOVER) failed");
goto Exit;
}
Result =
setsockopt(
SocketContext->SocketFd,
IPPROTO_IPV6,
IPV6_MTU_DISCOVER,
(const void*)&Option,
sizeof(Option));
if (Result == SOCKET_ERROR) {
Status = errno;
QuicTraceEvent(
DatapathErrorStatus,
"[data][%p] ERROR, %u, %s.",
Binding,
Status,
"setsockopt(IPV6_MTU_DISCOVER) failed");
goto Exit;
}
Option = TRUE;
Result =