Hi,
Does
it work better with revision 35020 or later?
Regards
Anders
Hi,
since revision 35005 and the commit of the ReLOAD framing
dissector the UDP heuristic dissector I use (LTE-RLC) no longer works. My RLC
PDU is seen as a ReLOAD packet.
When looking at the code, the function
dissect_reload_framing_heur() calls dissect_reload_framing_message() that does
almost no checks:
/* First, make sure we have enough data to do
the check. */
if (effective_length <
MIN_HDR_LENGTH)
return 0;
/* Get the type
*/
type = tvb_get_guint8(tvb, 0);
if (type == DATA)
{
/* in the data type, check the reload token to be sure
this
is a reLoad packet
*/
message_length = (tvb_get_ntohs(tvb, 1 + 4)<<8)+
tvb_get_guint8(tvb, 1 + 4 + 2);
if (message_length <
MIN_RELOADDATA_HDR_LENGTH) {
return
0;
}
relo_token =
tvb_get_ntohl(tvb,1 + 4 + 3);
if (relo_token !=
RELOAD_TOKEN) {
return
0;
}
}
The LTE-RLC heuristic dissector
adds the "rlc-lte" string at the beginning of the UDP packet and unfortunately
it is caught by the code above.
I'm not familiar with this protocol but I
guess there is probably a way to avoid breaking other dissectors. Adding the
following patch helps on my side but I'm not sure it is fully valid and it still
seems weak to me:
Index:
epan/dissectors/packet-reload-framing.c
===================================================================
---
epan/dissectors/packet-reload-framing.c (revision
35018)
+++ epan/dissectors/packet-reload-framing.c (working
copy)
@@ -143,9 +143,10 @@
if (relo_token !=
RELOAD_TOKEN) {
return
0;
}
+ } else if (type != ACK)
{
+ return 0;
}
-
/* The message seems to be a valid reLOAD
framing message! */
col_set_str(pinfo->cinfo,
COL_PROTOCOL, "RELOAD
Frame");
Thanks,
Pascal.