[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: sockets availability during build
From: |
Federico Beffa |
Subject: |
Re: sockets availability during build |
Date: |
Fri, 23 Jan 2015 18:37:04 +0100 |
On Fri, Jan 23, 2015 at 9:38 AM, Ludovic Courtès <address@hidden> wrote:
> I suspect the IP shown above is the result of:
>
> (getaddrinfo (gethostname))
>
> or something like that. DNS lookups don’t work in the chroot, except
> for “localhost”, so you may have to patch tests that rely on this.
> Sockets themselves should work fine.
The error is produced by the system call "setsockopt". Here is the
part of the strace log showing the error:
...
write(4, "UpnpInit with HostIP=, DestPort="..., 35) = 35
socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 6
ioctl(6, SIOCGIFCONF, {40, {{"lo", {AF_INET, inet_addr("127.0.0.1")}}}}) = 0
ioctl(6, SIOCGIFFLAGS, {ifr_name="lo",
ifr_flags=IFF_UP|IFF_LOOPBACK|IFF_RUNNING}) = 0
...
bind(8, {sa_family=AF_INET, sin_port=htons(0),
sin_addr=inet_addr("127.0.0.1")}, 16) = 0
getsockname(8, {sa_family=AF_INET, sin_port=htons(42159),
sin_addr=inet_addr("127.0.0.1")}, [16]) = 0
write(4, "\n*******************************"..., 326) = 326
write(4, "sockfd = 8, .... port = 42159\n", 30) = 30
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 9
setsockopt(9, SOL_IP, IP_MULTICAST_TTL, "\4", 1) = 0
fcntl(9, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(9, F_SETFL, O_RDWR|O_NONBLOCK) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 10
setsockopt(10, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
bind(10, {sa_family=AF_INET, sin_port=htons(1900),
sin_addr=inet_addr("0.0.0.0")}, 16) = 0
setsockopt(10, SOL_IP, IP_ADD_MEMBERSHIP, "\357\377\377\372\0\0\0\0",
8) = -1 ENODEV (No such device)
fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7f551880b000
write(3, "\n*******************************"..., 326) = 326
write(3, "Error in setsockopt() IP_ADD_MEM"..., 79) = 79
shutdown(10, SHUT_RDWR) = -1 ENOTCONN (Transport
endpoint is not connected)
...
Outside of the build environment, when the test passes, I see the same
system call with the same parameters, but the call succeeds. The only
difference seems to be in the first part which looks like this
...
write(4, "UpnpInit with HostIP=, DestPort="..., 35) = 35
socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 5
ioctl(5, SIOCGIFCONF, {80, {{"lo", {AF_INET, inet_addr("127.0.0.1")}},
{"eth0", {AF_INET, inet_addr("192.168.0.5")}}}}) = 0
ioctl(5, SIOCGIFFLAGS, {ifr_name="lo",
ifr_flags=IFF_UP|IFF_LOOPBACK|IFF_RUNNING}) = 0
ioctl(5, SIOCGIFFLAGS, {ifr_name="eth0",
ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST}) = 0
close(5) = 0
...
and shows the additional device "eth0".
>From the above I understand that libupnp embedded server wants to
setup multicast, but, as far as I know, this doesn't work with the
"lo" interface and fails. I do not see a workaround. Anyone?
Regards,
Fede