<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced.
     An alternate method (rfc include) is described in the references. -->

<!ENTITY RFC2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119">
<!ENTITY RFC5531 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5531">
<!ENTITY RFC4506 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4506">
<!ENTITY I-D.wilkinson-afs3-standardisation PUBLIC "" "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.wilkinson-afs3-standardisation">

]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- used by XSLT processors -->

<!-- For a complete list and description of processing instructions (PIs),
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<!-- give errors regarding ID-nits and DTD validation -->
<?rfc strict="yes" ?>

<!-- control the table of contents (ToC) -->
<!-- generate a ToC -->
<?rfc toc="yes" ?>

<!-- the number of levels of subsections in ToC. default: 3 -->
<?rfc tocdepth="4" ?>

<!-- control references -->
<?rfc symrefs="yes" ?>

<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>

<!-- sort the reference entries alphabetically -->

<!-- control vertical white space
     (using these PIs as follows is recommended by the RFC Editor) -->
<!-- do not start each main section on a new page -->
<?rfc compact="yes" ?>
<!-- keep one blank line between list items -->
<?rfc subcompact="no" ?>

<!-- end of list of popular I-D processing instructions -->

<rfc
category="info"
docName="draft-keiser-afs3-xdr-primitive-types-01"
ipr="noDerivativesTrust200902"
submissionType="independent">
  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN"
     they will automatically be output with "(if approved)" -->



  <!-- ***** FRONT MATTER ***** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the
         full title is longer than 39 characters -->

    <title abbrev="AFS-3 XDR Primitive Types">AFS-3 Rx RPC XDR Primitive Type Definitions</title>

    <!-- add role="editor" below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->



    <author fullname="Thomas Keiser" initials="T.E.K."
            surname="Keiser" >
      <organization abbrev="Sine Nomine">Sine Nomine Associates</organization>
      <address>
        <postal>
          <street>43596 Blacksmith Square</street>
          <city>Ashburn</city>
          <region>VA</region>
          <code>20147</code>
          <country>USA</country>
        </postal>
        <email>tkeiser@gmail.com</email>
      </address>
    </author>


    <author surname="Deason" fullname="Andrew Deason" initials="A.P.D." role="editor">
      <organization abbrev="Sine Nomine">Sine Nomine Associates</organization>
      <address>
        <postal>
          <street>43596 Blacksmith Square</street>
          <city>Ashburn</city>
          <region>Virginia</region>
          <code>20147-4606</code>
          <country>USA</country>
        </postal>

        <phone>+1 703 723 6673</phone>

        <email>adeason@sinenomine.net</email>
      </address>
    </author>


    <date year="2012" />

    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill
         in the current day for you. If only the current year is specified, xml2rfc will fill
	 in the current day and month for you. If the year is not the current one, it is
	 necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the
	 purpose of calculating the expiry date).  With drafts it is normally sufficient to
	 specify just the year. -->

    <!-- Meta-data Declarations -->

    <area>General</area>

    <workgroup>N/A</workgroup>

    <!-- WG name at the upperleft corner of the doc,
         IETF is fine for individual submissions.
	 If this element is not present, the default is "Network Working Group",
         which is used by the RFC Editor as a nod to the history of the IETF. -->

    <keyword>afs</keyword>
    <keyword>afs3</keyword>
    <keyword>afs-3</keyword>

    <!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->

    <abstract>
<t>        AFS-3 embeds a set of XDR primitive type definitions, which are
        referenced throughout the various AFS-3 protocol specifications.  This
        memo defines the mapping between these AFS-3 primitive types, and the
        underlying XDR primitives.
</t>

    </abstract>


    <note title="Internet Draft Comments">
      <t>
        Comments regarding this draft are solicited.  Please include the AFS-3 protocol
        standardization mailing list (afs3-standardization@openafs.org) as a recipient
        of any comments.
      </t>
    </note>


<note title="AFS-3 Document State">
<t>
  This document is in state "draft", as per the document state definitions
  set forth in <xref target="I-D.wilkinson-afs3-standardisation"/>.
