/*
**  Copyright (c) 2007 Sendmail, Inc. and its suppliers.
**	All rights reserved.
**
**  $Id: dkim-ar.h,v 1.6 2007/12/18 22:42:16 msk Exp $
*/

#ifndef _DKIM_AR_H_
#define _DKIM_AR_H_

#ifndef lint
static char dkim_ar_h_id[] = "@(#)$Id: dkim-ar.h,v 1.6 2007/12/18 22:42:16 msk Exp $";
#endif /* !lint */

/* system includes */
#include <sys/types.h>

/* dkim-filter includes */
#include "dkim-filter.h"

/* limits */
#define	MAXARESULTS	16
#define	MAXPROPS	16
#define	MAXAVALUE	256

/* ARES_METHOD_T -- type for specifying an authentication method */
typedef int ares_method_t;

#define	ARES_METHOD_UNKNOWN	(-1)
#define	ARES_METHOD_AUTH	0
#define	ARES_METHOD_DKIM	1
#define	ARES_METHOD_DOMAINKEYS	2
#define	ARES_METHOD_SENDERID	3
#define	ARES_METHOD_SPF		4
#define	ARES_METHOD_DKIMSSP	5
#define	ARES_METHOD_IPREV	6

/* ARES_RESULT_T -- type for specifying an authentication result */
typedef int ares_result_t;

#define	ARES_RESULT_UNKNOWN	(-1)
#define	ARES_RESULT_PASS	0
#define	ARES_RESULT_HARDFAIL	1
#define	ARES_RESULT_SOFTFAIL	2
#define	ARES_RESULT_NEUTRAL	3
#define	ARES_RESULT_TEMPERROR	4
#define	ARES_RESULT_PERMERROR	5

/* ARES_PTYPE_T -- type for specifying an authentication property */
typedef int ares_ptype_t;

#define	ARES_PTYPE_UNKNOWN	(-1)
#define	ARES_PTYPE_SMTP		0
#define	ARES_PTYPE_HEADER	1
#define	ARES_PTYPE_BODY		2
#define	ARES_PTYPE_POLICY	3

/* RESULT structure -- a single result */
struct result
{
	int		result_props;
	ares_method_t	result_method;
	ares_result_t	result_result;
	ares_ptype_t	result_ptype[MAXPROPS];
	char		result_property[MAXPROPS][MAXAVALUE + 1];
	char		result_value[MAXPROPS][MAXAVALUE + 1];
};

/* AUTHRES structure -- the entire header parsed */
struct authres
{
	int		ares_count;
	char		ares_host[DKIM_MAXHOSTNAMELEN + 1];
	struct result	ares_result[MAXARESULTS];
};

/*
**  ARES_PARSE -- parse an Authentication-Results: header, return a
**                structure containing a parsed result
**
**  Parameters:
**  	hdr -- NULL-terminated contents of an Authentication-Results:
**  	       header field
**  	ar -- a pointer to a (struct authres) loaded by values after parsing
**  
**  Return value:
**  	0 on success, -1 on failure.
*/

extern int ares_parse __P((u_char *hdr, struct authres *ar));

#endif /* _DKIM_AR_H_ */


syntax highlighted by Code2HTML, v. 0.9.1