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