From owner-freebsd-hackers@FreeBSD.ORG Mon Sep 8 00:50:56 2003 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9399F16A4C0 for ; Mon, 8 Sep 2003 00:50:56 -0700 (PDT) Received: from smtp.netli.com (ip2-pal-focal.netli.com [66.243.52.2]) by mx1.FreeBSD.org (Postfix) with ESMTP id 873C343FF3 for ; Mon, 8 Sep 2003 00:50:55 -0700 (PDT) (envelope-from vlm@netli.com) Received: (qmail 9771 invoked by uid 84); 8 Sep 2003 07:50:54 -0000 Received: from vlm@netli.com by l3-1 with qmail-scanner-0.96 (uvscan: v4.1.40/v4121. . Clean. Processed in 0.14882 secs); 08 Sep 2003 07:50:54 -0000 Received: from unknown (HELO netli.com) (172.17.1.12) by mx01-pal-lan.netli.lan with SMTP; 8 Sep 2003 07:50:54 -0000 Message-ID: <3F5C3549.8050607@netli.com> Date: Mon, 08 Sep 2003 00:52:41 -0700 From: Lev Walkin Organization: Netli, Inc. User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.4) Gecko/20030820 X-Accept-Language: ru, en-us, en MIME-Version: 1.0 To: Dmitry Morozovsky References: <20030907233940.M18589@woozle.rinet.ru> <3F5BB991.2050601@netli.com> <20030908113632.R55683@woozle.rinet.ru> In-Reply-To: <20030908113632.R55683@woozle.rinet.ru> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit cc: hackers@freebsd.org Subject: Re: if bpf fd's select()able? X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Sep 2003 07:50:56 -0000 Dmitry Morozovsky wrote: > On Sun, 7 Sep 2003, Lev Walkin wrote: > > LW> > [all below is for 4-STABLE] > LW> > > LW> > I'm trying to write effective arp scanner for multi-interface router (esp. > LW> > multi-vlan); I plan to use multiple bpf devices attached to different > LW> > interfaces emitting ARP requests and filters listening to ARP replies; the most > LW> > natural way to multiplex them for me is select(). > LW> > > LW> > However, my tests show that select()ing bpf fd does not lead to trigger packets > LW> > available to bpf filter; the process hangs in select state while parallel > LW> > tcpdump process shows packets desired *and* is in bpf state. > LW> > > LW> > Am I missing something "base"? References (surely, I'd already read > LW> > manpages for bpf, pcap and related -- but did I still missed something > LW> > serious?) would be greatly appreciated. > LW> > LW> Yes, you're missing the interactive mode. > LW> Refer to BIOCIMMEDIATE in the bpf(4) manual page. > > Unfortunately not ;-) Fortunately, yes. > if (ioctl(fd, BIOCPROMISC, NULL) == -1) > err(1, "can't set promisc mode"); > if (ioctl(fd, BIOCIMMEDIATE, &yes) == -1) > err(1, "can't set IMMEDIATE mode"); Are you sure that "yes" variable holds the truth value? -- Lev Walkin vlm@netli.com