[libvirt-users] Is it possible to retrieve Non blocking socket writeable status of a unix channel device ?

Jean-Pierre Ribeauville jpribeauville at axway.com
Thu Nov 5 10:46:53 UTC 2015


Hi,

As using a blocking socket for a virtio device channel leads to be blocked if nobody has opened the corresponding /dev/virtio-ports  within the Guest , I tried to use a non-blocking socket and
  to check whether the socket is writeable via FD_ISSET().


I'm wondering why  a virtio device channel is always seen as writeable  by the Host even if nobody has opened the corresponding /dev/virtio-ports  within the Guest ?


res= connect(sock, (struct sockaddr *) &server, sizeof(struct sockaddr_un));
     if (res < 0) {
         perror("connecting stream socket");
            close(sock);
            return(1);
       }
       else
        tv.tv_sec = 15;
        tv.tv_usec = 0;
        FD_ZERO(&myset);
        FD_SET(sock, &myset);
        if (select(sock+1, NULL, &myset, NULL, &tv) > 0) {
           len = sizeof(int);
           getsockopt(sock, SOL_SOCKET, SO_ERROR, (void*)(&result), &len);
           if (result) {
              fprintf(stderr, "Error in connection() %d - %s\n", result, strerror(result));
              return(1);
          }
           else
           {
              if(FD_ISSET(sock,&myset))
               fprintf(stderr, "connection()is O.K. \n");
           }
        }
        else {
           fprintf(stderr, "Timeout or error() %d - %s\n", result, strerror(result));
           return(1);
        }


Did I misunderstood something ?

Thanks for help.



J.P. Ribeauville


P: +33.(0).1.47.17.20.49
.
Puteaux 3 Etage 5  Bureau 4

jpribeauville at axway.com<mailto:jpribeauville at axway.com>
http://www.axway.com<http://www.axway.com/>



P Pensez à l'environnement avant d'imprimer.



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvirt-users/attachments/20151105/ff356cf7/attachment.htm>


More information about the libvirt-users mailing list