</t>
</note>

  </front>



  <middle>
    <section title="Introduction">
      <t>
        AFS-3 <xref target="CMU-ITC-88-062"/> <xref target="CMU-ITC-87-068"/>
        is a distributed file system that has its origins
        in the VICE project <xref target="CMU-ITC-84-020"/>
        <xref target="CMU-ITC-85-039"/> at the Carnegie Mellon University
        Information Technology Center <xref target="CMU-ITC-83-025"/>,
        a joint venture between CMU and IBM.  VICE later became AFS when
        CMU moved development to a new commercial venture called
        Transarc Corporation, which later became IBM
        Pittsburgh Labs.  AFS-3 is a suite of un-standardized 
        network protocols based on a remote procedure call (RPC)
        suite known as Rx <xref target="AFS3-RX"/>.
        While de jure standards for AFS-3
        fail to exist, the various AFS-3 implementations have 
        agreed upon certain de facto
        standards, largely helped by the existence of
        an open source fork called OpenAFS that has served
        the role of reference implementation.  In addition to
        using OpenAFS as a reference, IBM wrote and donated developer
        documentation that contains somewhat outdated specifications
        for the Rx protocol and all AFS-3 remote procedure calls, as
        well as a detailed description of the AFS-3 system architecture.
      </t>

      <section title="Purpose">
        <t>
          The Rx RPC protocol utilizes XDR <xref target="RFC4506"/> as its
          means of encoding RPC call and response payloads.  While XDR provides
          type definitions for each popular bit-length integer, it does so using
          relatively ambiguous names (e.g., hyper).  To improve readability, the
	  AFS-3 RPC-L grammar references custom XDR types that embed the bit
	  length within the type name.  This memo standardizes those primitive
	  types, as well as the encoding for the AFS-3 UUID.
        </t>
      </section>

      <section title="Abbreviations">
  <t>
<list style="hanging" hangIndent="10">

<t hangText="AFS      -">Historically, AFS stood for the Andrew File System; AFS no longer stands for anything</t>

<t hangText="DCE      -">The Distributed Computing Environment</t>


<t hangText="LSB      -">Least-Significant Bit</t>

<t hangText="MSB      -">Most-Significant Bit</t>

<t hangText="RPC      -">Remote Procedure Call</t>

<t hangText="RPC-L    -">Rx RPC Interface Definition Language (fork of ONC RPC <xref target="RFC5531"/> .x file format)</t>

<t hangText="Rx       -">The Remote Procedure Call mechanism utilized by AFS-3 <xref target="AFS3-RX"/></t>

<t hangText="UUID     -">Universally Unique IDentifier</t>

<t hangText="XDR      -">eXternal Data Representation <xref target="RFC4506"/></t>


</list>
  </t>
