Network: add MTU implementation when getifaddrs is defined

Task-number: QTBUG-125023
Change-Id: I288df0d766f23dc569cedba52523fadedbff6491
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Assam Boudjelthia 2024-05-21 12:47:47 +03:00
parent 841bbbe8ec
commit 4370f9f227

View File

@ -310,12 +310,20 @@ QT_BEGIN_INCLUDE_NAMESPACE
QT_END_INCLUDE_NAMESPACE QT_END_INCLUDE_NAMESPACE
# endif # endif
static int openSocket(int &socket)
{
if (socket == -1)
socket = qt_safe_socket(AF_INET, SOCK_DGRAM, 0);
return socket;
}
# if defined(Q_OS_LINUX) && __GLIBC__ - 0 >= 2 && __GLIBC_MINOR__ - 0 >= 1 && !defined(QT_LINUXBASE) # if defined(Q_OS_LINUX) && __GLIBC__ - 0 >= 2 && __GLIBC_MINOR__ - 0 >= 1 && !defined(QT_LINUXBASE)
# include <netpacket/packet.h> # include <netpacket/packet.h>
static QList<QNetworkInterfacePrivate *> createInterfaces(ifaddrs *rawList) static QList<QNetworkInterfacePrivate *> createInterfaces(ifaddrs *rawList)
{ {
Q_UNUSED(getMtu); Q_UNUSED(getMtu);
Q_UNUSED(openSocket);
QList<QNetworkInterfacePrivate *> interfaces; QList<QNetworkInterfacePrivate *> interfaces;
QDuplicateTracker<QString> seenInterfaces; QDuplicateTracker<QString> seenInterfaces;
QDuplicateTracker<int> seenIndexes; QDuplicateTracker<int> seenIndexes;
@ -387,13 +395,6 @@ QT_BEGIN_INCLUDE_NAMESPACE
#endif // QT_PLATFORM_UIKIT #endif // QT_PLATFORM_UIKIT
QT_END_INCLUDE_NAMESPACE QT_END_INCLUDE_NAMESPACE
static int openSocket(int &socket)
{
if (socket == -1)
socket = qt_safe_socket(AF_INET, SOCK_DGRAM, 0);
return socket;
}
static QNetworkInterface::InterfaceType probeIfType(int socket, int iftype, struct ifmediareq *req) static QNetworkInterface::InterfaceType probeIfType(int socket, int iftype, struct ifmediareq *req)
{ {
// Determine the interface type. // Determine the interface type.
@ -537,8 +538,8 @@ static void getAddressExtraInfo(QNetworkAddressEntry *entry, struct sockaddr *sa
static QList<QNetworkInterfacePrivate *> createInterfaces(ifaddrs *rawList) static QList<QNetworkInterfacePrivate *> createInterfaces(ifaddrs *rawList)
{ {
Q_UNUSED(getMtu);
QList<QNetworkInterfacePrivate *> interfaces; QList<QNetworkInterfacePrivate *> interfaces;
int socket = -1;
// make sure there's one entry for each interface // make sure there's one entry for each interface
for (ifaddrs *ptr = rawList; ptr; ptr = ptr->ifa_next) { for (ifaddrs *ptr = rawList; ptr; ptr = ptr->ifa_next) {
@ -559,8 +560,17 @@ static QList<QNetworkInterfacePrivate *> createInterfaces(ifaddrs *rawList)
iface->index = ifindex; iface->index = ifindex;
iface->name = QString::fromLatin1(ptr->ifa_name); iface->name = QString::fromLatin1(ptr->ifa_name);
iface->flags = convertFlags(ptr->ifa_flags); iface->flags = convertFlags(ptr->ifa_flags);
if ((socket = openSocket(socket)) >= 0) {
struct ifreq ifr;
qstrncpy(ifr.ifr_name, ptr->ifa_name, sizeof(ifr.ifr_name));
iface->mtu = getMtu(socket, &ifr);
} }
} }
}
if (socket != -1)
qt_safe_close(socket);
return interfaces; return interfaces;
} }