|
|
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.