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