Subject: BIOCLOCK ioctl for bpf or pcap?
To: None <current-users@NetBSD.org>
From: Jeremy C. Reed <reed@reedmedia.net>
List: current-users
Date: 04/09/2007 17:49:22
Do we have any implementation of BIOCLOCK ioctl for bpf or pcap?

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