Ethereal-dev: Re: [ethereal-dev] Ethereal Win32 libpcap patch.

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

From: Guy Harris <gharris@xxxxxxxxxxxx>
Date: Sun, 13 Feb 2000 19:42:10 -0800
> I've been working on a change to the Politecnico libpcap to dredge the
> netmask information from the registry (which not only handles this case,
> but better handles the case of a multi-homed host, and handles the case
> of a host with a CIDR netmask); unfortunately
> 
> 	1) I haven't yet figured out how to get WinDbg to show more
> 	   power than "adb";

Perhaps it can, but I've found that trying to bludgeon tools that don't
immediately look helpful into being helpful is often a massive exercise
in frustration, so...

> 	2) I haven't yet figured out how to use the Visual C++ 6.0
> 	   debugger without having the Borg assimilate the entire
> 	   project (no, I don't want to make a Visual Studio project out
> 	   of it, I still want to use the Nmakefiles);

...I eventually discovered that one can create a VC++ project of type
"Makefile", which causes it not to try to be so "helpful" and
"user-friendly", and to realize that You Know More About What You Want
To Do Than It Does, so that it doesn't insist that your project be fit
onto its Procrustean bed.

Having done that, I've managed to get a version that appears to work on
NT, allowing me to capture.

However:

	1) I still don't have a W9x version (the alleged W98 CDs I got
	   from the Microsoft Developer's Network don't appear to be
	   bootable install CDs, at least not on the VMWare "machine" on
	   which I tried booting them; perhaps I could install DOS and
	   Windows 3.x on that machine, and then upgrade);

	2) the Politecnico libpcap port is yet *another* port that
	   ignores the "to_ms" argument to "pcap_open_live()" - and
	   "select()" doesn't work on the file descriptor you get back
	   (whether this is because "select()" is a hack thrown in to
	   make it easier to port applications that do "select()" on
	   sockets port to Windows/Winsock, or not, is a good question)
	   - so the UI sometimes hangs and ignores you if there's no
	   packet traffic.

Sigh.  Somewhere along the line we may want to eliminate the dependency
on the "to_ms" argument working, as there are a number of platforms on
which that argument is ignored (DLPI platforms other than Solaris, IRIX,
Linux, Win32 with the Politecnico port).  Unfortunately, just adding the
file descriptor for the capture to the list of FDs on which the GTK+
main loop should select won't work on BSD, as the FD isn't ready for
reading on BSD until the buffer fills or the timer expires, and the
timer is started when you do a read, not when you do a
"select()"/"poll()"....