While playing with a "Voip Calls" Graph Analysis for an H.323 call, I
thought it would good if clicking on an RTP entry would open the relevant
RTP analysis window.
I added an extra 'analysis' function callback field to 'struct
graph_analysis_item_t' and for RTP entries, set it to call
rtp_analysis_cb(). This worked insofar as it correctly summons an RTP
Analysis window, but the Graph Analysis window now refers to invalid data
after the taps are reinitialised as a result...
I'm not sure of the best way to make this work. Here is what I've
considered:
(1) The single 'tap reset' function that is passed to
register_tap_listener() doesn't distinguish between:
- resetting because new packets are coming
- resetting because the same packets are going to scanned again.
If the Voip Calls taps knew this difference, in the second case they could
avoid throwing away the data referred to by open Graph Analysis windows (it
could also quickly return from the tap 'packet callback' functions, speeding
things up somewhat).
(2) Change Voip Calls to use fixed rather than dynamic memory, so that if
the same packets are re-tapped the same details go back into the same memory
addresses and the Graph Analysis window will continue to refer to valid
data.
(3) The Graph Analysis window could keep a copy of the data it needs so it
can't be invalidated behind its back. However even now, an open window gets
very confused when a different capture file is loaded...
Would one of these schemes, or perhaps something else, work best?
Best regards,
Martin