On Sat, 5 Apr 2014, Simon Wilkinson wrote:

Hi,

As an extension to RFC4506 this document seems fine. One nit, however is that 
our current rxgen doesn't implement the 4506 syntax for unions.

A RFC4506 style union definition is:

union switch (DESC-TYPE DESC-NAME) {
   ...
} NAME;

If I am reading it correctly (e.g., section 4.18), this is the RFC4506 way to declare and name a single instance of a union, at the location where it appears...

However, AFS's rxgen takes a union defintion in the form

union NAME switch (DESC-TYPE DESC-NAME) {
   ...
};

... whereas this would be the RFC 4506 syntax for typdef-ing the name 'NAME' to refer to the union type defined here.

It looks like the OpenAFS codebase's .xg files do not use enum, only union
and struct, but only in the "implicit typedef" form. We do not always use the typedef'd type name when putting structs in other structs, which perhaps adds some confusion ("struct AFSFid netFid" and "AFSFid netFid" would be equivalent as members of some other struct).

For an extended union, this document defines

ext-union switch (DESC-TYPE DESC-NAME) {
   ...
} NAME;

This draft prefixes the example as "Extensible discriminated unions are defined in RPC-L as follows:", which could be interpreted to mean the "declare-and-name-a-single-instance-where-it-appears" case, and the implicit typedef case is, well, implicit.

So we're consistent with RFC4506, but inconsistent with the syntax used in deployed AFS protocol definitions. I don't know to what extent this is an issue, but it would seem difficult if we're moving towards a style of XDR that can't be compiled by the current protocol compilers.

I'm not actually very familiar with either the OpenAFS rxgen or RC 4506 XDR, but it seems like maybe it is just the case that OpenAFS rxgen does not handle unions in the non-implicit-typedef case?

Perhaps I am just confused.

-Ben
_______________________________________________
AFS3-standardization mailing list
[email protected]
http://lists.openafs.org/mailman/listinfo/afs3-standardization

Reply via email to