<head>
<title>version(9P) - Plan 9 from User Space</title>
<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
</head>
<body bgcolor=#ffffff>
<table border=0 cellpadding=0 cellspacing=0 width=100%>
<tr height=10><td>
<tr><td width=20><td>
<tr><td width=20><td><b>VERSION(9P)</b><td align=right><b>VERSION(9P)</b>
<tr><td width=20><td colspan=2>
    <br>
<p><font size=+1><b>NAME     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    version &ndash; negotiate protocol version<br>
    
</table>
<p><font size=+1><b>SYNOPSIS     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    <i>size</i>[4] <tt><font size=+1>Tversion</font></tt> <i>tag</i>[2] <i>msize</i>[4] <i>version</i>[<i>s</i>]<br>
    <i>size</i>[4] <tt><font size=+1>Rversion</font></tt> <i>tag</i>[2] <i>msize</i>[4] <i>version</i>[<i>s</i>]<br>
    
</table>
<p><font size=+1><b>DESCRIPTION     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    The <tt><font size=+1>version</font></tt> request negotiates the protocol version and message
    size to be used on the connection and initializes the connection
    for I/O. <tt><font size=+1>Tversion</font></tt> must be the first message sent on the 9P connection,
    and the client cannot issue any further requests until it has
    received the <tt><font size=+1>Rversion</font></tt> reply. The <i>tag</i> should be
    <tt><font size=+1>NOTAG</font></tt> (value <tt><font size=+1>(ushort)~0</font></tt>) for a <tt><font size=+1>version</font></tt> message. 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
    The client suggests a maximum message size, <tt><font size=+1>msize</font></tt>, 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 <tt><font size=+1>size</font></tt> field and extending through the message,
    but excludes enveloping transport protocols. The
    server responds with its own maximum, <tt><font size=+1>msize</font></tt>, which must be less
    than or equal to the client&#8217;s value. Thenceforth, both sides of
    the connection must honor this limit. 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
    The <tt><font size=+1>version</font></tt> string identifies the level of the protocol. The string
    must always begin with the two characters &#8220;<tt><font size=+1>9P</font></tt>&#8221;. If the server
    does not understand the client&#8217;s version string, it should respond
    with an <tt><font size=+1>Rversion</font></tt> message (not <tt><font size=+1>Rerror</font></tt>) with the <tt><font size=+1>version</font></tt> string
    the 7 characters &#8220;<tt><font size=+1>unknown</font></tt>&#8221;. 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
    The server may respond with the client&#8217;s version string, or a
    version string identifying an earlier defined protocol version.
    Currently, the only defined version is the 6 characters &#8220;<tt><font size=+1>9P2000</font></tt>&#8221;.
    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 <tt><font size=+1>9P</font></tt><i>nnnn</i>, where <i>nnnn</i> is less than or equal to the digits sent
    by the client. 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
    The client and server will use the protocol version defined by
    the server&#8217;s response for all subsequent communication on the
    connection. 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
    A successful <tt><font size=+1>version</font></tt> request initializes the connection. All outstanding
    I/O on the connection is aborted; all active fids are freed (&#8216;clunked&#8217;)
    automatically. The set of messages between <tt><font size=+1>version</font></tt> requests is
    called a <i>session</i>.<br>
    
</table>
<p><font size=+1><b>ENTRY POINTS    </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    <i>Fsversion</i> (see <a href="../man3/9pclient.html"><i>9pclient</i>(3)</a>) generates <tt><font size=+1>version</font></tt> messages; it is
    called automatically by <i>fsmount</i>.<br>
    
</table>

<td width=20>
<tr height=20><td>
</table>
<!-- TRAILER -->
<table border=0 cellpadding=0 cellspacing=0 width=100%>
<tr height=15><td width=10><td><td width=10>
<tr><td><td>
<center>
<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
</center>
</table>
<!-- TRAILER -->
</body></html>
