Hi Thiago,
On terça-feira, 20 de setembro de 2016 22:48:42 PDT Alexander Smirnov wrote:
After debugging I figured out, that the problem is in commit:
043f5d3eb52587831f643bc52c95079c36d984c7
This commit allows to add to list:
QList<QNetworkInterfacePrivate *> interfaces;
interfaces with no address field (ifa_addr == NULL).
Then, I've checked the output from 'getifaddrs()' syscall on my board,
and it returns 2! instances of ppp0:
- one with AF_INET family
- one with ifa_addr == NULL
[cut]
So, is it a bug? :-)
Probably. Can you give me a full dump of what getifaddrs gave you along with
ip -d link show dev ppp0
ip -d addr show dev ppp0
So, I've attached the following:
[ifconfig.log] - output from 'ifconfig -a'
[getifaddrs.c] - test app to show getifaddrs() output, derived from man
page, but fixed to not to skip null addresses
[getifaddrs.log] - output from test app
[ip.log] - output from ip command as you requested
NOTE: I've also observed the same behavior for tun devices.
ppp0 interface is created by typical Linux pppd daemon.
tun2 interface is created by openvpn.
I'll fix it.
Please let me know, if you need additional information.
--
With best regards,
Alexander Smirnov
ilbers GmbH
Baierbrunner Str. 28c
D-81379 München
+49 (89) 122 67 24-0
http://ilbers.de/
Commercial register Munich, HRB 214197
General manager: Baurzhan Ismagulov
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netdb.h>
#include <ifaddrs.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char** argv)
{
struct ifaddrs *ifaddr, *ifa;
int family, s;
char host[NI_MAXHOST];
if (getifaddrs(&ifaddr) == -1) {
perror("getifaddrs");
exit(EXIT_FAILURE);
}
/* Walk through linked list, maintaining head pointer so we
* can free list later
*/
for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {
if (ifa->ifa_addr == NULL) {
printf("%s \taddress: NULL\n", ifa->ifa_name);
continue;
}
family = ifa->ifa_addr->sa_family;
/* Display interface name and family (including symbolic
* form of the latter for the common families)
*/
printf("%s \tfamily: %d%s\n",
ifa->ifa_name, family,
(family == AF_PACKET) ? " (AF_PACKET)" :
(family == AF_INET) ? " (AF_INET)" :
(family == AF_INET6) ? " (AF_INET6)" : "");
/* For an AF_INET* interface address, display the address */
if (family == AF_INET || family == AF_INET6) {
s = getnameinfo(ifa->ifa_addr,
(family == AF_INET) ? sizeof(struct sockaddr_in) :
sizeof(struct sockaddr_in6),
host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
if (s != 0) {
printf("getnameinfo() failed: %s\n", gai_strerror(s));
exit(EXIT_FAILURE);
}
printf("\taddress: <%s>\n", host);
}
}
freeifaddrs(ifaddr);
exit(EXIT_SUCCESS);
}
# getifaddrs
lo family: 17 (AF_PACKET)
can0 address: NULL
eth0 family: 17 (AF_PACKET)
wlan0 family: 17 (AF_PACKET)
sit0 family: 17 (AF_PACKET)
ppp0 address: NULL
tun2 address: NULL
lo family: 2 (AF_INET)
address: <127.0.0.1>
eth0 family: 2 (AF_INET)
address: <192.168.178.110>
ppp0 family: 2 (AF_INET)
address: <10.142.173.66>
tun2 family: 2 (AF_INET)
address: <10.0.0.1>
lo family: 10 (AF_INET6)
address: <::1>
eth0 family: 10 (AF_INET6)
address: <fe80::201:c0ff:fe19:6c24%eth0>
# ifconfig -a
can0 Link encap:UNSPEC HWaddr
00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
NOARP MTU:16 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:30
eth0 Link encap:Ethernet HWaddr 00:01:C0:19:6C:24
inet addr:192.168.178.110 Bcast:192.168.178.255 Mask:255.255.255.0
inet6 addr: fe80::201:c0ff:fe19:6c24%1996412624/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:361871 errors:9529 dropped:60 overruns:9529 frame:9529
TX packets:169960 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:511238273 (487.5 MiB) TX bytes:11817634 (11.2 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1%1996412624/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:512 (512.0 B) TX bytes:512 (512.0 B)
ppp0 Link encap:Point-to-Point Protocol
inet addr:10.142.173.66 P-t-P:10.142.173.66 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:58 (58.0 B) TX bytes:98 (98.0 B)
sit0 Link encap:IPv6-in-IPv4
NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
tun2 Link encap:UNSPEC HWaddr
00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
POINTOPOINT NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
wlan0 Link encap:Ethernet HWaddr 04:F0:21:13:FD:7C
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:2489 (2.4 KiB)
************
*** ppp0 ***
************
# ip -d link show dev ppp0
10: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UNKNOWN mode DEFAULT group default qlen 3
link/ppp promiscuity 0 addrgenmode eui64
# ip -d addr show dev ppp0
10: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UNKNOWN group default qlen 3
link/ppp promiscuity 0
inet 10.142.173.66/32 scope global ppp0
valid_lft forever preferred_lft forever
************
*** tun2 ***
************
# ip -d link show dev tun2
11: tun2: <NO-CARRIER,POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc noqueue
state DOWN mode DEFAULT group default qlen 100
link/none promiscuity 0
tun addrgenmode eui64
# ip -d addr show dev tun2
11: tun2: <NO-CARRIER,POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc noqueue
state DOWN group default qlen 100
link/none promiscuity 0
tun
inet 10.0.0.1/24 scope global tun2
valid_lft forever preferred_lft forever
_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development