[libvirt] [PATCH 2/2] rpc: treat EADDRNOTAVAIL as non-fatal when listening

Jiri Denemark jdenemar at redhat.com
Tue Jul 24 15:44:39 UTC 2018


On Tue, Jul 24, 2018 at 15:18:10 +0100, Daniel P. Berrangé wrote:
> Consider creating a listener socket from a hostname that resolves to
> multiple addresses. It might be the case that the hostname resolves to
> both an IPv4 and IPv6 address because it is reachable over both
> protocols, but the IPv6 connectivity is provided off-host. In such a
> case no local NIC will have IPv6 and so bind() would fail with the
> EADDRNOTAVAIL errno. Thus it should be treated as non-fatal as long as
> at least one socket was succesfully bound.
> 
> Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> ---
>  src/rpc/virnetsocket.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
> index 8e04d61e98..044e6d8804 100644
> --- a/src/rpc/virnetsocket.c
> +++ b/src/rpc/virnetsocket.c
> @@ -382,7 +382,7 @@ int virNetSocketNewListenTCP(const char *nodename,
>  #endif
>  
>          if (bind(fd, runp->ai_addr, runp->ai_addrlen) < 0) {
> -            if (errno != EADDRINUSE) {
> +            if (errno != EADDRINUSE && errno != EADDRNOTAVAIL) {
>                  virReportSystemError(errno, "%s", _("Unable to bind to port"));
>                  goto error;
>              }

Reviewed-by: Jiri Denemark <jdenemar at redhat.com>




More information about the libvir-list mailing list