19a747e4fSDavid du Colombier typedef struct Auth Auth; 29a747e4fSDavid du Colombier struct Auth { 39a747e4fSDavid du Colombier char *name; 49a747e4fSDavid du Colombier 59a747e4fSDavid du Colombier char* (*auth)(Fcall*, Fcall*); 69a747e4fSDavid du Colombier char* (*attach)(Fcall*, Fcall*); 79a747e4fSDavid du Colombier void (*init)(void); 8*50a9bdd4SDavid du Colombier char* (*read)(Fcall*, Fcall*); 9*50a9bdd4SDavid du Colombier char* (*write)(Fcall*, Fcall*); 10*50a9bdd4SDavid du Colombier char* (*clunk)(Fcall*, Fcall*); 119a747e4fSDavid du Colombier }; 129a747e4fSDavid du Colombier 139a747e4fSDavid du Colombier extern char remotehostname[]; 149a747e4fSDavid du Colombier extern char Eauth[]; 159a747e4fSDavid du Colombier extern char *autharg; 169a747e4fSDavid du Colombier 17*50a9bdd4SDavid du Colombier extern Auth authp9any; 189a747e4fSDavid du Colombier extern Auth authrhosts; 199a747e4fSDavid du Colombier extern Auth authnone; 209a747e4fSDavid du Colombier 219a747e4fSDavid du Colombier extern ulong truerand(void); 229a747e4fSDavid du Colombier extern void randombytes(uchar*, uint); 239a747e4fSDavid du Colombier 249a747e4fSDavid du Colombier extern ulong msize; 25*50a9bdd4SDavid du Colombier 26*50a9bdd4SDavid du Colombier typedef struct Fid Fid; 27*50a9bdd4SDavid du Colombier Fid *newauthfid(int fid, void *magic, char **ep); 28*50a9bdd4SDavid du Colombier Fid *oldauthfid(int fid, void **magic, char **ep); 29*50a9bdd4SDavid du Colombier 30*50a9bdd4SDavid du Colombier void safecpy(char *to, char *from, int len); 31