Skip to content

Commit

Permalink
netinterface_unix.cpp: Fix code on linux for interfaces with ipv6 add…
Browse files Browse the repository at this point in the history
…resses. Linux seems to use a static record size for all AF_*:s.

git-svn-id: http://delta.affinix.com/svn/trunk/iris@528 ac7a513c-5e3a-0410-af42-968c3ac6e7dc
  • Loading branch information
Martin H authored and Martin H committed Apr 10, 2009
1 parent 7a6b9e7 commit 0d44dbf
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions src/irisnet/corelib/netinterface_unix.cpp
Expand Up @@ -92,15 +92,22 @@ static QList<UnixIface> get_sioc_ifaces()
struct ifreq *ifr = (struct ifreq *)(buf.data() + at);

int sockaddr_len;
if(((struct sockaddr *)&ifr->ifr_addr)->sa_family == AF_INET)

#ifndef Q_OS_LINUX

if(((struct sockaddr *)&ifr->ifr_addr)->sa_family == AF_INET) {
sockaddr_len = sizeof(struct sockaddr_in);
else if(((struct sockaddr *)&ifr->ifr_addr)->sa_family == AF_INET6)
} else if(((struct sockaddr *)&ifr->ifr_addr)->sa_family == AF_INET6) {
sockaddr_len = sizeof(struct sockaddr_in6);
else
} else {
sockaddr_len = sizeof(struct sockaddr);
}

// set this asap so the next iteration is possible
itemsize = sizeof(ifr->ifr_name) + sockaddr_len;
#else
itemsize = sizeof(ifreq);
#endif

// skip if the family is 0 (sometimes you get empty entries)
if(ifr->ifr_addr.sa_family == 0)
Expand Down

0 comments on commit 0d44dbf

Please sign in to comment.