Hi!
Jan Nieuwenhuizen <[email protected]> skribis:
> (use-modules (guix build syscalls))
>
> (define LOOPBACK? #t)
> (define IP "127.0.0.1" )
> (define INTERFACE "lo")
> (define NETMASK #f)
> (define GATEWAY #f)
>
> (format #t "ifreq-struct-size: ~a\n" (@@ (guix build syscalls)
> ifreq-struct-size))
> (format #t "sizeof-ifconf: ~s\n" (@@ (guix build syscalls) sizeof-ifconf))
> (define (test)
> (let* ((addr (inet-pton AF_INET IP))
> (sockaddr (make-socket-address AF_INET addr 0))
> (mask (and NETMASK
> (inet-pton AF_INET NETMASK)))
> (maskaddr (and mask
> (make-socket-address AF_INET
> mask 0)))
> (gateway (and GATEWAY
> (inet-pton AF_INET GATEWAY)))
> (gatewayaddr (and gateway
> (make-socket-address AF_INET
> gateway 0))))
> (configure-network-interface INTERFACE sockaddr
> (logior IFF_UP
> (if LOOPBACK?
> IFF_LOOPBACK
> 0))
> #:netmask maskaddr)
> (when gateway
> (let ((sock (socket AF_INET SOCK_DGRAM 0)))
> (add-network-route/gateway sock gatewayaddr)
> (close-port sock)))))
>
> (test)
Could you change that last line to:
(catch 'system-error
test
(lambda args
(let ((errno (system-error-errno args)))
(pk errno (strerror errno)))))
?
The out-of-range exception presumably is an unrelated error in Guile’s
debugger and it’s shadowing the one we’re interested in.
TIA!
Ludo’.