Prospero Data Access Protocol (doc/working-notes/pdap.txt in the
Prospero Release)

Note that this document is not necessarily going to be fully in sync
with the PDAP draft paper (Augart, Neuman, Rao, unpublished).  Until
that paper is published, the protocol is subject to change.

Goal: To provide a single file system protocol supporting several
      modes of file access (whole file caching, remote read/write, etc),
      that supports gateway functionality to other file services,
      as well as support for a range of authentication and authorization
      mechanisms. 
 
Note: authentication and encryption/integrity eventually
      provided by ARDP library.  For now, authentication
      and authorization provided directly by this protocol.

Message format - this is layered on ARDP protocol.

sequence { 1 octet version
           sequence of sequence { 1 octet operation
                         asn1length data-length
                         data-length octets operation-data}
         }

Operations =

  1 open
  2 open response
  3 close
  4 close response
  5 stat
  6 stat response
  7 read
  8 read response
  9 write
 10 write response
 11 lease request
 12 lease response
 13 authenticate/authorization/accounting (for methods not provided in ARDP)
 14 authentication/authorization/accounting response (if not done in ARDP)
  

Commands:

  1 open 1 octet flags: read, write, append, create, cache, oob-xfer
         1 octet name-type
           name-type APPLICATION, FILESYSTEM, DEVICE, URL, PROSPERO-AM
              application takes application name and application specific name
              filesystem takes local system pathname
              device takes device identifier and an integer for i-node
              URL takes a URL for string (for gatewaying)
              PROSPERO-AM takes an access method sequence (for gatewaying)
         if oob-xfer flags set, path or identifier where to store
  2 open response 1 octet (success/failure/warning)
                  1 octet handle type (capability,crypto_cap,asn1int,none)
		  asn1length length
                  length octets file handle
		  optional file name if left out in request, gensymed
                  if oob-xfer, name of file to open
                  error/warning code and text
                  

  3 close file handle type and handle.  If none, then file opened in
          same request.

  4 close response
          success/failure/warning
          error/warning code and text

  7 read file handle type and handle (if none, as opened in same message)
         offset
         asn1length length

  8 read response
         success/failure/warning
         asnlength length
         length octets data to be returned
         error/warning code and text

  9 write file handle type and handle (if none, as opened in same message)
	 offset
         asn1length lenght
         length octets data to be written

 10 write response
         success/failure/warning
         error/warning code and text

