commit - ad394dccdd83054bf6379b35acf8ec0782451d4d
commit + a28aed5294bf63bca867930a579f60c9cd7e5688
blob - 27184b20e50af303d044271140c7e5b737f04d3a
blob + 4b27868ec32fcc96ec3ffd47220c27aebe999789
--- smtp_proc.c
+++ smtp_proc.c
static void smtp_newline(int, short, void *);
static void smtp_connect(struct smtp_callback *, int, struct timespec *,
uint64_t, uint64_t, char *);
+static void smtp_data(struct smtp_callback *, int, struct timespec *,
+ uint64_t, uint64_t, char *);
static void smtp_dataline(struct smtp_callback *, int, struct timespec *,
uint64_t, uint64_t, char *);
static void smtp_in_link_disconnect(struct smtp_callback *, int, struct timespec *,
void *cb;
} smtp_callbacks[] = {
{"filter", "connect", "smtp-in", .smtp_filter = smtp_connect, NULL},
+ {"filter", "data", "smtp-in", .smtp_filter = smtp_data, NULL},
{"filter", "data-line", "smtp-in", .smtp_filter = smtp_dataline, NULL},
{"report", "link-disconnect", "smtp-in",
.smtp_report = smtp_in_link_disconnect, NULL}
}
int
+smtp_register_filter_data(void (*cb)(char *, int, struct timespec *, char *,
+ char *, uint64_t, uint64_t))
+{
+ return smtp_register("filter", "data", "smtp-in", (void *)cb);
+}
+
+int
smtp_register_filter_dataline(void (*cb)(char *, int, struct timespec *, char *,
char *, uint64_t, uint64_t, char *))
{
}
static void
+smtp_data(struct smtp_callback *cb, int version, struct timespec *tm,
+ uint64_t reqid, uint64_t token, char *params)
+{
+ void (*f)(char *, int, struct timespec *, char *, char *, uint64_t,
+ uint64_t);
+
+ f = cb->cb;
+ f(cb->type, version, tm, cb->direction, cb->phase, reqid, token);
+}
+
+static void
smtp_dataline(struct smtp_callback *cb, int version, struct timespec *tm,
uint64_t reqid, uint64_t token, char *line)
{
- void (*f)(char *, int, struct timespec *,char *, char *, uint64_t,
+ void (*f)(char *, int, struct timespec *, char *, char *, uint64_t,
uint64_t, char *);
f = cb->cb;
blob - d44b76f095cc3293fd250780da6f9b83a4d621a3
blob + 39a43d963a2e37a9f520a2229d53d6b73694db1e
--- smtp_proc.h
+++ smtp_proc.h
int smtp_register_filter_connect(void (*)(char *, int, struct timespec *,
char *, char *, uint64_t, uint64_t, char *, struct inx_addr *));
+int smtp_register_filter_data(void (*)(char *, int, struct timespec *, char *,
+ char *, uint64_t, uint64_t));
int smtp_register_filter_dataline(void (*)(char *, int, struct timespec *, char *,
char *, uint64_t, uint64_t, char *));
int smtp_in_register_report_disconnect(void (*)(char *, int, struct timespec *,