Qubes OS run on top of Xen, so it should be possible to use the vchan library inside the unprivileged domains.
1) In the sites its described a communication between Dom0 and a VM, but I need to establish variuos bidirectional channels between VMs. Is it possible?
2) Does Qubes OS use a different version of the vchan library or set up specific limitations that could make the job harder?
3) In the libs folders I found all the libraries I think I need, but I couldn't find any header (libxenvchan.h, ...) in the VMs systems, so do I need to compile and install Xen from source, to be able to write my own programs, even on Qubes?
And if I wanted to distribute a package, the default Debian/Fedora templates would need extra deps?
I've tried to write a new header with the `extern` declarations and compile 'node.c' from /xen/tools/libvchan: [https://github.com/xen-project/xen/blob/master/tools/libvchan/node.c] as a test, linking the binary to 'libvchan-xen.so', which I think its Qubes specific and 'libxenvchan.so' in a second attempt.
The compilation succeded, but the program couldn't establish any connections between VMs:
user@develop:~/myvchan$ ./node server write 3 /data/vchan
libxenvchan_*_init: Permission denied
user@develop:~/myvchan$ ./node server write 3 <ANY_PATH>
libxenvchan_*_init: Permission denied
user@develop:~/myvchan$ ./node client read 3 /data/vchan
libxenvchan_*_init: Permission denied
user@develop:~/myvchan$ ./node client read 3 /local/domain/<DOMID>/myc
libxenvchan_*_init: No such file or directory
user@develop:~/myvchan$ xenstore-exists /local/domain/<DOMID>/matrix
user@develop:~/myvchan$ echo $?
0
Anyone can explain me what I'm missing and guide me through the right procedure ?