xref: /original-bsd/sys/nfs/nfsrvcache.h (revision 81aa1937)
1 /*
2  * Copyright (c) 1989 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * This code is derived from software contributed to Berkeley by
6  * Rick Macklem at The University of Guelph.
7  *
8  * %sccs.include.redist.c%
9  *
10  *	@(#)nfsrvcache.h	7.6 (Berkeley) 02/02/93
11  */
12 
13 /*
14  * Definitions for the server recent request cache
15  */
16 
17 #define	NFSRVCACHESIZ	256
18 
19 struct nfsrvcache {
20 	struct	nfsrvcache *rc_forw;		/* Hash chain links */
21 	struct	nfsrvcache **rc_back;		/* Hash chain links */
22 	struct	nfsrvcache *rc_next;		/* Lru list */
23 	struct	nfsrvcache **rc_prev;		/* Lru list */
24 	u_long	rc_xid;				/* rpc id number */
25 	time_t	rc_timestamp;			/* Time stamp */
26 	union {
27 		struct mbuf *ru_repmb;		/* Reply mbuf list OR */
28 		int ru_repstat;			/* Reply status */
29 	} rc_un;
30 	union nethostaddr rc_haddr;		/* Host address */
31 	short	rc_proc;			/* rpc proc number */
32 	u_char	rc_state;		/* Current state of request */
33 	u_char	rc_flag;		/* Flag bits */
34 };
35 
36 #define	rc_reply	rc_un.ru_repmb
37 #define	rc_status	rc_un.ru_repstat
38 #define	rc_inetaddr	rc_haddr.had_inetaddr
39 #define	rc_nam		rc_haddr.had_nam
40 
41 /* Cache entry states */
42 #define	RC_UNUSED	0
43 #define	RC_INPROG	1
44 #define	RC_DONE		2
45 
46 /* Return values */
47 #define	RC_DROPIT	0
48 #define	RC_REPLY	1
49 #define	RC_DOIT		2
50 #define	RC_CHECKIT	3
51 
52 /* Flag bits */
53 #define	RC_LOCKED	0x01
54 #define	RC_WANTED	0x02
55 #define	RC_REPSTATUS	0x04
56 #define	RC_REPMBUF	0x08
57 #define	RC_NQNFS	0x10
58 #define	RC_INETADDR	0x20
59 #define	RC_NAM		0x40
60 
61 /* Delay time after completion that request is dropped */
62 #define	RC_DELAY	2		/* seconds */
63 
64