1 /*	$NetBSD: trivial-rewrite.h,v 1.3 2020/03/18 19:05:21 christos Exp $	*/
2 
3 /*++
4 /* NAME
5 /*	trivial-rewrite 3h
6 /* SUMMARY
7 /*	mail address rewriter and resolver
8 /* SYNOPSIS
9 /*	#include "trivial-rewrite.h"
10 /* DESCRIPTION
11 /* .nf
12 
13  /*
14   * Utility library.
15   */
16 #include <vstring.h>
17 #include <vstream.h>
18 
19  /*
20   * Global library.
21   */
22 #include <tok822.h>
23 #include <maps.h>
24 
25  /*
26   * Connection management.
27   */
28 extern int server_flags;
29 
30  /*
31   * rewrite.c
32   */
33 typedef struct {
34     const char *origin_name;		/* name of variable */
35     char  **origin;			/* default origin */
36     const char *domain_name;		/* name of variable */
37     char  **domain;			/* default domain */
38 } RWR_CONTEXT;
39 
40 #define REW_PARAM_VALUE(x) (*(x))	/* make it easy to do it right */
41 
42 extern void rewrite_init(void);
43 extern int rewrite_proto(VSTREAM *);
44 extern void rewrite_addr(RWR_CONTEXT *, char *, VSTRING *);
45 extern void rewrite_tree(RWR_CONTEXT *, TOK822 *);
46 extern RWR_CONTEXT local_context;
47 extern RWR_CONTEXT inval_context;
48 
49  /*
50   * resolve.c
51   */
52 typedef struct {
53     const char *local_transport_name;	/* name of variable */
54     char  **local_transport;		/* local transport:nexthop */
55     const char *virt_transport_name;	/* name of variable */
56     char  **virt_transport;		/* virtual mailbox transport:nexthop */
57     const char *relay_transport_name;	/* name of variable */
58     char  **relay_transport;		/* relay transport:nexthop */
59     const char *def_transport_name;	/* name of variable */
60     char  **def_transport;		/* default transport:nexthop */
61     const char *snd_def_xp_maps_name;	/* name of variable */
62     char  **snd_def_xp_maps;		/* maptype:mapname */
63     MAPS   *snd_def_xp_info;		/* handle */
64     const char *relayhost_name;		/* name of variable */
65     char  **relayhost;			/* for relay and default transport */
66     const char *snd_relay_maps_name;	/* name of variable */
67     char  **snd_relay_maps;		/* maptype:mapname */
68     MAPS   *snd_relay_info;		/* handle */
69     const char *transport_maps_name;	/* name of variable */
70     char  **transport_maps;		/* maptype:mapname */
71     struct TRANSPORT_INFO *transport_info;	/* handle */
72 } RES_CONTEXT;
73 
74 #define RES_PARAM_VALUE(x) (*(x))	/* make it easy to do it right */
75 
76 extern void resolve_init(void);
77 extern int resolve_proto(RES_CONTEXT *, VSTREAM *);
78 extern int resolve_class(const char *);
79 
80 /* LICENSE
81 /* .ad
82 /* .fi
83 /*	The Secure Mailer license must be distributed with this software.
84 /* AUTHOR(S)
85 /*	Wietse Venema
86 /*	IBM T.J. Watson Research
87 /*	P.O. Box 704
88 /*	Yorktown Heights, NY 10598, USA
89 /*
90 /*	Wietse Venema
91 /*	Google, Inc.
92 /*	111 8th Avenue
93 /*	New York, NY 10011, USA
94 /*--*/
95