Subject: Re: BIOCLOCK ioctl for bpf or pcap?
To: Jeremy C.Reed <reed@reedmedia.net>
From: Jason Thorpe <thorpej@shagadelic.org>
List: current-users
Date: 04/09/2007 17:11:53
On Apr 9, 2007, at 3:49 PM, Jeremy C. Reed wrote:

> Do we have any implementation of BIOCLOCK ioctl for bpf or pcap?

I don't think so, but I'm sure they would be trivial to add.

>
> I am trying to port an OpenBSD program. (Older version works fine in
> pkgsrc but has been updated for over a year and now uses BIOCLOCK.)
>
> FreeBSD added it to bpf.h in 2005 (from commit message):
>
>  Introduce two new ioctl(2) commands, BIOCLOCK and BIOCSETWF. These
>  commands enhance the security of bpf(4) by further relinquishing the
>  privilege of the bpf(4) consumer (assuming the ioctl commands are  
> being
>  implemented).
>
>  Once BIOCLOCK is executed, the device becomes locked which  
> prevents the
>  execution of ioctl(2) commands which can change the underly  
> parameters of
>  the bpf(4) device. An example might be the setting of bpf(4) filter
>  programs or attaching to different network interfaces.
>
> I know nothing about it. Does this exist in NetBSD and I overlooked  
> it? Or
> is anyone working on it? Or what is the best way to workaround this?
>
> The code I am looking at has:
>
>         pcap_freecode(&bpfp);
>
>         if (ioctl(pcap_fileno(hpcap), BIOCLOCK) < 0) {
>                 logmsg(LOG_ERR, "BIOCLOCK: %s", strerror(errno));
>                 return (-1);
>         }
>
>
>
>   Jeremy C. Reed

-- thorpej