I maintain portableXDR (http://et.redhat.com/~rjones/portablexdr/) which is an XDR library for Windows and Macs. As far as I'm aware it is only used by libvirt (http://libvirt.org/), and only on platforms which lack any XDR library (ie. Windows) or a usable XDR library (Macs and other Unix systems).
I'd like to know whether Gnulib developers would be interested in taking on an XDR implementation (based on the one in glibc)? Rich. Background ---------------------------------------------------------------------- Some history on XDR: It was invented by Sun Microsystems before 1987, and codified in RFCs 1014 and 1831 [0]. It is used by NFS, NIS and other Sun RPC protocols. XDR itself is lean and mean, easy to encode and decode, cross-platform and supported by a wide range of languages and systems. It is often confused with Sun RPC, which is a very crufty (API- and protocol-wise) remote procedure call system built on top. However you can easily use XDR on its own, as we did in libvirt. The problems with XDR include a complete lack of online documentation[1] for the API, and the fact that many Unix implementations have bit-rotted, even glibc's implementation. The primary problems we've found with Unix and Mac OS X are that their XDR libraries became "frozen" some time at the end of the last century, which usually means they are lacking vital new features such as 64 bit types, or rpcgen which can generate warning-free code. These are the problems we've tried to address in PortableXDR (although we've punted so far on getting rpcgen to work well). Examples ---------------------------------------------------------------------- PortableXDR code, derived from glibc: http://git.et.redhat.com/?p=portablexdr.git;a=summary The libvirt wire protocol defined in terms of XDR: http://git.et.redhat.com/?p=libvirt.git;a=blob;f=qemud/remote_protocol.x Notes ---------------------------------------------------------------------- [0] There's a new RFC which came out a couple of years back which replaces RFC 1831 but makes no technical changes to the standard: http://www.rfc-editor.org/rfc/rfc4506.txt [1] If you're looking for documentation, by far the best is in this 15 year old O'Reilly book: Power Programming with RPC John Bloomer ISBN 0-937175-77-3 http://oreilly.com/catalog/9780937175774/ I cover the general principles behind "filters" in the API here: http://et.redhat.com/~rjones/xdr_tests/ -- Richard Jones, Emerging Technologies, Red Hat http://et.redhat.com/~rjones virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into Xen guests. http://et.redhat.com/~rjones/virt-p2v