|
|
1.1 ! root 1: /* the makefile has to -I the proper directories */ ! 2: #ifndef ns32000 /* wretched sequent nonsense */ ! 3: #include "types.h" ! 4: #endif ! 5: #include "param.h" ! 6: #include "stat.h" ! 7: #include "errno.h" ! 8: ! 9: /* what the tags refer to */ ! 10: typedef struct { ! 11: unsigned char *name; /* the full path name */ ! 12: int fd; /* the file descriptor i've got */ ! 13: char flags; /* 1=>read-only */ ! 14: struct stat stb; /* for various purposes */ ! 15: long tag; ! 16: unsigned long pos; /* cache to avoid some lseeks */ ! 17: } file; ! 18: extern file files[]; ! 19: #if sun ! 20: #define FILES 28 ! 21: #else ! 22: #define FILES 128 ! 23: #endif ! 24: ! 25: /* with this setup, permissions have to be checked on every read/write, ! 26: * which doesn't quite match unix semantics. */ ! 27: ! 28: /* translation table between host devs and client devs */ ! 29: typedef struct { ! 30: int hdev, cdev; ! 31: } dev; ! 32: extern dev *devs; ! 33: extern int ndev; ! 34: /* file descriptors */ ! 35: extern int cfd; /* talk to client */ ! 36: extern int dbgfd; /* debugging output */ ! 37: extern int pfd; /* used to read the exceptions during perm setup */ ! 38: ! 39: extern int errno; ! 40: ! 41: /* the big server structure, translates from and to client messages */ ! 42: /* the types have to be adjusted to cope with new kinds of clients */ ! 43: extern struct client { ! 44: char cmd; ! 45: char flags; ! 46: long trannum; ! 47: long len; ! 48: long tag; ! 49: short uid, gid; ! 50: unsigned short mode; ! 51: long ta, tm, tc; /* (&ta)[1] must be tm */ ! 52: long offset; ! 53: long count; /* len for read or write */ ! 54: int dev; ! 55: long ino; /* for linking */ ! 56: /* additional stuff for responses */ ! 57: short errno; ! 58: long size; ! 59: long resplen; ! 60: short nlink; ! 61: int used; ! 62: short namiflags; ! 63: } client; ! 64: ! 65: extern unsigned char *inbuf, *nmbuf; ! 66: extern unsigned char *slash; /* pos of last slash in nmbuf */ ! 67: extern int inlen, iamroot; ! 68: extern int nmoffset; /* used to compute client.used */ ! 69: extern int hisdev; /* the major device the client thinks we are */ ! 70: extern int roottag; /* root's tag */ ! 71: extern int otherok; /* host other perms for mystery users from client? */ ! 72: ! 73: /* these are the nami flags, and have to be the same as in the client! (inode.h) */ ! 74: #define NI_DEL 1 /* unlink this file */ ! 75: #define NI_CREAT 2 /* create it if it doesn't exits */ ! 76: #define NI_NXCREAT 3 /* create it, error if it already exists */ ! 77: #define NI_LINK 4 /* make a link */ ! 78: #define NI_MKDIR 5 /* make a directory */ ! 79: #define NI_RMDIR 6 /* remove a directory */ ! 80: ! 81: /* these have to be the same as in the client! (netb.h) */ ! 82: #define NETB 2 ! 83: /* commands */ ! 84: #define NBPUT 1 ! 85: #define NBGET 2 ! 86: #define NBUPD 3 ! 87: #define NBREAD 4 ! 88: #define NBWRT 5 ! 89: #define NBNAMI 6 ! 90: #define NBSTAT 7 ! 91: #define NBIOCTL 8 ! 92: #define NBTRNC 9 ! 93: /* response flags */ ! 94: #define NBROOT 1 ! 95: ! 96: /* delta time */ ! 97: extern int dtime; ! 98: #ifndef NULL ! 99: #define NULL 0 ! 100: #endif ! 101: #ifndef ROOTINO ! 102: #define ROOTINO 2 ! 103: #endif ! 104: extern char *malloc(), *realloc(); ! 105: extern int proto; /* values are 'd' for datakit and 't' for tcp */ ! 106: extern int clienttype; /* values are 's' for sun, 'c' for cray, ! 107: * and 'v' for vax */ ! 108: ! 109: /* logic for deternining host type */ ! 110: #if !defined(vax) && !defined(sun) && !defined(cray) && !defined(ns32000) ! 111: xx() { xx(host);} ! 112: #endif ! 113: #if !defined(cray) ! 114: #define cray 0 ! 115: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.