ts_format only uses ndo if HAVE_PCAP_SET_TSTAMP_PRECISION is defined.
Add a routine to print "text protocols", and add FTP/HTTP/SMTP/RTSP support.

"Text protocols" are protocols that have the general feel of FTP, with
command lines with a command name and space-separated arguments and
response lines beginning with a 3-digit reply code.  They can also
include HTTP-style headers and an entity body.

We add support for the FTP control channel, HTTP, SMTP, and RTSP.  We
also change the SIP printer to use it.
Print *something* for Telnet regardless of the -q/-v flags.

For -q, just print "[telnet]".  Without -v, at least print the
negotiation.
No need to check for -q in the Telnet dissector.

If -q is used, the TCP dissector won't call subdissectors, so the Telnet
dissector won't even get called.
Add a comment explaining what the first telnet_parse() call does.
The TCP dissector already prints the length; we don't have to.
Use the length field in the UDP header.

If it's less than the length of the IP payload, use it as the size of
the UDP packet.  If it's greater than the length of the IP payload,
and we're not dissecting the payload, report the length as bad.
More comments.
If we don't find a CR-LF or LF, print up to the end of the packet.
Separate SMB-over-TCP output from TCP output with a space.
Add additional bounds checks, ND_TTESTize existing ones.

Use ND_TTEST() and ND_TTEST2() for bounds checks.

Pass a pointer to the struct pkt_top to wb_dops, and calculate the
address of the first struct dophdr there.  Check each struct dophdr
before printing it.  Hopefully this will quiet a Coverity complaint.