commit a28aed5294bf63bca867930a579f60c9cd7e5688 from: Martijn van Duren date: Sun Mar 31 15:59:37 2019 UTC Add support for filter-data commit - ad394dccdd83054bf6379b35acf8ec0782451d4d commit + a28aed5294bf63bca867930a579f60c9cd7e5688 blob - 27184b20e50af303d044271140c7e5b737f04d3a blob + 4b27868ec32fcc96ec3ffd47220c27aebe999789 --- smtp_proc.c +++ smtp_proc.c @@ -41,6 +41,8 @@ static ssize_t smtp_getline(char ** restrict, size_t * 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 *, @@ -59,6 +61,7 @@ struct smtp_callback { 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} @@ -74,6 +77,13 @@ smtp_register_filter_connect(void (*cb)(char *, int, s } 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 *)) { @@ -273,10 +283,21 @@ smtp_connect(struct smtp_callback *cb, int version, st } 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 @@ -27,6 +27,8 @@ struct inx_addr { 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 *,