diff options
Diffstat (limited to 'src/clamsmtpd.h')
-rw-r--r-- | src/clamsmtpd.h | 57 |
1 files changed, 50 insertions, 7 deletions
diff --git a/src/clamsmtpd.h b/src/clamsmtpd.h index ca3df37..deb2cfb 100644 --- a/src/clamsmtpd.h +++ b/src/clamsmtpd.h @@ -39,6 +39,10 @@ #ifndef __CLAMSMTPD_H__ #define __CLAMSMTPD_H__ +#include <sock_any.h> + +/* IO Buffers see clio.c ---------------------------------------------------- */ + #define BUF_LEN 256 typedef struct clio @@ -50,6 +54,8 @@ typedef struct clio } clio_t; +/* The main context --------------------------------------------------------- */ + /* * A generous maximum line length. It needs to be longer than * a full path on this system can be, because we pass the file @@ -75,17 +81,12 @@ typedef struct clamsmtp_context } clamsmtp_context_t; -extern int g_daemonized; /* Currently running as a daemon */ -extern int g_debuglevel; /* what gets logged to console */ -extern pthread_mutex_t g_mutex; /* The main mutex */ -extern struct timeval g_timeout; -extern int g_quit; - -struct sockaddr_any; #define LINE_TOO_LONG(ctx) ((ctx)->linelen >= (LINE_LENGTH - 2)) #define RETURN(x) { ret = x; goto cleanup; } +/* Implemented in clio.c ---------------------------------------------------- */ + #define CLIO_TRIM 0x00000001 #define CLIO_DISCARD 0x00000002 #define CLIO_QUIET 0x00000004 @@ -99,4 +100,46 @@ int clio_read_line(clamsmtp_context_t* ctx, clio_t* io, int trim); int clio_write_data(clamsmtp_context_t* ctx, clio_t* io, const char* data); int clio_write_data_raw(clamsmtp_context_t* ctx, clio_t* io, unsigned char* buf, int len); + +/* Implemented in clstate.c ------------------------------------------------ */ + +typedef struct clstate +{ + /* Settings ------------------------------- */ + int debug_level; /* The level to print stuff to console */ + int max_threads; /* Maximum number of threads to process at once */ + struct timeval timeout; /* Timeout for communication */ + + struct sockaddr_any outaddr; /* The outgoing address */ + const char* outname; + struct sockaddr_any clamaddr; /* Address for connecting to clamd */ + const char* clamname; + struct sockaddr_any listenaddr; /* Address to listen on */ + const char* listenname; + + const char* header; /* The header to add to email */ + const char* directory; /* The directory for temp files */ + const char* pidfile; /* The process id file */ + int bounce; /* Send back a reject line */ + int quarantine; /* Leave virus files in temp dir */ + int debug_files; /* Leave all files in temp dir */ + + /* State --------------------------------- */ + int daemonized; /* Whether process is daemonized or not */ + pthread_mutex_t mutex; /* The main mutex */ + int quit; /* Quit the process */ + + /* Internal Use ------------------------- */ + char* _p; + pthread_mutexattr_t _mtxattr; +} +clstate_t; + +extern clstate_t g_state; + +void clstate_init(clstate_t* state); +int clstate_parse_config(clstate_t* state, const char* configfile); +void clstate_validate(clstate_t* state); +void clstate_cleanup(clstate_t* state); + #endif /* __CLAMSMTPD_H__ */ |