xref: /netbsd-src/external/ibm-public/postfix/dist/src/global/header_body_checks.h (revision c48c605c14fd8622b523d1d6a3f0c0bad133ea89)
1 /*	$NetBSD: header_body_checks.h,v 1.3 2023/12/23 20:30:43 christos Exp $	*/
2 
3 #ifndef _HBC_H_INCLUDED_
4 #define _HBC_H_INCLUDED_
5 
6 /*++
7 /* NAME
8 /*	header_body_checks 3h
9 /* SUMMARY
10 /*	delivery agent header/body checks
11 /* SYNOPSIS
12 /*	#include <header_body_checks.h>
13 /* DESCRIPTION
14 /* .nf
15 
16  /*
17   * Global library.
18   */
19 #include <mime_state.h>
20 #include <maps.h>
21 
22  /*
23   * Postfix < 2.5 compatibility.
24   */
25 #ifndef MIME_HDR_FIRST
26 #define MIME_HDR_FIRST		(1)
27 #define MIME_HDR_LAST		(3)
28 #endif
29 
30  /*
31   * External interface.
32   */
33 typedef struct {
34     const char *map_class;		/* parameter name */
35     MAPS   *maps;			/* map handle */
36 } HBC_MAP_INFO;
37 
38 typedef struct {
39     void    (*logger) (void *, const char *, const char *, const char *, const char *);
40     void    (*prepend) (void *, int, const char *, ssize_t, off_t);
41     char   *(*extend) (void *, const char *, ssize_t, const char *, const char *, const char *, ssize_t, off_t);
42 } HBC_CALL_BACKS;
43 
44 typedef struct {
45     HBC_CALL_BACKS *call_backs;
46     HBC_MAP_INFO map_info[1];		/* actually, a bunch */
47 } HBC_CHECKS;
48 
49 #define HBC_CHECKS_STAT_IGNORE	((char *) 0)
50 #define HBC_CHECKS_STAT_ERROR	(&hbc_checks_error)
51 #define HBC_CHECKS_STAT_UNKNOWN	(&hbc_checks_unknown)
52 
53 extern HBC_CHECKS *hbc_header_checks_create(const char *, const char *,
54 					         const char *, const char *,
55 					         const char *, const char *,
56 					            HBC_CALL_BACKS *);
57 extern HBC_CHECKS *hbc_body_checks_create(const char *, const char *,
58 					          HBC_CALL_BACKS *);
59 extern char *hbc_header_checks(void *, HBC_CHECKS *, int, const HEADER_OPTS *,
60 			               VSTRING *, off_t);
61 extern char *hbc_body_checks(void *, HBC_CHECKS *, const char *, ssize_t, off_t);
62 
63 #define hbc_header_checks_free(hbc) _hbc_checks_free((hbc), HBC_HEADER_SIZE)
64 #define hbc_body_checks_free(hbc) _hbc_checks_free((hbc), 1)
65 
66  /*
67   * The following are NOT part of the external API.
68   */
69 #define HBC_HEADER_SIZE	(MIME_HDR_LAST - MIME_HDR_FIRST + 1)
70 extern void _hbc_checks_free(HBC_CHECKS *, ssize_t);
71 extern char hbc_checks_error;
72 extern const char hbc_checks_unknown;
73 
74 /* LICENSE
75 /* .ad
76 /* .fi
77 /*	The Secure Mailer license must be distributed with this software.
78 /* AUTHOR(S)
79 /*	Wietse Venema
80 /*	IBM T.J. Watson Research
81 /*	P.O. Box 704
82 /*	Yorktown Heights, NY 10598, USA
83 /*
84 /*	Wietse Venema
85 /*	Google, Inc.
86 /*	111 8th Avenue
87 /*	New York, NY 10011, USA
88 /*--*/
89 
90 #endif
91