|  | .TH VERSION 9P | 
|  | .SH NAME | 
|  | version \- negotiate protocol version | 
|  | .SH SYNOPSIS | 
|  | .ta \w'\fLTversion 'u | 
|  | .IR size [4] | 
|  | .B Tversion | 
|  | .IR tag [2] | 
|  | .IR msize [4] | 
|  | .IR version [ s ] | 
|  | .br | 
|  | .IR size [4] | 
|  | .B Rversion | 
|  | .IR tag [2] | 
|  | .IR msize [4] | 
|  | .IR version [ s ] | 
|  | .SH DESCRIPTION | 
|  | The | 
|  | .B version | 
|  | request negotiates the protocol version and message size | 
|  | to be used on the connection and initializes the connection for I/O. | 
|  | .B Tversion | 
|  | must be the first message sent on the 9P connection, | 
|  | and the client cannot issue any further requests until it has received the | 
|  | .B Rversion | 
|  | reply. | 
|  | The | 
|  | .I tag | 
|  | should be | 
|  | .B NOTAG | 
|  | (value | 
|  | .BR (ushort)~0 ) | 
|  | for a | 
|  | .B version | 
|  | message. | 
|  | .PP | 
|  | The client suggests a maximum message size, | 
|  | .BR 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 | 
|  | .B size | 
|  | field and extending through the message, | 
|  | but excludes enveloping transport protocols. | 
|  | The server responds with its own maximum, | 
|  | .BR msize , | 
|  | which must be less than or equal to the client's value. | 
|  | Thenceforth, both sides of the connection must honor this limit. | 
|  | .PP | 
|  | The | 
|  | .B version | 
|  | string identifies the level of the protocol. | 
|  | The string must always begin with the two characters | 
|  | .RB `` 9P ''. | 
|  | If the server does not understand the client's version string, | 
|  | it should respond with an | 
|  | .B Rversion | 
|  | message (not | 
|  | .BR Rerror ) | 
|  | with the | 
|  | .B version | 
|  | string the 7 characters | 
|  | .RB `` unknown ''. | 
|  | .PP | 
|  | 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 | 
|  | .RB `` 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 | 
|  | .BI 9P nnnn\f1, | 
|  | where | 
|  | .I nnnn | 
|  | is less than or equal to the digits sent by the client. | 
|  | .PP | 
|  | The client and server will use the protocol version defined by the | 
|  | server's response for all subsequent communication on the connection. | 
|  | .PP | 
|  | A successful | 
|  | .B 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 | 
|  | .B version | 
|  | requests is called a | 
|  | .IR session . | 
|  | .SH ENTRY POINTS | 
|  | .I Fsversion | 
|  | (see | 
|  | .IR 9pclient (3)) | 
|  | generates | 
|  | .B version | 
|  | messages; | 
|  | it is called automatically by | 
|  | .IR fsmount . |