pfix-srsd: add a -I option
[apps/pfixtools.git] / postlicyd / config.h
1 /******************************************************************************/
2 /*          pfixtools: a collection of postfix related tools                  */
3 /*          ~~~~~~~~~                                                         */
4 /*  ________________________________________________________________________  */
5 /*                                                                            */
6 /*  Redistribution and use in source and binary forms, with or without        */
7 /*  modification, are permitted provided that the following conditions        */
8 /*  are met:                                                                  */
9 /*                                                                            */
10 /*  1. Redistributions of source code must retain the above copyright         */
11 /*     notice, this list of conditions and the following disclaimer.          */
12 /*  2. Redistributions in binary form must reproduce the above copyright      */
13 /*     notice, this list of conditions and the following disclaimer in the    */
14 /*     documentation and/or other materials provided with the distribution.   */
15 /*  3. The names of its contributors may not be used to endorse or promote    */
16 /*     products derived from this software without specific prior written     */
17 /*     permission.                                                            */
18 /*                                                                            */
19 /*  THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS   */
20 /*  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED         */
21 /*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE    */
22 /*  DISCLAIMED.  IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY         */
23 /*  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL        */
24 /*  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS   */
25 /*  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)     */
26 /*  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,       */
27 /*  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN  */
28 /*  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE           */
29 /*  POSSIBILITY OF SUCH DAMAGE.                                               */
30 /*                                                                            */
31 /*   Copyright (c) 2006-2008 the Authors                                      */
32 /*   see AUTHORS and source files for details                                 */
33 /******************************************************************************/
34
35 /*
36  * Copyright © 2008 Florent Bruneau
37  */
38
39 #ifndef PFIXTOOLS_CONFIG_H
40 #define PFIXTOOLS_CONFIG_H
41
42 #include "filter.h"
43
44 typedef struct config_t config_t;
45
46 struct config_t {
47     /* SOURCE */
48     /* Root configuration file.
49      */
50     const char *filename;
51
52     /* Parameters.
53      */
54     A(filter_param_t)  params;
55
56
57     /* INTERPRETED */
58     /* Filters.
59      */
60     A(filter_t) filters;
61
62     /* Entry point of the filters.
63      * (one per smtp state)
64      */
65     int entry_points[SMTP_count];
66
67     /* Port on which the program have to bind to.
68      * The parameter from CLI override the parameter from configuration file.
69      */
70     uint16_t port;
71
72     /* Log message.
73      */
74     char *log_format;
75 };
76
77 #define DEFAULT_LOG_FORMAT                                                     \
78     "request client=${client_name}[${client_address}] from=<${sender}> "       \
79     "to=<${recipient}> at ${protocol_state}"
80
81 __attribute__((nonnull(1)))
82 config_t *config_read(const char *file);
83
84 __attribute__((nonnull(1)))
85 bool config_check(const char *file);
86
87 __attribute__((nonnull(1)))
88 bool config_reload(config_t *config);
89
90 void config_delete(config_t **config);
91
92 #endif