give interfaces an if_bpf_mtap handler.
authordlg <dlg@openbsd.org>
Sat, 20 Feb 2021 04:35:41 +0000 (04:35 +0000)
committerdlg <dlg@openbsd.org>
Sat, 20 Feb 2021 04:35:41 +0000 (04:35 +0000)
the network stack is now responsible for calling bpf for packets
that the interface receives, and we so far got away with using
bpf_mtap_ether for everything. this doesn't work if layer 3 input
goes through the same functions, so letting drivers specify the
appropriate bpf mtap function means they will be able to cope.

sys/net/if_var.h

index 2de907c..26c0828 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_var.h,v 1.112 2020/07/29 12:09:31 mvs Exp $        */
+/*     $OpenBSD: if_var.h,v 1.113 2021/02/20 04:35:41 dlg Exp $        */
 /*     $NetBSD: if.h,v 1.23 1996/05/07 02:40:27 thorpej Exp $  */
 
 /*
@@ -161,6 +161,7 @@ struct ifnet {                              /* and the entries */
 
        /* procedure handles */
        void    (*if_input)(struct ifnet *, struct mbuf *);
+       int     (*if_bpf_mtap)(caddr_t, const struct mbuf *, u_int);
        int     (*if_output)(struct ifnet *, struct mbuf *, struct sockaddr *,
                     struct rtentry *); /* output routine (enqueue) */
                                        /* link level output function */