Wireshark-dev: Re: [Wireshark-dev] Adding mp2t sub dissector plugin

From: Guy Harris <guy@xxxxxxxxxxxx>
Date: Tue, 14 Jul 2009 11:20:33 -0700

On Jul 14, 2009, at 10:56 AM, Frederic Turmel wrote:

Hi, I'm trying to build a plugin to dissect the payload of an mpeg transport packet. I'm using the following to add my plugin:

dissector_add("mp2t.pid", 0x00001f76, pluginHandle);

However when I build the code, wireshark crash at startup.

That won't work. Wireshark does not (and probably will not ever) arrange that every single field in a protocol can be used in that fashion.

The first argument to dissector_add() is the name of a "dissector table", used by the dissector that created the table to hand off packet data to another dissector. By *convention*, if a particular field's value is used to choose the dissector to which to hand off the packet data, the dissector table's name is the same as the name of the field; however, that does not mean that any field in a dissector can be used for this.

Is there another way to add a dissector based on the PID number?

No. You would have to modify the MPEG-2 transport stream dissector to support handing off the payload to another dissector; it currently has no code to do so. You'd have to modify dissect_tsp() to use the PID number to determine the dissector to handle the payload.