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:
parent
841bbbe8ec
commit
4370f9f227
@ -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,9 +560,18 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user