</section>

    </section>

    <section title="Conventions" anchor="sec-rfc2119">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119">RFC 2119</xref>.</t>
    </section>


    <section anchor="sec-int_types" title="Primitive Integer Types">
      <t>
        AFS-3 defines a number of special types which are direct mappings
        onto existing XDR types.  Thus, these types are essentially XDR
        typedefs:
      </t>

      <figure align="center" anchor="fig-afs3-typedefs">
        <artwork><![CDATA[
AFS-3 type name   ->    XDR primitive type   [Reference]
---------------         ------------------   -----------
char                    int                  RFC 4506 Section 4.1
unsigned char           unsigned int         RFC 4506 Section 4.2
afs_int8                int                  RFC 4506 Section 4.1
afs_uint8               unsigned int         RFC 4506 Section 4.2
short                   int                  RFC 4506 Section 4.1
unsigned short          unsigned int         RFC 4506 Section 4.2
afs_int16               int                  RFC 4506 Section 4.1
afs_uint16              unsigned int         RFC 4506 Section 4.2
afs_int32               int                  RFC 4506 Section 4.1
afs_uint32              unsigned int         RFC 4506 Section 4.2
afs_int64               hyper                RFC 4506 Section 4.5
afs_uint64              unsigned hyper       RFC 4506 Section 4.5
        ]]></artwork>
        <postamble>AFS-3 common typedefs</postamble>
      </figure>

      <section anchor="sec-int-char" title="char">
        <t>
          This type is considered deprecated; future
          protocol specifications should reference the "afs_int8" type instead.
        </t>
      </section>

      <section anchor="sec-int-uchar" title="unsigned char">
        <t>
          This type is considered deprecated; future
          protocol specifications should reference the "afs_uint8" type instead.
        </t>
      </section>

      <section anchor="sec-int-short" title="short">
        <t>
          This type is considered deprecated; future
          protocol specifications should reference the "afs_int16" type instead.
        </t>
      </section>

      <section anchor="sec-int-ushort" title="unsigned short">
        <t>
          This type is considered deprecated; future
          protocol specifications should reference the "afs_uint16" type instead.
        </t>
      </section>

      <section title="1- and 2-octet integer types">
        <t>
          Please note that XDR uses a 4-octet alignment, and thus these 1- and
          2-octet
          types will take 4 octets on the wire.  Consequently, this is merely
          a way of defining data structures that have an optimized in-memory
          footprint, without imbuing any wire-encoding advantage.
        </t>
      </section>
    </section>

    <section anchor="sec-afsuuid" title="afsUUID">
      <t>
        AFS-3, being closely related to DCE, relies heavily upon a UUID type.
        The AFS-3 UUID type is identical to the DCE-variant, version 1 UUID type
        (see Appendix A of <xref target="DCE-RPC"/>).  The C data structure
        definition for such a UUID is as follows:
      </t>

      <figure align="left">
  <artwork><![CDATA[
    /*
     * Copyright 2000, International Business Machines Corporation
     * and others.  All Rights Reserved.
     *
     * This software has been released under the terms of the IBM
     * Public License.  For details, see the LICENSE file in the
     * top-level source directory or online at
     * http://www.openafs.org/dl/license10.html
     */

  struct afsUUID {
      afs_uint32 time_low;
      afs_uint16 time_mid;
      afs_uint16 time_hi_and_version;
      char clock_seq_hi_and_reserved;
      char clock_seq_low;
      char node[6];
  };
  typedef struct afsUUID afsUUID;

]]></artwork>
</figure>

      <t>
        An afsUUID type is XDR encoded on the wire as follows:
      </t>

      <figure align="center">
        <artwork><![CDATA[
(MSB)                                                       (LSB)
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            time_low                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               0               |           time_mid            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               0               |      time_hi_and_version      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      {3}                      |      {1}      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      {3}                      |      {2}      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      {3}                      |    node[0]    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      {3}                      |    node[1]    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      {3}                      |    node[2]    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      {3}                      |    node[3]    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      {3}                      |    node[4]    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      {3}                      |    node[5]    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    {1} clock_seq_hi_and_reserved
    {2} clock_seq_low
    {3} sign extended padding: 0, or 0xffffff depending on value
        of MSB in field to be sign-extended and padded
        ]]></artwork>
        <postamble>afsUUID XDR encoding</postamble>
      </figure>

      <section title="Encoding">
        <t>
          XDR encoding an "afsUUID" type SHALL involve the following sequence of
          operations:
        </t>

        <t>
	  <list style="numbers">
<t>Encode "time_low" field as an XDR unsigned integer (afs_uint32)</t>
<t>Encode "time_mid" field as an XDR unsigned integer</t>
<t>Encode "time_hi_and_version" field as an XDR unsigned integer</t>
<t>Encode "clock_seq_hi_and_reserved" field as an XDR signed integer</t>
<t>Encode "clock_seq_low" field as an XDR signed integer</t>
<t>Encode "node[0]" field as an XDR signed integer</t>
<t>Encode "node[1]" field as an XDR signed integer</t>
<t>Encode "node[2]" field as an XDR signed integer</t>
<t>Encode "node[3]" field as an XDR signed integer</t>
<t>Encode "node[4]" field as an XDR signed integer</t>
<t>Encode "node[5]" field as an XDR signed integer</t>

</list>

        </t>

        <t>
          Many of the fields which are encoded in this data structure are
          smaller than four octets.  In order to XDR encode these fields,
          they must first be resized.  Since many of these fields are signed,
          this involves sign extension.  This process depends upon the machine
          architecture.  Virtually all machines in existence today utilize
          2s-complement integer arithmetic, where this process merely involves
          padding with zeros if the MSB is zero or ones if the MSB is one.
        </t>
      </section>

      <section title="Decoding">
        <t>
          XDR decoding an "afsUUID" type SHALL involve the following sequence of
          operations:
        </t>

        <t>
	  <list style="numbers">
<t>Decode an XDR unsigned integer into the "time_low" field</t>
<t>Decode an XDR unsigned integer.
              If the integer is greater than 65535, the decoding SHALL fail.
              Copy the least-significant 16 bits into the 
              "time_mid" field.</t>
<t>Decode an XDR unsigned integer.
              If the integer is greater than 65535, the decoding SHALL fail.
              Copy the least-significant 16 bits into the 
              "time_hi_and_version" field.</t>
