   VERSION(9P) VERSION(9P)

   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 message 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 further requests until it has received the
   Rversion reply. The tag should be NOTAG (value (ushort)~0) for a
   version message.
   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
   maximum, 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 characters “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 protocol. 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. All
   outstanding I/O on the connection is aborted; all active fids are freed
   (‘clunked’) automatically. The set of messages between version requests
   is called a session.

   ENTRY POINTS
   Fsversion (see 9pclient(3)) generates version messages; it is called
   automatically by fsmount.

                                Space Glenda
