version 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. .TH VERSION 5
  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. The
  93. .B version
  94. message is generated by the
  95. .B fversion
  96. system call.
  97. It is also generated automatically, if required, by a
  98. .B mount
  99. or
  100. .B fauth
  101. system call on an uninitialized connection.