in bpf/include/socket_data.h [224:247]
static __inline void upload_socket_data(void *ctx, struct upload_data_args *args) {
// must have protocol and ssl must same(plain)
// if the connection data is needs to skip upload, then skip
if (args->connection_protocol == CONNECTION_PROTOCOL_UNKNOWN || args->connection_ssl != args->socket_data_ssl || args->connection_skip_data_upload == 1) {
return;
}
struct socket_data_last_id_t *latest = bpf_map_lookup_elem(&socket_data_last_id_map, &args->con_id);
args->prev_socket_data_id = 0;
if (latest != NULL && latest->random_id == args->random_id) {
args->prev_socket_data_id = latest->socket_data_id;
}
if (args->socket_data_buf != NULL) {
upload_socket_data_buf(ctx, args->socket_data_buf, args->bytes_count, args, args->socket_ssl_buffer_force_unfinished);
} else if (args->socket_data_iovec != NULL) {
upload_socket_data_iov(ctx, args->socket_data_iovec, args->socket_data_iovlen, args->bytes_count, args);
}
if (latest == NULL || latest->socket_data_id != args->socket_data_id) {
struct socket_data_last_id_t data = {};
data.random_id = args->random_id;
data.socket_data_id = args->socket_data_id;
bpf_map_update_elem(&socket_data_last_id_map, &args->con_id, &data, BPF_ANY);
}
}