Subversion Repositories planix.SVN

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#include <authsrv.h>

enum {
        DIRREC  = 116,          /* size of a directory ascii record */
        ERRREC  = 64,           /* size of a error record */
};

typedef struct  Fcall   Fcall;

struct  Fcall
{
        char    type;
        ushort  fid;
        short   err;
        short   tag;
        union
        {
                struct
                {
                        short   uid;            /* T-Userstr [obs.] */
                        short   oldtag;         /* T-nFlush */
                        Qid9p1  qid;            /* R-Attach, R-Clwalk, R-Walk,
                                                 * R-Open, R-Create */
                        char    rauth[AUTHENTLEN];      /* R-attach */
                };
                struct
                {
                        char    uname[NAMELEN]; /* T-nAttach */
                        char    aname[NAMELEN]; /* T-nAttach */
                        char    ticket[TICKETLEN];      /* T-attach */
                        char    auth[AUTHENTLEN];       /* T-attach */
                };
                struct
                {
                        char    ename[ERRREC];  /* R-nError */
                        char    chal[CHALLEN];  /* T-session, R-session */
                        char    authid[NAMELEN];        /* R-session */
                        char    authdom[DOMLEN];        /* R-session */
                };
                struct
                {
                        char    name[NAMELEN];  /* T-Walk, T-Clwalk, T-Create, T-Remove */
                        long    perm;           /* T-Create */
                        ushort  newfid;         /* T-Clone, T-Clwalk */
                        char    mode;           /* T-Create, T-Open */
                };
                struct
                {
                        Off     offset;         /* T-Read, T-Write */
                        long    count;          /* T-Read, T-Write, R-Read */
                        char*   data;           /* T-Write, R-Read */
                };
                struct
                {
                        char    stat[DIRREC];   /* T-Wstat, R-Stat */
                };
        };
};

/*
 * P9 protocol message types
 */
enum
{
        Tnop =          50,
        Rnop,
        Tosession =     52,
        Rosession,
        Terror =        54,     /* illegal */
        Rerror,
        Tflush =        56,
        Rflush,
        Toattach =      58,
        Roattach,
        Tclone =        60,
        Rclone,
        Twalk =         62,
        Rwalk,
        Topen =         64,
        Ropen,
        Tcreate =       66,
        Rcreate,
        Tread =         68,
        Rread,
        Twrite =        70,
        Rwrite,
        Tclunk =        72,
        Rclunk,
        Tremove =       74,
        Rremove,
        Tstat =         76,
        Rstat,
        Twstat =        78,
        Rwstat,
        Tclwalk =       80,
        Rclwalk,
        Tauth =         82,     /* illegal */
        Rauth,                  /* illegal */
        Tsession =      84,
        Rsession,
        Tattach =       86,
        Rattach,

        MAXSYSCALL
};

int     convA2M9p1(Authenticator*, char*, char*);
void    convM2A9p1(char*, Authenticator*, char*);
void    convM2T9p1(char*, Ticket*, char*);
int     convD2M9p1(Dentry*, char*);
int     convM2D9p1(char*, Dentry*);
int     convM2S9p1(uchar*, Fcall*, int);
int     convS2M9p1(Fcall*, uchar*);
void    fcall9p1(Chan*, Fcall*, Fcall*);

void    (*call9p1[MAXSYSCALL])(Chan*, Fcall*, Fcall*);