[RFC] BPF timestamping

Jung-uk Kim jkim at FreeBSD.org
Wed Jun 9 19:42:52 UTC 2010


On Wednesday 09 June 2010 03:16 pm, Kostik Belousov wrote:
> On Wed, Jun 09, 2010 at 02:44:47PM -0400, Jung-uk Kim wrote:
> > bpf(4) can only timestamp packets with microtime(9).  I want to
> > expand it to be able to use different format and resolution.  The
> > patch is here:
> >
> > http://people.freebsd.org/~jkim/bpf_tstamp.diff
> >
> > With this patch, we can select different format and resolution of
> > the timestamps.  It is done via ioctl(2) with BIOCSTSTAMP
> > command. Similarly, you can get the current format and resolution
> > with BIOCGTSTAMP command.  Currently, the following functions are
> > available:
> >
> > 	BPF_T_MICROTIME		microtime(9)
> > 	BPF_T_NANOTIME		nanotime(9)
> > 	BPF_T_BINTIME		bintime(9)
> > 	BPF_T_MICROTIME_FAST	getmicrotime(9)
> > 	BPF_T_NANOTIME_FAST	getnanotime(9)
> > 	BPF_T_BINTIME_FAST	getbintime(9)
> > 	BPF_T_NONE		ignore time stamps
> >
> > (Note: Additionally, there is an experimental machanism to tag
> > packets with timestamps in struct bintime format via mbuf_tags(9)
> > from lower layer, e.g., device driver.  However, I didn't test it
> > because I wasn't sure whether this is the right thing to do.)
> >
> > While I was here, I moved the bogus SIZEOF_BPF_HDR macro into
> > bpf.c and tried to make it little bit more correct.  For example,
> > the 32-bit shim should be able to handle alignment more properly
> > for non-Ethernet DLTs.  I tried my best not to break ABI/API
> > (especially for 32-bit platforms) and relevant places are all
> > marked with BURN_BRIDGES.
>
> Putting COMPAT_FREEBSD32 under BURN_BRIDGES feels somewhat strange.

If we burn bridges, we don't need to convert 64-bit bh_tstamp to 
32-bit version because the sizeof(struct bpf_xhdr) is fixed for both 
32-bit and 64-bit platforms.  The only difference is alignment and 
padding because of the evil u_short bh_hdrlen.  So, it was necessary 
evil if we don't want to break ABI between old 32-bit appliacations 
and bridge-burned 64-bit kernel.

No, we are not going to burn bridges any time soon unless libpcap 
adopt the new structure.  Shrug...

Jung-uk Kim


More information about the freebsd-net mailing list