> I could also dig into the TDS login packet to establish that it is a valid
> netlib stream and stash the IP and port number(s) somewhere to validate
> against later packets.
What would you do if it doesn't match?
I.e., what is the purpose for doing so?
> I have a basic netlib dissector going now...I think I'll take a stab at
> the heuristics before going on to TDS proper. BTW, what is the best way
> to pass a value (netlib packet type) from a lower level dissector to a
> sub-dissector?
Set "pinfo->private_data" to point to the value (which must be a single
variable, so if you have more than one value to pass, put them in a
structure), and have the sub-dissector fetch the value from
"pinfo->private_data".
You might want to save the old value of "pinfo->private_data" before
setting it, and restore it after the subdissector returns.
> > 2) let the user specify the port to be used, as a preference,
> > which means that if it's not using the default port, the user
> > has to go in and tweak things.
>
> In my environment we have dozens of servers all on different ports. This
> would be a real pain. Is there a method to select a undissected stream
> from the main window and then do a one time association with a particular
> protocol?
Yes, you can use the "Decode As..." menu item for that. (It doesn't
select streams, it selects a packet, and lets you specify whether to
dissect the source or destination port number as the protocol in
question.)
You'd have to register your dissector as a "conversation dissector" for
TCP in order to make that available (and it'd have to be the netlib
dissector, i.e. a dissector for something that runs directly atop TCP).