On Sat, Aug 06, 2011 at 09:38:03AM -0500, Anthony Liguori wrote: > On 06/23/2011 07:31 AM, Daniel P. Berrange wrote: > >Allow client connections for VNC and socket based character > >devices to be passed in over the monitor using SCM_RIGHTS. > > > >One intended usage scenario is to start QEMU with VNC on a > >UNIX domain socket. An unprivileged user which cannot access > >the UNIX domain socket, can then connect to QEMU's VNC server > >by passing an open FD to libvirt, which passes it onto QEMU. > > > > { "execute": "get_fd", "arguments": { "fdname": "myclient" } } > > { "return": {} } > > { "execute": "add_client", "arguments": { "protocol": "vnc", > > "fdname": "myclient", > > "skipauth": true } } > > { "return": {} } > > > >In this case 'protocol' can be 'vnc' or 'spice', or the name > >of a character device (eg from -chardev id=XXXX) > > > >The 'skipauth' parameter can be used to skip any configured > >VNC authentication scheme, which is useful if the mgmt layer > >talking to the monitor has already authenticated the client > >in another way. > > > >* console.h: Define 'vnc_display_add_client' method > >* monitor.c: Implement 'client_add' command > >* qemu-char.c, qemu-char.h: Add 'qemu_char_add_client' method > > I don't feel all that good about this anymore. The notion of adding > a fd to an arbitrary character device is a big layering violation > and doesn't make much sense conceptually. > > A chardev cannot have multiple connections. It seems like the > use-case is much better suited to having an fd: protocol to create > char devices with.
The same idea of being able to configure a VNC server to listen on a UNIX socket path by default, but be able to inject the client connection via libvirt + FD passing, also applies to chardevs IMHO. So having a fd: protocol chardev doesn't seem right to me. Even if we don't support multiple connections, it is still useful to be able to pass in the initial connection, for TCP/UNIX based chardevs. > I'd like to partially revert this removing the qemu_chr_add_client > interface. The VNC bit was the most immediately useful part to me, so having the chardev bits now is not critical. Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|