[AFS3-std] Re: Encoding IPvN addresses

Andrew Deason adeason@sinenomine.net
Mon, 7 Feb 2011 16:07:10 -0600


On Mon, 07 Feb 2011 16:44:10 -0500
Jeffrey Hutzelman <jhutz@cmu.edu> wrote:

> And, we can't just use xdr_union, because that makes the type
> non-extensible -- xdr_union will fail if it receives an unknown
> discriminator value.  To be extensible, we need to actually encode the
> length on the wire, and have an unknown discriminator handler that
> reads off the length and the other bits and either throws them away or
> hands them to the application somehow.

draft-tkeiser-afs3-volser-tlv had the same issue, and there we specified
that the 'default' leg of the union be an opaque, and any future defined
discriminator payloads would be XDR-encoded, and the result is put into
the opaque blob. So, interpreting the future payloads would involve
XDR-decoding the contents of the blob.

But I believe that was proposed because allowing unknown union
discriminators to be parseable was impossible (at least, while staying
within the XDR spec). There's a way to allow the decoder to read the
length of the payload of an unknown discriminator from another field in
the structure? How do you do this?

-- 
Andrew Deason
adeason@sinenomine.net