summaryrefslogtreecommitdiffstats
path: root/src/network/kernel/qnetworkinterface_linux.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/network/kernel/qnetworkinterface_linux.cpp')
-rw-r--r--src/network/kernel/qnetworkinterface_linux.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/network/kernel/qnetworkinterface_linux.cpp b/src/network/kernel/qnetworkinterface_linux.cpp
index 01b2811070..5dc62bf7bb 100644
--- a/src/network/kernel/qnetworkinterface_linux.cpp
+++ b/src/network/kernel/qnetworkinterface_linux.cpp
@@ -382,7 +382,14 @@ static void getAddresses(int sock, char *buf, QList<QNetworkInterfacePrivate *>
auto payloadPtr = reinterpret_cast<uchar *>(RTA_DATA(rta));
switch (rta->rta_type) {
- case IFA_ADDRESS: // address
+ case IFA_ADDRESS:
+ // Local address (all interfaces except for point-to-point)
+ if (entry.ip().isNull())
+ entry.setIp(makeAddress(payloadPtr, payloadLen));
+ break;
+
+ case IFA_LOCAL:
+ // Override the local address (point-to-point interfaces)
entry.setIp(makeAddress(payloadPtr, payloadLen));
break;