I have some issue with the dissector going over my packets more than once.
There's a legitimate reason to go over *some* packets more than once - if I have more than a single PDU in a packet (or a reassembled one), that's fine. But it just seems that it goes over all packets. I'm trying to fight it off with !pinfo->fd->visited, but I'm quite sure I'm doing something wrong. My code is quite standard:
static int
dissect_scylla(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
{
tcp_dissect_pdus(tvb, pinfo, tree, scylla_desegment, SCYLLA_NEGOTIATION_SIZE,
get_scylla_pdu_len, dissect_scylla_pdu, data);
return tvb_reported_length(tvb);
}
The get_scylla_pdu_len isn't, regretfully - it does find_conversation() and if it exists uses it (to get the state of protocol features, such as streaming, compression, etc.)
TIA,
Y.