commit - 953e2ad7af92aeab3b6c1195055a5ab0efbc1285
commit + 02090eee90037052ff7d8ba498d53d511600a60d
blob - a6a3c54b893193042acad2bca58dbf1f4cb8ebee
blob + 4259c29d3a186d6194fa479df99fd2ef66321488
--- 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_dataline(struct smtp_callback *, int, struct timespec *,
+ uint64_t, uint64_t, char *);
static void smtp_in_link_disconnect(struct smtp_callback *, int, struct timespec *,
uint64_t, char *);
void *cb;
} smtp_callbacks[] = {
{"filter", "connect", "smtp-in", .smtp_filter = smtp_connect, 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_dataline(void (*cb)(char *, int, struct timespec *, char *,
+ char *, uint64_t, uint64_t, char *))
+{
+ return smtp_register("filter", "data-line", "smtp-in", (void *)cb);
+}
+
+int
smtp_in_register_report_disconnect(void (*cb)(char *, int, struct timespec *,
char *, char *, uint64_t))
{
}
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,
+ uint64_t, char *);
+
+ f = cb->cb;
+ f(cb->type, version, tm, cb->direction, cb->phase, reqid, token,
+ line);
+}
+
+static void
smtp_in_link_disconnect(struct smtp_callback *cb, int version,
struct timespec *tm, uint64_t reqid, char *params)
{
fflush(stdout);
}
+void
+smtp_filter_dataline(uint64_t reqid, uint64_t token, const char *line, ...)
+{
+ va_list ap;
+
+ printf("filter-dataline|%016"PRIx64"|%016"PRIx64"|", token, reqid);
+ va_start(ap, line);
+ vprintf(line, ap);
+ va_end(ap);
+ putchar('\n');
+ fflush(stdout);
+}
+
static int
smtp_register(char *type, char *phase, char *direction, void *cb)
{
blob - 43d69e151aac1d3635863d111416bf3586f43395
blob + 0ac5e466a2f1b635cc6ffd4e0731d9750ab386c0
--- smtp_proc.h
+++ smtp_proc.h
};
};
-int smtp_register_filter_connect(void (*cb)(char *, int, struct timespec *,
+int smtp_register_filter_connect(void (*)(char *, int, struct timespec *,
char *, char *, uint64_t, uint64_t, char *, struct inx_addr *));
+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 *,
char *, char *, uint64_t));
void smtp_filter_proceed(uint64_t, uint64_t);
__attribute__((__format__ (printf, 4, 5)));
void smtp_filter_disconnect(uint64_t, uint64_t, const char *, ...)
__attribute__((__format__ (printf, 3, 4)));
+void smtp_filter_dataline(uint64_t, uint64_t, const char *, ...)
+ __attribute__((__format__ (printf, 3, 4)));
void smtp_run(void);