diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2026-05-21 03:30:09 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska-skaware@skarnet.org> | 2026-05-21 03:30:09 +0000 |
| commit | fa54bb75ff65b1eca0e36ef2d4d4579dbce4b28e (patch) | |
| tree | ee382de101a4a46f598f2edbb1d868734293ca34 /src/include | |
| parent | ea28bb1a26afef91fbaac7ef06dc91e4def69477 (diff) | |
| download | tipidee-fa54bb75ff65b1eca0e36ef2d4d4579dbce4b28e.tar.gz | |
Add tipidee/fcgi.h
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/tipidee/fcgi.h | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/src/include/tipidee/fcgi.h b/src/include/tipidee/fcgi.h new file mode 100644 index 0000000..be2f0af --- /dev/null +++ b/src/include/tipidee/fcgi.h @@ -0,0 +1,124 @@ +/* ISC license. */ + +#ifndef TIPIDEE_FCGI_H +#define TIPIDEE_FCGI_H + +#include <stdint.h> + +typedef struct fcgi_header_s fcgi_header, *fcgi_header_ref ; +struct fcgi_header_s +{ + uint8_t version ; + uint8_t type ; + uint16_t requestid ; + uint16_t len ; + uint8_t padlen ; + uint8_t reserved ; +} ; + +typedef enum fcgi_type_e fcgi_type ; +enum fcgi_type_e +{ + FCGI_BEGIN_REQUEST = 1, + FCGI_ABORT_REQUEST, + FCGI_END_REQUEST, + FCGI_PARAMS, + FCGI_STDIN, + FCGI_STDOUT, + FCGI_STDERR, + FCGI_DATA, + FCGI_GET_VALUES, + FCGI_GET_VALUES_RESULT, + FCGI_UNKNOWN_TYPE, + FCGI_MAXTYPE +} ; + +#define FCGI_NULL_REQUEST_ID 0 + +extern void tipidee_fcgi_header_pack (char *, fcgi_header const *) ; +extern void tipidee_fcgi_header_unpack (char const *, fcgi_header *) ; + + +typedef struct fcgi_beginrequest_body_s fcgi_beginrequest_body, *fcgi_beginrequest_body_ref ; +struct fcgi_beginrequest_body_s +{ + uint16_t role ; + uint8_t flags; + unsigned char reserved[5] ; +} ; + +extern void tipidee_fcgi_beginrequest_body_pack (char *, fcgi_beginrequest_body const *) ; +extern void tipidee_fcgi_beginrequest_body_unpack (char const *, fcgi_beginrequest_body *) ; + + +typedef struct fcgi_beginrequest_record_s fcgi_beginrequest_record, *fcgi_beginrequest_record_ref ; +struct fcgi_beginrequest_record_s +{ + fcgi_header header ; + fcgi_beginrequest_body body ; +} ; + +#define FCGI_KEEP_CONN 1 + +#define FCGI_RESPONDER 1 +#define FCGI_AUTHORIZER 2 +#define FCGI_FILTER 3 + +extern void tipidee_fcgi_beginrequest_record_pack (char *, fcgi_beginrequest_record const *) ; +extern void tipidee_fcgi_beginrequest_record_unpack (char const *, fcgi_beginrequest_record *) ; + + +typedef struct fcgi_endrequest_body_s fcgi_endrequest_body, *fcgi_endrequest_body_ref ; +struct fcgi_endrequest_body_s +{ + uint32_t appstatus ; + uint8_t protostatus ; + uint8_t reserved[3] ; +} ; + +extern void tipidee_fcgi_endrequest_body_pack (char *, fcgi_endrequest_body const *) ; +extern void tipidee_fcgi_endrequest_body_unpack (char const *, fcgi_endrequest_body *) ; + + +typedef struct fcgi_endrequest_record_s fcgi_endrequest_record, *fcgi_endrequest_record_ref ; +struct fcgi_endrequest_record_s +{ + fcgi_header header ; + fcgi_endrequest_body body ; +} ; + +#define FCGI_REQUEST_COMPLETE 0 +#define FCGI_CANT_MPX_CONN 1 +#define FCGI_OVERLOADED 2 +#define FCGI_UNKNOWN_ROLE 3 + +#define FCGI_MAX_CONNS "FCGI_MAX_CONNS" +#define FCGI_MAX_REQS "FCGI_MAX_REQS" +#define FCGI_MPXS_CONNS "FCGI_MPXS_CONNS" + +extern void tipidee_fcgi_endrequest_record_pack (char *, fcgi_endrequest_record const *) ; +extern void tipidee_fcgi_endrequest_record_unpack (char const *, fcgi_endrequest_record *) ; + + +typedef struct fcgi_unknowntype_body_s fcgi_unknowntype_body, *fcgi_unknowntype_body_ref ; +struct fcgi_unknowntype_body_s +{ + uint8_t type ; + uint8_t reserved[7] ; +} ; + +extern void tipidee_fcgi_unknowntype_body_pack (char *, fcgi_unknowntype_body const *) ; +extern void tipidee_fcgi_unknowntype_body_unpack (char const *, fcgi_unknowntype_body *) ; + + +typedef struct fcgi_unknowntype_record_s fcgi_unknowntype_record, *fcgi_unknowntype_record_ref ; +struct fcgi_unknowntype_record_s +{ + fcgi_header header ; + fcgi_unknowntype_body body ; +} ; + +extern void tipidee_fcgi_unknowntype_record_pack (char *, fcgi_unknowntype_record const *) ; +extern void tipidee_fcgi_unknowntype_record_unpack (char const *, fcgi_unknowntype_record *) ; + +#endif |
