1/*	$NetBSD: anvil_clnt.h,v 1.3 2020/03/18 19:05:16 christos Exp $	*/
2
3#ifndef _ANVIL_CLNT_H_INCLUDED_
4#define _ANVIL_CLNT_H_INCLUDED_
5
6/*++
7/* NAME
8/*	anvil_clnt 3h
9/* SUMMARY
10/*	connection count and rate management client interface
11/* SYNOPSIS
12/*	#include <anvil_clnt.h>
13/* DESCRIPTION
14/* .nf
15
16 /*
17  * System library.
18  */
19#include <stdarg.h>
20
21 /*
22  * Utility library.
23  */
24#include <attr_clnt.h>
25
26 /*
27  * Protocol interface: requests and endpoints.
28  */
29#define ANVIL_SERVICE		"anvil"
30#define ANVIL_CLASS		"private"
31
32#define ANVIL_ATTR_REQ		"request"
33#define ANVIL_REQ_CONN		"connect"
34#define ANVIL_REQ_DISC		"disconnect"
35#define ANVIL_REQ_MAIL		"message"
36#define ANVIL_REQ_RCPT		"recipient"
37#define ANVIL_REQ_NTLS		"newtls"
38#define ANVIL_REQ_NTLS_STAT	"newtls_status"
39#define ANVIL_REQ_AUTH		"auth"
40#define ANVIL_REQ_LOOKUP	"lookup"
41#define ANVIL_ATTR_IDENT	"ident"
42#define ANVIL_ATTR_COUNT	"count"
43#define ANVIL_ATTR_RATE		"rate"
44#define ANVIL_ATTR_MAIL		"mail"
45#define ANVIL_ATTR_RCPT		"rcpt"
46#define ANVIL_ATTR_NTLS		"newtls"
47#define ANVIL_ATTR_AUTH		"auth"
48#define ANVIL_ATTR_STATUS	"status"
49
50#define ANVIL_STAT_OK		0
51#define ANVIL_STAT_FAIL		(-1)
52
53 /*
54  * Functional interface.
55  */
56typedef struct ANVIL_CLNT ANVIL_CLNT;
57
58extern ANVIL_CLNT *anvil_clnt_create(void);
59extern int anvil_clnt_connect(ANVIL_CLNT *, const char *, const char *, int *, int *);
60extern int anvil_clnt_mail(ANVIL_CLNT *, const char *, const char *, int *);
61extern int anvil_clnt_rcpt(ANVIL_CLNT *, const char *, const char *, int *);
62extern int anvil_clnt_newtls(ANVIL_CLNT *, const char *, const char *, int *);
63extern int anvil_clnt_newtls_stat(ANVIL_CLNT *, const char *, const char *, int *);
64extern int anvil_clnt_auth(ANVIL_CLNT *, const char *, const char *, int *);
65extern int anvil_clnt_lookup(ANVIL_CLNT *, const char *, const char *, int *, int *, int *, int *, int *, int *);
66extern int anvil_clnt_disconnect(ANVIL_CLNT *, const char *, const char *);
67extern void anvil_clnt_free(ANVIL_CLNT *);
68
69/* LICENSE
70/* .ad
71/* .fi
72/*	The Secure Mailer license must be distributed with this software.
73/* AUTHOR(S)
74/*	Wietse Venema
75/*	IBM T.J. Watson Research
76/*	P.O. Box 704
77/*	Yorktown Heights, NY 10598, USA
78/*
79/*	Wietse Venema
80/*	Google, Inc.
81/*	111 8th Avenue
82/*	New York, NY 10011, USA
83/*--*/
84
85#endif
86