summaryrefslogtreecommitdiffstats
path: root/src/global/header_body_checks.h
blob: b8838dbaa45a2cc61de73e38fbf20e8b22f4e3a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#ifndef _HBC_H_INCLUDED_
#define _HBC_H_INCLUDED_

/*++
/* NAME
/*	header_body_checks 3h
/* SUMMARY
/*	delivery agent header/body checks
/* SYNOPSIS
/*	#include <header_body_checks.h>
/* DESCRIPTION
/* .nf

 /*
  * Global library.
  */
#include <mime_state.h>
#include <maps.h>

 /*
  * Postfix < 2.5 compatibility.
  */
#ifndef MIME_HDR_FIRST
#define MIME_HDR_FIRST		(1)
#define MIME_HDR_LAST		(3)
#endif

 /*
  * External interface.
  */
typedef struct {
    const char *map_class;		/* parameter name */
    MAPS   *maps;			/* map handle */
} HBC_MAP_INFO;

typedef struct {
    void    (*logger) (void *, const char *, const char *, const char *, const char *);
    void    (*prepend) (void *, int, const char *, ssize_t, off_t);
    char   *(*extend) (void *, const char *, ssize_t, const char *, const char *, const char *, ssize_t, off_t);
} HBC_CALL_BACKS;

typedef struct {
    HBC_CALL_BACKS *call_backs;
    HBC_MAP_INFO map_info[1];		/* actually, a bunch */
} HBC_CHECKS;

#define HBC_CHECKS_STAT_IGNORE	((char *) 0)
#define HBC_CHECKS_STAT_ERROR	(&hbc_checks_error)
#define HBC_CHECKS_STAT_UNKNOWN	(&hbc_checks_unknown)

extern HBC_CHECKS *hbc_header_checks_create(const char *, const char *,
					         const char *, const char *,
					         const char *, const char *,
					            HBC_CALL_BACKS *);
extern HBC_CHECKS *hbc_body_checks_create(const char *, const char *,
					          HBC_CALL_BACKS *);
extern char *hbc_header_checks(void *, HBC_CHECKS *, int, const HEADER_OPTS *,
			               VSTRING *, off_t);
extern char *hbc_body_checks(void *, HBC_CHECKS *, const char *, ssize_t, off_t);

#define hbc_header_checks_free(hbc) _hbc_checks_free((hbc), HBC_HEADER_SIZE)
#define hbc_body_checks_free(hbc) _hbc_checks_free((hbc), 1)

 /*
  * The following are NOT part of the external API.
  */
#define HBC_HEADER_SIZE	(MIME_HDR_LAST - MIME_HDR_FIRST + 1)
extern void _hbc_checks_free(HBC_CHECKS *, ssize_t);
extern char hbc_checks_error;
extern const char hbc_checks_unknown;

/* LICENSE
/* .ad
/* .fi
/*	The Secure Mailer license must be distributed with this software.
/* AUTHOR(S)
/*	Wietse Venema
/*	IBM T.J. Watson Research
/*	P.O. Box 704
/*	Yorktown Heights, NY 10598, USA
/*
/*	Wietse Venema
/*	Google, Inc.
/*	111 8th Avenue
/*	New York, NY 10011, USA
/*--*/

#endif