add support for retrieving pcap packet timestamps

This commit is contained in:
luwenpeng
2024-08-23 16:04:07 +08:00
parent 6808e6ba29
commit 2634d70108
6 changed files with 31 additions and 8 deletions

View File

@@ -89,11 +89,11 @@ static void *on_sess_new(struct session *sess, void *plugin_ctx)
if (session_get_type(sess) == SESSION_TYPE_TCP)
{
memset(buff, 0, sizeof(buff));
sprintf(buff, "./log/debug_plugin_%s_c2s_segment", session_get0_readable_addr(sess));
sprintf(buff, "./log/debug_plugin.log.c2s_segment_%s", session_get0_readable_addr(sess));
ctx->c2s_tcp_seg_hexdump_fd = open(buff, O_WRONLY | O_APPEND | O_CREAT, 0644);
memset(buff, 0, sizeof(buff));
sprintf(buff, "./log/debug_plugin_%s_s2c_segment", session_get0_readable_addr(sess));
sprintf(buff, "./log/debug_plugin.log.s2c_segment_%s", session_get0_readable_addr(sess));
ctx->s2c_tcp_seg_hexdump_fd = open(buff, O_WRONLY | O_APPEND | O_CREAT, 0644);
}
session_exdata_set(sess, ctx->sess_exdata_idx, exdata);
@@ -142,7 +142,8 @@ static void on_sess_udp_msg(struct session *sess, int topic_id, const void *msg,
}
char buff[4096];
struct packet *pkt = (struct packet *)msg;
const struct packet *pkt = (const struct packet *)msg;
const struct timeval *tv = packet_get_timeval(pkt);
struct plugin_ctx *ctx = (struct plugin_ctx *)plugin_ctx;
struct session_exdata *exdata = (struct session_exdata *)session_exdata_get(sess, ctx->sess_exdata_idx);
if (session_get_current_flow_direction(sess) == FLOW_DIRECTION_C2S)
@@ -162,7 +163,7 @@ static void on_sess_udp_msg(struct session *sess, int topic_id, const void *msg,
memset(buff, 0, sizeof(buff));
packet_dump_str(pkt, buff, sizeof(buff) - 1);
log_print(ctx->fd, "debug plugin", "rx UDP packet: \n%s", buff);
log_print(ctx->fd, "debug plugin", "rx UDP packet (tv_sec: %lu, tv_usec: %lu): \n%s", tv->tv_sec, tv->tv_usec, buff);
pthread_spin_lock(&ctx->lock);
packet_dump_hex(pkt, ctx->fd);
@@ -177,7 +178,8 @@ static void on_sess_tcp_msg(struct session *sess, int topic_id, const void *msg,
}
char buff[4096];
struct packet *pkt = (struct packet *)msg;
const struct packet *pkt = (const struct packet *)msg;
const struct timeval *tv = packet_get_timeval(pkt);
struct plugin_ctx *ctx = (struct plugin_ctx *)plugin_ctx;
struct session_exdata *exdata = (struct session_exdata *)session_exdata_get(sess, ctx->sess_exdata_idx);
if (session_get_current_flow_direction(sess) == FLOW_DIRECTION_C2S)
@@ -197,7 +199,7 @@ static void on_sess_tcp_msg(struct session *sess, int topic_id, const void *msg,
memset(buff, 0, sizeof(buff));
packet_dump_str(pkt, buff, sizeof(buff) - 1);
log_print(ctx->fd, "debug plugin", "rx TCP packet: \n%s", buff);
log_print(ctx->fd, "debug plugin", "rx TCP packet (tv_sec: %lu, tv_usec: %lu): \n%s", tv->tv_sec, tv->tv_usec, buff);
pthread_spin_lock(&ctx->lock);
packet_dump_hex(pkt, ctx->fd);
@@ -212,7 +214,7 @@ static void on_sess_tcp_stream_msg(struct session *sess, int topic_id, const voi
}
char buff[4096];
struct tcp_segment *seg = (struct tcp_segment *)msg;
const struct tcp_segment *seg = (const struct tcp_segment *)msg;
struct plugin_ctx *ctx = (struct plugin_ctx *)plugin_ctx;
const char *data = tcp_segment_get_data(seg);
uint16_t len = tcp_segment_get_len(seg);
@@ -258,7 +260,7 @@ extern "C"
return NULL;
}
ctx->fd = open("./log/debug_plugin_log", O_WRONLY | O_APPEND | O_CREAT, 0644);
ctx->fd = open("./log/debug_plugin.log", O_WRONLY | O_APPEND | O_CREAT, 0644);
if (ctx->fd == -1)
{
printf("[debug plugin] open log file failed: %s\n", strerror(errno));