static __inline void upload_socket_data()

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);
    }
}