Guy, I have a bunch of work in my tcpdump/libpcap repo checked out via anoncvs but I cant generate a diff because there isnt a route or (the machine(s) aren't up (tcpdump,org)), are you guys experiencing any problems?
Thanks, Kind regards On Sun, Apr 06, 2008 at 12:45:39PM -0700, Guy Harris wrote: > Christian S.J. Peron wrote: > >I have attached the patch that we have been using. This is a patch for the > >libpcap code in FreeBSD -CURRENT right now. It appears to work well, but > >you folks might have some ideas for getting the necessary autoconf magic > >in, as well make some possible architecture changes. > > > Some comments: > > I've checked in changes to split pcap_open_live() into pcap_create() and > pcap_activate(), so you can set various options before activating the > capture handle; this means that the pcap_open_live() routine would need > some changes. You should probably check out the main branch of libpcap > with anonymous CVS and maintain your changes in that tree, so that > checkins to CVS get propagated to your code. > > You might want to include <sys/mman.h> and <sys/poll.h> only if you have > memory-mapped BPF support, in case, for example, older versions of AIX > don't have those headers. > > Also, you're using select() rather than poll(); is there any need to > include <sys/poll.h> at all? > > You might want to put the structure members for memory-mapped mode into > the "pcap_md" structure; I'm trying to move towards having only the > stuff that's used for all capture types and for savefiles in the pcap_t > structure, and move stuff specific to capturing into pcap_md > (ultimately, I'd like to have the pcap_create() routines allocate > structures with their platform-specific members, so that information > doesn't have to be in pcap-int.h). > > Also, there's no need for a "timeout" member of your own - just use > "md.timeout". > > pcap_t handles can be put into non-blocking mode; in that mode, > pcap_next_zbuf() shouldn't call select(). See pcap-linux.c to see how > that's done there - if it uses the memory-mapped ring buffer, it > overrides the "get nonblocking mode" and "set nonblocking mode" methods, > so that the "set" method sets "md.timeout" to a negative value in > non-blocking mode, which is used as an indication that select() > shouldn't be called, and the "get" method checks the value of > "md.timeout" to see whether non-blocking mode is on or not. > > pcap_close_common() shouldn't be modified - instead, you should, if > memory-mapped BPF is being used, override the close method with your own > routine in pcap-bpf.c, which would delete the mappings and then call > pcap_close_common(). - This is the tcpdump-workers list. Visit https://cod.sandelman.ca/ to unsubscribe.
