1 /* 2 * fastcgi.h -- 3 * 4 * Defines for the FastCGI protocol. 5 * 6 * 7 * Copyright (c) 1995-1996 Open Market, Inc. 8 * 9 * See the file "LICENSE" for information on usage and redistribution 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 137