Blame


1 a248a3c1 2019-03-27 martijn #include <netinet/in.h>
2 a248a3c1 2019-03-27 martijn
3 a248a3c1 2019-03-27 martijn struct smtp_filter_connect {
4 a248a3c1 2019-03-27 martijn char *hostname;
5 a248a3c1 2019-03-27 martijn int af;
6 a248a3c1 2019-03-27 martijn union {
7 a248a3c1 2019-03-27 martijn struct in_addr addr;
8 a248a3c1 2019-03-27 martijn struct in6_addr addr6;
9 a248a3c1 2019-03-27 martijn };
10 a248a3c1 2019-03-27 martijn };
11 a248a3c1 2019-03-27 martijn
12 a248a3c1 2019-03-27 martijn enum filter_decision {
13 a248a3c1 2019-03-27 martijn FILTER_PROCEED = 0,
14 a248a3c1 2019-03-27 martijn FILTER_REJECT,
15 a248a3c1 2019-03-27 martijn FILTER_DISCONNECT,
16 a248a3c1 2019-03-27 martijn FILTER_REWRITE
17 a248a3c1 2019-03-27 martijn };
18 a248a3c1 2019-03-27 martijn
19 a248a3c1 2019-03-27 martijn int smtp_register_filter_connect(enum filter_decision (*cb)(char *, int, time_t,
20 a248a3c1 2019-03-27 martijn char *, char *, uint64_t, uint64_t, struct smtp_filter_connect *));
21 57cbfccc 2019-03-27 martijn void smtp_filter_proceed(uint64_t, uint64_t);
22 57cbfccc 2019-03-27 martijn void smtp_filter_reject(uint64_t, uint64_t, int, const char *, ...)
23 57cbfccc 2019-03-27 martijn __attribute__((__format__ (printf, 4, 5)));
24 57cbfccc 2019-03-27 martijn void smtp_filter_disconnect(uint64_t, uint64_t, const char *, ...)
25 57cbfccc 2019-03-27 martijn __attribute__((__format__ (printf, 3, 4)));
26 a248a3c1 2019-03-27 martijn void smtp_run(void);