VERSION(5)                                             VERSION(5)

     NAME
          version - negotiate protocol version

     SYNOPSIS
          size[4] Tversion tag[2] msize[4] version[s]
          size[4] Rversion tag[2] msize[4] version[s]

     DESCRIPTION
          The version request negotiates the protocol version and mes-
          sage size to be used on the connection and initializes the
          connection for I/O.  Tversion must be the first message sent
          on the 9P connection, and the client cannot issue any fur-
          ther requests until it has received the Rversion reply.  The
          tag should be NOTAG (value (ushort)~0) for a version mes-
          sage.

          The client suggests a maximum message size, msize, that is
          the maximum length, in bytes, it will ever generate or
          expect to receive in a single 9P message.  This count
          includes all 9P protocol data, starting from the size field
          and extending through the message, but excludes enveloping
          transport protocols.  The server responds with its own maxi-
          mum, msize, which must be less than or equal to the client's
          value.  Thenceforth, both sides of the connection must honor
          this limit.

          The version string identifies the level of the protocol.
          The string must always begin with the two characters ``9P''.
          If the server does not understand the client's version
          string, it should respond with an Rversion message (not
          Rerror) with the version string the 7 characters
          ``unknown''.

          The server may respond with the client's version string, or
          a version string identifying an earlier defined protocol
          version.  Currently, the only defined version is the 6 char-
          acters ``9P2000''.  Version strings are defined such that,
          if the client string contains one or more period characters,
          the initial substring up to but not including any single
          period in the version string defines a version of the proto-
          col.  After stripping any such period-separated suffix, the
          server is allowed to respond with a string of the form
          9Pnnnn, where nnnn is less than or equal to the digits sent
          by the client.

          The client and server will use the protocol version defined
          by the server's response for all subsequent communication on
          the connection.

          A successful version request initializes the connection.

     Page 1                       Plan 9            (printed 11/21/24)

     VERSION(5)                                             VERSION(5)

          All outstanding I/O on the connection is aborted; all active
          fids are freed (`clunked') automatically.  The set of mes-
          sages between version requests is called a session.

     ENTRY POINTS
          The version message is generated by the fversion system
          call.  It is also generated automatically, if required, by a
          mount or fauth system call on an uninitialized connection.

     Page 2                       Plan 9            (printed 11/21/24)