Ethereal-dev: Re: [Ethereal-dev] Removing dissectors

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Guy Harris <guy@xxxxxxxxxxxx>
Date: Wed, 14 Jan 2004 18:40:53 -0800

On Jan 14, 2004, at 5:52 PM, Richard Sharpe wrote:

He uses tethereal with the SQL patch to store info in MySQL and then does
lots of interesting postprocessing on the data. He claims that they can
process at about 30Mbps, and, using 0.9.16, experiences something like a 300% speed improvement if he removes all but the half-dozen protocols they
are interested in and the protocols required to reach those protocols.

Because it just doesn't bother calling their dissectors, but just dissects them as data?

So what they really want is a way to prevent particular dissectors from handing anything off to subdissectors. That *could* be done at startup time, but I could also imagine somebody wanting to dynamically turn off handoff from some particular protocol *and* turn it on again, so that they could, for example, look at a trace purely from the standpoint of TCP and then turn handoff from TCP back on again.

The various handoff routines currently don't know what dissector is doing the handoff; that could be changed in a couple of ways:

	1) make it an explicit argument;

	2) keep that information in the "packet_info" structure.

The former requires API changes; the latter wouldn't, as the handoff routines could maintain that, just as they maintain the "current_proto" member of the "packet_info" structure. (It'd require changes in those few places where handoff isn't done with handoff routines - those could be found by looking for places where "pinfo->current_proto" is changed.)