<t>Decode an XDR signed integer.
              If the integer is greater than 32767, or less than -32768, the 
              decoding SHALL fail.  Copy the least-significant 16 bits into the
              "clock_seq_hi_and_reserved" field.</t>
<t>Decode an XDR signed integer.
              If the integer is greater than 32767, or less than -32768, the 
              decoding SHALL fail.  Copy the least-significant 16 bits into the
              "clock_seq_low" field.</t>
<t>Decode an XDR signed integer.
              If the integer is greater than 127, or less than -128, the 
              decoding SHALL fail.  Copy the least-significant 8 bits into the
              "node[0]" field.</t>
<t>Decode an XDR signed integer.
              If the integer is greater than 127, or less than -128, the 
              decoding SHALL fail.  Copy the least-significant 8 bits into the
              "node[1]" field.</t>
<t>Decode an XDR signed integer.
              If the integer is greater than 127, or less than -128, the 
              decoding SHALL fail.  Copy the least-significant 8 bits into the
              "node[2]" field.</t>
<t>Decode an XDR signed integer.
              If the integer is greater than 127, or less than -128, the 
              decoding SHALL fail.  Copy the least-significant 8 bits into the
              "node[3]" field.</t>
<t>Decode an XDR signed integer.
              If the integer is greater than 127, or less than -128, the 
              decoding SHALL fail.  Copy the least-significant 8 bits into the
              "node[4]" field.</t>
<t>Decode an XDR signed integer.
              If the integer is greater than 127, or less than -128, the 
              decoding SHALL fail.  Copy the least-significant 8 bits into the
              "node[5]" field.</t>

</list>

        </t>
      </section>
    </section>

<!--
    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>
        ##$#
      </t>
    </section>
