rename this file so it is visible by metacpan et al
[catagits/fcgi2.git] / include / fastcgi.h
CommitLineData
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
23typedef 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
69typedef struct {
70 unsigned char roleB1;
71 unsigned char roleB0;
72 unsigned char flags;
73 unsigned char reserved[5];
74} FCGI_BeginRequestBody;
75
76typedef 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
94typedef 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
103typedef 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
125typedef struct {
126 unsigned char type;
127 unsigned char reserved[7];
128} FCGI_UnknownTypeBody;
129
130typedef struct {
131 FCGI_Header header;
132 FCGI_UnknownTypeBody body;
133} FCGI_UnknownTypeRecord;
134
135#endif /* _FASTCGI_H */
136