Merge from EXISCAN branch.
[exim.git] / src / src / routers / redirect.h
1 /* $Cambridge: exim/src/src/routers/redirect.h,v 1.2 2004/12/16 15:11:48 tom Exp $ */
2
3 /*************************************************
4 *     Exim - an Internet mail transport agent    *
5 *************************************************/
6
7 /* Copyright (c) University of Cambridge 1995 - 2004 */
8 /* See the file NOTICE for conditions of use and distribution. */
9
10 /* Header for the redirect router */
11
12 /* Private structure for the private options. */
13
14 typedef struct {
15   transport_instance *directory_transport;
16   transport_instance *file_transport;
17   transport_instance *pipe_transport;
18   transport_instance *reply_transport;
19
20   uschar *data;
21   uschar *directory_transport_name;
22   uschar *file;
23   uschar *file_dir;
24   uschar *file_transport_name;
25   uschar *include_directory;
26   uschar *pipe_transport_name;
27   uschar *reply_transport_name;
28   uschar *sieve_vacation_directory;
29   uschar *syntax_errors_text;
30   uschar *syntax_errors_to;
31   uschar *qualify_domain;
32
33   uid_t  *owners;
34   gid_t  *owngroups;
35
36 #ifdef EXPERIMENTAL_SRS
37   uschar *srs;
38   uschar *srs_condition;
39   uschar *srs_db;
40   uschar *srs_alias;
41 #endif
42
43   int   modemask;
44   int   bit_options;
45   BOOL  check_ancestor;
46   BOOL  check_group;
47   BOOL  check_owner;
48   BOOL  forbid_file;
49   BOOL  forbid_filter_reply;
50   BOOL  forbid_pipe;
51   BOOL  hide_child_in_errmsg;
52   BOOL  one_time;
53   BOOL  qualify_preserve_domain;
54   BOOL  skip_syntax_errors;
55 } redirect_router_options_block;
56
57 /* Data for reading the private options. */
58
59 extern optionlist redirect_router_options[];
60 extern int redirect_router_options_count;
61
62 /* Block containing default values. */
63
64 extern redirect_router_options_block redirect_router_option_defaults;
65
66 /* The main and initialization entry points for the router */
67
68 extern int redirect_router_entry(router_instance *, address_item *,
69   struct passwd *, BOOL, address_item **, address_item **,
70   address_item **, address_item **);
71
72 extern void redirect_router_init(router_instance *);
73
74 /* End of routers/redirect.h */