Connected: An Internet Encyclopedia
RFC 1832 - 3.10 Variable-length Opaque Data

Top: Connected: An Internet Encyclopedia
Up: Requests For Comments
Up: RFC 1832
Up: 3. XDR DATA TYPES
Prev: 3.9 Fixed-length Opaque Data
Next: 3.11 String

### 3.10 Variable-length Opaque Data

The standard also provides for variable-length (counted) opaque data, defined as a sequence of n (numbered 0 through n-1) arbitrary bytes to be the number n encoded as an unsigned integer (as described below), and followed by the n bytes of the sequence.

Byte m of the sequence always precedes byte m+1 of the sequence, and byte 0 of the sequence always follows the sequence's length (count). If n is not a multiple of four, then the n bytes are followed by enough (0 to 3) residual zero bytes, r, to make the total byte count a multiple of four. Variable-length opaque data is declared in the following way:

             opaque identifier<m>;
          or
             opaque identifier<>;

The constant m denotes an upper bound of the number of bytes that the sequence may contain. If m is not specified, as in the second declaration, it is assumed to be (2**32) - 1, the maximum length. The constant m would normally be found in a protocol specification. For example, a filing protocol may state that the maximum data transfer size is 8192 bytes, as follows:

             opaque filedata<8192>;

                0     1     2     3     4     5   ...
             +-----+-----+-----+-----+-----+-----+...+-----+-----+...+-----+
             |        length n       |byte0|byte1|...| n-1 |  0  |...|  0  |
             +-----+-----+-----+-----+-----+-----+...+-----+-----+...+-----+
             |<-------4 bytes------->|<------n bytes------>|<---r bytes--->|
                                     |<----n+r (where (n+r) mod 4 = 0)---->|
                                                      VARIABLE-LENGTH OPAQUE

It is an error to encode a length greater than the maximum described in the specification.

Next: 3.11 String

Connected: An Internet Encyclopedia
RFC 1832 - 3.10 Variable-length Opaque Data