bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Gauge interest in an XDR implementation


From: Richard W.M. Jones
Subject: Gauge interest in an XDR implementation
Date: Wed, 29 Oct 2008 16:03:34 +0000
User-agent: Mutt/1.5.18 (2008-05-17)

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]