Blob


1 .TH VERSION 9P
2 .SH NAME
3 version \- negotiate protocol version
4 .SH SYNOPSIS
5 .ta \w'\fLTversion 'u
6 .IR size [4]
7 .B Tversion
8 .IR tag [2]
9 .IR msize [4]
10 .IR version [ s ]
11 .br
12 .IR size [4]
13 .B Rversion
14 .IR tag [2]
15 .IR msize [4]
16 .IR version [ s ]
17 .SH DESCRIPTION
18 The
19 .B version
20 request negotiates the protocol version and message size
21 to be used on the connection and initializes the connection for I/O.
22 .B Tversion
23 must be the first message sent on the 9P connection,
24 and the client cannot issue any further requests until it has received the
25 .B Rversion
26 reply.
27 The
28 .I tag
29 should be
30 .B NOTAG
31 (value
32 .BR (ushort)~0 )
33 for a
34 .B version
35 message.
36 .PP
37 The client suggests a maximum message size,
38 .BR msize ,
39 that is the maximum length, in bytes,
40 it will ever generate or expect to receive in a single 9P message.
41 This count includes all 9P protocol data, starting from the
42 .B size
43 field and extending through the message,
44 but excludes enveloping transport protocols.
45 The server responds with its own maximum,
46 .BR msize ,
47 which must be less than or equal to the client's value.
48 Thenceforth, both sides of the connection must honor this limit.
49 .PP
50 The
51 .B version
52 string identifies the level of the protocol.
53 The string must always begin with the two characters
54 .RB `` 9P ''.
55 If the server does not understand the client's version string,
56 it should respond with an
57 .B Rversion
58 message (not
59 .BR Rerror )
60 with the
61 .B version
62 string the 7 characters
63 .RB `` unknown ''.
64 .PP
65 The server may respond with the client's version string,
66 or a version string identifying
67 an earlier defined protocol version.
68 Currently, the only defined version is the 6 characters
69 .RB `` 9P2000 ''.
70 Version strings are defined such that, if the client string contains
71 one or more period characters, the initial substring up to but not including
72 any single period in the version string defines a version of the protocol.
73 After stripping any such period-separated suffix, the server is allowed to respond
74 with a string of the form
75 .BI 9P nnnn\f1,
76 where
77 .I nnnn
78 is less than or equal to the digits sent by the client.
79 .PP
80 The client and server will use the protocol version defined by the
81 server's response for all subsequent communication on the connection.
82 .PP
83 A successful
84 .B version
85 request initializes the connection.
86 All outstanding I/O on the connection is aborted; all active fids are freed (`clunked') automatically.
87 The set of messages between
88 .B version
89 requests is called a
90 .IR session .
91 .SH ENTRY POINTS
92 .I Fsversion
93 (see
94 .MR 9pclient (3) )
95 generates
96 .B version
97 messages;
98 it is called automatically by
99 .IR fsmount .