#ifndef _STRUCTS_H_e20822ec_ #define _STRUCTS_H_e20822ec_ #include #include #include typedef enum { OBT_EOF = 1, OBT_DATA } OBTYPE; typedef enum { END_L = 1, END_B } ENDIAN; typedef struct conn CONN; typedef struct flow FLOW; typedef struct oblk OBLK; typedef struct exprep EXPREP; typedef struct extinfo EXTINFO; typedef struct extdef EXTDEF; struct extdef { const char *name; int (*match)(const char *, int); void (*request)(FLOW *, FILE *); void (*event)(FLOW *, FILE *); void (*error)(FLOW *, FILE *); } ; struct extinfo { EXTINFO *link; EXTDEF *def; unsigned char opcode; unsigned char eventbase; unsigned char errorbase; } ; struct exprep { EXPREP *link; unsigned int seq; void (*fn)(FLOW *, FILE *, void *); void *arg; } ; struct oblk { OBLK *link; OBTYPE type; union { struct { const unsigned char *b; int l; int p; unsigned char *tofree; } data; } ; } ; struct flow { CONN *conn; const char *dir; int srcbits; int dstbits; int srcfd; int dstfd; unsigned char *ibuf; int iballoc; int ibfill; int ibfull; void *getpriv; void (*readdone)(FLOW *); OBLK *oq; OBLK **oqt; struct timeval stamp_tv; } ; struct conn { CONN *flink; CONN *blink; FILE *out; unsigned int serial; unsigned int flags; #define CF_EOF_C 0x00000001 #define CF_EOF_X 0x00000002 #define CF_BIGREQ 0x00000004 #define CF_EOF_BOTH (CF_EOF_C|CF_EOF_X) #define CF_C (CF_EOF_C) #define CF_X (CF_EOF_X) #define CF_EOF (CF_EOF_C|CF_EOF_X) unsigned int maxreq; int client_fd; int client_px; int X_fd; int X_px; struct tm laststamp_tm; char *remstr; FLOW ctox; FLOW xtoc; ENDIAN endian; unsigned int reqseq; EXPREP *repq; EXPREP **repqt; void *atoms; EXTINFO *extensions; unsigned char ext_opc_tbl[128]; EXTINFO **ext_opc_vec; unsigned char ext_ev_tbl[64]; EXTINFO **ext_ev_vec; unsigned char ext_err_tbl[128]; EXTINFO **ext_err_vec; #define TBL_NONE 255 #define TBL_UNK 254 } ; #endif