1 /*
2 **  Copyright (c) 2005-2009 Sendmail, Inc. and its suppliers.
3 **	All rights reserved.
4 **
5 **  Copyright (c) 2009-2014, 2016, The Trusted Domain Project.
6 **  	All rights reserved.
7 */
8 
9 #ifndef _OPENARC_H_
10 #define _OPENARC_H_
11 
12 #define	ARCF_PRODUCT	"OpenARC Filter"
13 #define	ARCF_PRODUCTNS	"OpenARC-Filter"
14 
15 #include "build-config.h"
16 
17 /* system includes */
18 #include <sys/types.h>
19 #ifdef HAVE_STDBOOL_H
20 # include <stdbool.h>
21 #endif /* HAVE_STDBOOL_H */
22 
23 /* libmilter */
24 #ifdef ARCF_MILTER_PROTOTYPES
25 # include <libmilter/mfapi.h>
26 #endif /* ARCF_MILTER_PROTOTYPES */
27 
28 /* libopenarc */
29 #include "arc.h"
30 
31 /* libjansson */
32 #ifdef USE_JANSSON
33 # include <jansson.h>
34 #endif /* USE_JANSSON */
35 
36 /* make sure we have TRUE and FALSE */
37 #ifndef FALSE
38 # define FALSE		0
39 #endif /* !FALSE */
40 #ifndef TRUE
41 # define TRUE		1
42 #endif /* !TRUE */
43 
44 /* defaults, limits, etc. */
45 #define	BUFRSZ		1024
46 #define CONFIGOPTS	"Ac:flnp:P:rt:u:vV"
47 #define	DEFCONFFILE	CONFIG_BASE "/openarc.conf"
48 #define	DEFINTERNAL	"csl:127.0.0.1,::1"
49 #define	DEFMAXHDRSZ	65536
50 #define	HOSTUNKNOWN	"unknown-host"
51 #define	JOBIDUNKNOWN	"(unknown-jobid)"
52 #define	LOCALHOST	"127.0.0.1"
53 #define	LOCALHOST6	"::1"
54 #define	MAXADDRESS	256
55 #define	MAXARGV		65536
56 #define	MAXBUFRSZ	65536
57 #define	MAXHDRCNT	64
58 #define	MAXHDRLEN	78
59 #define	MAXSIGNATURE	1024
60 #define	MTAMARGIN	78
61 #define	NULLDOMAIN	"(invalid)"
62 #define	UNKNOWN		"unknown"
63 
64 #define AUTHRESULTSHDR	"Authentication-Results"
65 #define	SWHEADERNAME	"ARC-Filter"
66 
67 /*
68 **  HEADER -- a handle referring to a header
69 */
70 
71 typedef struct Header * Header;
72 struct Header
73 {
74 	char *		hdr_hdr;
75 	char *		hdr_val;
76 	struct Header *	hdr_next;
77 	struct Header *	hdr_prev;
78 };
79 
80 /* externs */
81 extern _Bool dolog;
82 extern char *progname;
83 
84 /* prototypes, exported for test.c */
85 extern ARC_MESSAGE *arcf_getarc __P((void *));
86 
87 #ifdef ARCF_MILTER_PROTOTYPES
88 extern sfsistat mlfi_connect __P((SMFICTX *, char *, _SOCK_ADDR *));
89 extern sfsistat mlfi_envfrom __P((SMFICTX *, char **));
90 extern sfsistat mlfi_envrcpt __P((SMFICTX *, char **));
91 extern sfsistat mlfi_header __P((SMFICTX *, char *, char *));
92 extern sfsistat mlfi_eoh __P((SMFICTX *));
93 extern sfsistat mlfi_body __P((SMFICTX *, u_char *, size_t));
94 extern sfsistat mlfi_eom __P((SMFICTX *));
95 extern sfsistat mlfi_abort __P((SMFICTX *));
96 extern sfsistat mlfi_close __P((SMFICTX *));
97 #endif /* ARCF_MILTER_PROTOTYPES */
98 
99 #endif /* _OPENARC_H_ */
100