Commit | Line | Data |
0198fd3c |
1 | /* |
2 | * fastcgi.h -- |
3 | * |
4 | * Defines for the FastCGI protocol. |
5 | * |
6 | * |
7 | * Copyright (c) 1995-1996 Open Market, Inc. |
8 | * |
af1b4cad |
9 | * See the file "LICENSE" for information on usage and redistribution |
0198fd3c |
10 | * of this file, and for a DISCLAIMER OF ALL WARRANTIES. |
11 | * |
12 | * $Id: fastcgi.h,v 1.1 1997/09/16 15:36:32 stanleyg Exp $ |
13 | */ |
14 | |
15 | #ifndef _FASTCGI_H |
16 | #define _FASTCGI_H |
17 | |
18 | /* |
19 | * Listening socket file number |
20 | */ |
21 | #define FCGI_LISTENSOCK_FILENO 0 |
22 | |
23 | typedef struct { |
24 | unsigned char version; |
25 | unsigned char type; |
26 | unsigned char requestIdB1; |
27 | unsigned char requestIdB0; |
28 | unsigned char contentLengthB1; |
29 | unsigned char contentLengthB0; |
30 | unsigned char paddingLength; |
31 | unsigned char reserved; |
32 | } FCGI_Header; |
33 | |
34 | #define FCGI_MAX_LENGTH 0xffff |
35 | |
36 | /* |
37 | * Number of bytes in a FCGI_Header. Future versions of the protocol |
38 | * will not reduce this number. |
39 | */ |
40 | #define FCGI_HEADER_LEN 8 |
41 | |
42 | /* |
43 | * Value for version component of FCGI_Header |
44 | */ |
45 | #define FCGI_VERSION_1 1 |
46 | |
47 | /* |
48 | * Values for type component of FCGI_Header |
49 | */ |
50 | #define FCGI_BEGIN_REQUEST 1 |
51 | #define FCGI_ABORT_REQUEST 2 |
52 | #define FCGI_END_REQUEST 3 |
53 | #define FCGI_PARAMS 4 |
54 | #define FCGI_STDIN 5 |
55 | #define FCGI_STDOUT 6 |
56 | #define FCGI_STDERR 7 |
57 | #define FCGI_DATA 8 |
58 | #define FCGI_GET_VALUES 9 |
59 | #define FCGI_GET_VALUES_RESULT 10 |
60 | #define FCGI_UNKNOWN_TYPE 11 |
61 | #define FCGI_MAXTYPE (FCGI_UNKNOWN_TYPE) |
62 | |
63 | /* |
64 | * Value for requestId component of FCGI_Header |
65 | */ |
66 | #define FCGI_NULL_REQUEST_ID 0 |
67 | |
68 | |
69 | typedef struct { |
70 | unsigned char roleB1; |
71 | unsigned char roleB0; |
72 | unsigned char flags; |
73 | unsigned char reserved[5]; |
74 | } FCGI_BeginRequestBody; |
75 | |
76 | typedef struct { |
77 | FCGI_Header header; |
78 | FCGI_BeginRequestBody body; |
79 | } FCGI_BeginRequestRecord; |
80 | |
81 | /* |
82 | * Mask for flags component of FCGI_BeginRequestBody |
83 | */ |
84 | #define FCGI_KEEP_CONN 1 |
85 | |
86 | /* |
87 | * Values for role component of FCGI_BeginRequestBody |
88 | */ |
89 | #define FCGI_RESPONDER 1 |
90 | #define FCGI_AUTHORIZER 2 |
91 | #define FCGI_FILTER 3 |
92 | |
93 | |
94 | typedef struct { |
95 | unsigned char appStatusB3; |
96 | unsigned char appStatusB2; |
97 | unsigned char appStatusB1; |
98 | unsigned char appStatusB0; |
99 | unsigned char protocolStatus; |
100 | unsigned char reserved[3]; |
101 | } FCGI_EndRequestBody; |
102 | |
103 | typedef struct { |
104 | FCGI_Header header; |
105 | FCGI_EndRequestBody body; |
106 | } FCGI_EndRequestRecord; |
107 | |
108 | /* |
109 | * Values for protocolStatus component of FCGI_EndRequestBody |
110 | */ |
111 | #define FCGI_REQUEST_COMPLETE 0 |
112 | #define FCGI_CANT_MPX_CONN 1 |
113 | #define FCGI_OVERLOADED 2 |
114 | #define FCGI_UNKNOWN_ROLE 3 |
115 | |
116 | |
117 | /* |
118 | * Variable names for FCGI_GET_VALUES / FCGI_GET_VALUES_RESULT records |
119 | */ |
120 | #define FCGI_MAX_CONNS "FCGI_MAX_CONNS" |
121 | #define FCGI_MAX_REQS "FCGI_MAX_REQS" |
122 | #define FCGI_MPXS_CONNS "FCGI_MPXS_CONNS" |
123 | |
124 | |
125 | typedef struct { |
126 | unsigned char type; |
127 | unsigned char reserved[7]; |
128 | } FCGI_UnknownTypeBody; |
129 | |
130 | typedef struct { |
131 | FCGI_Header header; |
132 | FCGI_UnknownTypeBody body; |
133 | } FCGI_UnknownTypeRecord; |
134 | |
135 | #endif /* _FASTCGI_H */ |
136 | |