From: ludo@gnu.org (Ludovic Courtès)
To: Federico Beffa <beffa@ieee.org>
Cc: Guix-devel <guix-devel@gnu.org>
Subject: Re: sockets availability during build
Date: Fri, 23 Jan 2015 22:31:16 +0100 [thread overview]
Message-ID: <87d265rxp7.fsf@gnu.org> (raw)
In-Reply-To: <CAKrPhPN=85yDS8VthrUBoP=kFzvdhiXzxJtuoR0Xe0otWkUhFA@mail.gmail.com> (Federico Beffa's message of "Fri, 23 Jan 2015 18:37:04 +0100")
Federico Beffa <beffa@ieee.org> skribis:
> The error is produced by the system call "setsockopt". Here is the
> part of the strace log showing the error:
[...]
> 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)
[...]
> 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?
Yeah <https://bugzilla.redhat.com/show_bug.cgi?id=172350> suggests that
ENODEV is due to the lack of a default route.
Indeed, running that fails:
--8<---------------cut here---------------start------------->8---
(use-modules (guix))
(define build
#~(begin
(define %upnp-ipv4-multicast-address
(inet-pton AF_INET "239.255.255.250"))
(define %upnp-multicast-port 1900)
(define %upnp-ipv4-multicast-socket-address
(make-socket-address AF_INET
%upnp-ipv4-multicast-address
%upnp-multicast-port))
(define (open-upnp-socket)
(let ((s (socket PF_INET SOCK_DGRAM 0)))
(setsockopt s IPPROTO_IP IP_ADD_MEMBERSHIP
(cons %upnp-ipv4-multicast-address INADDR_ANY))
s))
(pk (open-upnp-socket))
(flush-all-ports)
(mkdir #$output)))
(with-store store
(run-with-store store
(mlet %store-monad ((drv (gexp->derivation "test" build)))
(built-derivations (list drv)))))
--8<---------------cut here---------------end--------------->8---
If we add, before the ‘open-upnp-socket’ call, this line:
--8<---------------cut here---------------start------------->8---
(system* (string-append #$net-tools "/sbin/route")
"add" "-net" "default")
--8<---------------cut here---------------end--------------->8---
‘route’ simply fails with:
SIOCADDRT: Operation not permitted
I don’t know how to work around it. You may need to disable the tests.
Thanks,
Ludo’.
next prev parent reply other threads:[~2015-01-23 21:31 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-22 19:54 sockets availability during build Federico Beffa
2015-01-22 20:29 ` John Darrington
2015-01-23 8:38 ` Ludovic Courtès
2015-01-23 17:37 ` Federico Beffa
2015-01-23 21:31 ` Ludovic Courtès [this message]
2015-01-24 14:05 ` Federico Beffa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87d265rxp7.fsf@gnu.org \
--to=ludo@gnu.org \
--cc=beffa@ieee.org \
--cc=guix-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.