| ATTACH(9P) | ATTACH(9P)
| NAME
| attach, auth – messages to establish a connection
SYNOPSIS
| size[4] `Tauth` tag[2] afid[4] uname[s] aname[s] size[4] `Rauth` tag[2] aqid[13]
size[4] `Tattach` tag[2] fid[4] afid[4] uname[s] aname[s] size[4] `Rattach` tag[2] qid[13]
DESCRIPTION
| The `attach` message serves as a fresh introduction from a user on the client machine to the server. The message identifies the user (uname) and may select the file tree to access (aname). The afid argument specifies a fid previously established by an `auth` message, as described below.
As a result of the `attach` transaction, the client will have a connection to the root directory of the desired file tree, represented by fid. An error is returned if fid is already in use. The server’s idea of the root of the file tree is represented by the returned qid.
If the client does not wish to authenticate the connection, or knows that authentication is not required, the afid field in the `attach` message should be set to `NOFID`, defined as `(u32int)~0` in `<fcall.h>`. If the client does wish to authenticate, it must acquire and validate an afid using an `auth` message before doing the `attach`.
The `auth` message contains afid, a new fid to be established for authentication, and the uname and aname that will be those of the following `attach` message. If the server does not require authentication, it returns `Rerror` to the `Tauth` message.
If the server does require authentication, it returns aqid defining a file of type `QTAUTH` (see intro(9P)) that may be read and written (using `read` and `write` messages in the usual way) to execute an authentication protocol. That protocol’s definition is not part of 9P itself.
Once the protocol is complete, the same afid is presented in the `attach` message for the user, granting entry. The same validated afid may be used for multiple `attach` messages with the same uname and aname.
ENTRY POINTS
| Fsmount and fsauth (see 9pclient(3)) generate `attach` and `auth` transactions.
SEE ALSO
| 9pclient(3), version(9P), Plan 9’s authsrv(6)