-->

    <!-- Possibly a 'Contributors' section ... -->

    <section title="IANA Considerations">
      <t>This memo includes no request to IANA.</t>
    </section>

    <section title="AFS Assign Numbers Registrar Considerations">
      <t>
        This memo includes no request to the AFS Assigned Numbers Registrar.
      </t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>
        This document merely describes various AFS-3 XDR types.  Any protocol
        specification which uses these primitives types must ensure the security
        of the resulting XDR data streams, e.g., via prescription of a suitable
        Rx RPC security class.
      </t>
    </section>
  </middle>

  <!-- BACK MATTER -->

  <back>

    <references title="Normative References">
      &RFC2119;
      &RFC4506;
    </references>

    <references title="Informative References">
      &RFC5531;
            <reference anchor="AFS3-RX">
        <front>
          <title>AFS-3 Programmer's Reference: Specification for the Rx Remote Procedure Call Facility</title>

          <author initials="E.R." surname="Zayas" fullname="Edward R. Zayas">
            <organization abbrev="Transarc">Transarc Corporation</organization>
          </author>

          <date year="1991" month="August" day="28" />
        </front>
        <seriesInfo name="Transarc Corp. Tech. Rep." value="FS-00-D164" />
      </reference>

            <reference anchor="CMU-ITC-84-020">
        <front>
          <title>VICE File System Services</title>

          <author initials="M.J." surname="West" fullname="MJ West">
            <organization abbrev="CMU-ITC">Carnegie Mellon University Information Technology Center</organization>
          </author>

          <date year="1984" month="August" day="7" />
        </front>
        <seriesInfo name="CMU ITC Tech. Rep." value="CMU-ITC-84-020" />
      </reference>

            <reference anchor="CMU-ITC-83-025">
        <front>
          <title>The Information Technology Center</title>

          <author initials="J.H." surname="Morris" fullname="James H. Morris">
            <organization abbrev="CMU">Carnegie Mellon University</organization>
          </author>
          <author initials="D." surname="Van Houweling" fullname="Douglas Van Houweling">
            <organization abbrev="CMU">Carnegie Mellon University</organization>
          </author>
          <author initials="K." surname="Slack" fullname="Keith Slack">
            <organization abbrev="IBM">International Business Machines Corporation</organization>
          </author>

          <date year="1983"/>
        </front>
        <seriesInfo name="CMU ITC Tech. Rep." value="CMU-ITC-83-025" />
      </reference>

            <reference anchor="CMU-ITC-85-039">
        <front>
          <title>The ITC Distributed File System: Principles and Design</title>

          <author initials="M." surname="Satyanarayanan" fullname="M. Satyanarayanan">
            <organization abbrev="CMU-ITC">Carnegie Mellon University Information Technology Center</organization>
          </author>
          <author initials="J.H." surname="Howard" fullname="John H. Howard">
            <organization abbrev="CMU-ITC">Carnegie Mellon University Information Technology Center</organization>
          </author>
          <author initials="D.A." surname="Nichols" fullname="David A. Nichols">
            <organization abbrev="CMU-ITC">Carnegie Mellon University Information Technology Center</organization>
          </author>
          <author initials="R.N." surname="Sidebotham" fullname="Robert N. Sidebotham">
            <organization abbrev="CMU-ITC">Carnegie Mellon University Information Technology Center</organization>
          </author>
          <author initials="A.Z." surname="Spector" fullname="Alfred Z. Spector">
            <organization abbrev="CMU-ITC">Carnegie Mellon University Information Technology Center</organization>
          </author>
          <author initials="M.J." surname="West" fullname="Michael J. West">
            <organization abbrev="CMU-ITC">Carnegie Mellon University Information Technology Center</organization>
          </author>

          <date year="1985" month="December"/>
        </front>
        <seriesInfo name="Proc. 10th ACM Symp. Operating Sys. Princ." value="Vol. 19, No. 5" />
      </reference>

            <reference anchor="CMU-ITC-88-062">
        <front>
          <title>An Overview of the Andrew File System"</title>

          <author initials="J.H." surname="Howard" fullname="John H. Howard">
            <organization abbrev="CMU-ITC">Carnegie Mellon University Information Technology Center</organization>
          </author>

          <date year="1988" month="February" />
        </front>
        <seriesInfo name="Proc. 1988 USENIX Winter Tech. Conf." value="pp. 23-26" />
      </reference>

            <reference anchor="CMU-ITC-87-068">
        <front>
          <title>Scale and Performance in a Distributed File System</title>

          <author initials="J.H." surname="Howard" fullname="John H. Howard">
            <organization abbrev="CMU">Carnegie Mellon University</organization>
          </author>
          <author initials="M.L." surname="Kazar" fullname="Michael L. Kazar">
            <organization abbrev="CMU">Carnegie Mellon University</organization>
          </author>
          <author initials="S.G." surname="Menees" fullname="Sherri G. Menees">
            <organization abbrev="CMU">Carnegie Mellon University</organization>
          </author>
          <author initials="D.A." surname="Nichols" fullname="David A. Nichols">
            <organization abbrev="CMU">Carnegie Mellon University</organization>
          </author>
          <author initials="M." surname="Satyanarayanan" fullname="M. Satyanarayanan">
            <organization abbrev="CMU">Carnegie Mellon University</organization>
          </author>
          <author initials="R.N." surname="Sidebotham" fullname="Robert N. Sidebotham">
            <organization abbrev="CMU">Carnegie Mellon University</organization>
          </author>
          <author initials="M.J." surname="West" fullname="Michael J. West">
            <organization abbrev="CMU">Carnegie Mellon University</organization>
          </author>

          <date year="1988" month="February" />
        </front>
        <seriesInfo name="ACM Trans. Comp. Sys." value="Vol. 6, No. 1, pp. 51-81" />
      </reference>

            <reference anchor="DCE-RPC">
        <front>
          <title>CAE Specification, DCE 1.1: Remote Procedure Call</title>

          <author>
            <organization>The Open Group</organization>
          </author>

          <date year="1997" month="August"/>
        </front>
        <seriesInfo name="CAE" value="C706"/>
      </reference>

      &I-D.wilkinson-afs3-standardisation;
    </references>

    <section anchor="app-base-types" title="Base Type Definitions">
      <figure align="left">
        <artwork><![CDATA[
typedef afs_int8  int;
typedef afs_uint8 unsigned int;
typedef afs_int16 int;
typedef afs_uint16 unsigned int;
typedef afs_int32 int;
typedef afs_uint32 unsigned int;
typedef afs_int64 hyper;
typedef afs_uint64 unsigned hyper;
]]></artwork>
      </figure>
    </section>

    <!-- Change Log
v00 2011-04-06  TEK  Initial Version
v01 2012-09-10  TEK  - convert to m4 front-matter macros
		     - convert to m4 bibxml
		     - convert to m4 numbered lists
		     - subject UUID definition to IPL
		     - turn second intro paragraph into a new
		       "Purpose" subsection
		     - add Andrew as an editor so he may resurrect
		       this document following my departure
     -->

  </back>

</rfc>
