Re: [PATCH] ppp(4): use common bpf filter hook
I am OK with this diff. Also all pseudo interfaces except switch(4) do the same. On Mon, May 04, 2020 at 10:02:53PM +0300, Sergey Ryazanov wrote: > Use bpf filter hook from the common interface structure. This simplifies > the code by unifying it and prepare ppp(4) for pipex(4) support. > > Ok? > > --- > sys/net/if_ppp.c| 16 > sys/net/if_pppvar.h | 1 - > 2 files changed, 8 insertions(+), 9 deletions(-) > > diff --git sys/net/if_ppp.c sys/net/if_ppp.c > index 192ec7c91e0..4cba9a8778c 100644 > --- sys/net/if_ppp.c > +++ sys/net/if_ppp.c > @@ -204,9 +204,11 @@ int > ppp_clone_create(struct if_clone *ifc, int unit) > { > struct ppp_softc *sc; > + struct ifnet *ifp; > > sc = malloc(sizeof(*sc), M_DEVBUF, M_WAITOK|M_ZERO); > sc->sc_unit = unit; > + ifp = >sc_if; > snprintf(sc->sc_if.if_xname, sizeof sc->sc_if.if_xname, "%s%d", > ifc->ifc_name, unit); > sc->sc_if.if_softc = sc; > @@ -224,7 +226,7 @@ ppp_clone_create(struct if_clone *ifc, int unit) > if_attach(>sc_if); > if_alloc_sadl(>sc_if); > #if NBPFILTER > 0 > - bpfattach(>sc_bpf, >sc_if, DLT_PPP, PPP_HDRLEN); > + bpfattach(>if_bpf, ifp, DLT_PPP, PPP_HDRLEN); > #endif > NET_LOCK(); > LIST_INSERT_HEAD(_softc_list, sc, sc_list); > @@ -754,11 +756,9 @@ pppoutput(struct ifnet *ifp, struct mbuf *m0, struct > sockaddr *dst, > } > > #if NBPFILTER > 0 > - /* > - * See if bpf wants to look at the packet. > - */ > - if (sc->sc_bpf) > - bpf_mtap(sc->sc_bpf, m0, BPF_DIRECTION_OUT); > + /* See if bpf wants to look at the packet. */ > + if (ifp->if_bpf) > + bpf_mtap(ifp->if_bpf, m0, BPF_DIRECTION_OUT); > #endif > > /* > @@ -1369,8 +1369,8 @@ ppp_inproc(struct ppp_softc *sc, struct mbuf *m) > > #if NBPFILTER > 0 > /* See if bpf wants to look at the packet. */ > - if (sc->sc_bpf) > - bpf_mtap(sc->sc_bpf, m, BPF_DIRECTION_IN); > + if (ifp->if_bpf) > + bpf_mtap(ifp->if_bpf, m, BPF_DIRECTION_IN); > #endif > > rv = 0; > diff --git sys/net/if_pppvar.h sys/net/if_pppvar.h > index 87f7d1798bb..9dc774a0515 100644 > --- sys/net/if_pppvar.h > +++ sys/net/if_pppvar.h > @@ -113,7 +113,6 @@ struct ppp_softc { > struct mbuf *sc_togo; /* output packet ready to go */ > struct mbuf_list sc_npqueue; /* output packets not to be sent yet */ > struct pppstat sc_stats; /* count of bytes/pkts sent/rcvd */ > - caddr_t sc_bpf; /* hook for BPF */ > enumNPmode sc_npmode[NUM_NP]; /* what to do with each NP */ > struct compressor *sc_xcomp; /* transmit compressor */ > void*sc_xc_state; /* transmit compressor state */ > -- > 2.26.0 >
Re: [PATCH] ppp(4): use common bpf filter hook
On Tue, May 19, 2020 at 12:19:12PM +0300, Vitaliy Makkoveev wrote: > I am OK with this diff. Also all pseudo interfaces except switch(4) do > the same. Agreed. There is no need to be special here. This is OK claudio and I will commit it later unless someone else wants to jump in first. > On Mon, May 04, 2020 at 10:02:53PM +0300, Sergey Ryazanov wrote: > > Use bpf filter hook from the common interface structure. This simplifies > > the code by unifying it and prepare ppp(4) for pipex(4) support. > > > > Ok? > > > > --- > > sys/net/if_ppp.c| 16 > > sys/net/if_pppvar.h | 1 - > > 2 files changed, 8 insertions(+), 9 deletions(-) > > > > diff --git sys/net/if_ppp.c sys/net/if_ppp.c > > index 192ec7c91e0..4cba9a8778c 100644 > > --- sys/net/if_ppp.c > > +++ sys/net/if_ppp.c > > @@ -204,9 +204,11 @@ int > > ppp_clone_create(struct if_clone *ifc, int unit) > > { > > struct ppp_softc *sc; > > + struct ifnet *ifp; > > > > sc = malloc(sizeof(*sc), M_DEVBUF, M_WAITOK|M_ZERO); > > sc->sc_unit = unit; > > + ifp = >sc_if; > > snprintf(sc->sc_if.if_xname, sizeof sc->sc_if.if_xname, "%s%d", > > ifc->ifc_name, unit); > > sc->sc_if.if_softc = sc; > > @@ -224,7 +226,7 @@ ppp_clone_create(struct if_clone *ifc, int unit) > > if_attach(>sc_if); > > if_alloc_sadl(>sc_if); > > #if NBPFILTER > 0 > > - bpfattach(>sc_bpf, >sc_if, DLT_PPP, PPP_HDRLEN); > > + bpfattach(>if_bpf, ifp, DLT_PPP, PPP_HDRLEN); > > #endif > > NET_LOCK(); > > LIST_INSERT_HEAD(_softc_list, sc, sc_list); > > @@ -754,11 +756,9 @@ pppoutput(struct ifnet *ifp, struct mbuf *m0, struct > > sockaddr *dst, > > } > > > > #if NBPFILTER > 0 > > - /* > > -* See if bpf wants to look at the packet. > > -*/ > > - if (sc->sc_bpf) > > - bpf_mtap(sc->sc_bpf, m0, BPF_DIRECTION_OUT); > > + /* See if bpf wants to look at the packet. */ > > + if (ifp->if_bpf) > > + bpf_mtap(ifp->if_bpf, m0, BPF_DIRECTION_OUT); > > #endif > > > > /* > > @@ -1369,8 +1369,8 @@ ppp_inproc(struct ppp_softc *sc, struct mbuf *m) > > > > #if NBPFILTER > 0 > > /* See if bpf wants to look at the packet. */ > > - if (sc->sc_bpf) > > - bpf_mtap(sc->sc_bpf, m, BPF_DIRECTION_IN); > > + if (ifp->if_bpf) > > + bpf_mtap(ifp->if_bpf, m, BPF_DIRECTION_IN); > > #endif > > > > rv = 0; > > diff --git sys/net/if_pppvar.h sys/net/if_pppvar.h > > index 87f7d1798bb..9dc774a0515 100644 > > --- sys/net/if_pppvar.h > > +++ sys/net/if_pppvar.h > > @@ -113,7 +113,6 @@ struct ppp_softc { > > struct mbuf *sc_togo; /* output packet ready to go */ > > struct mbuf_list sc_npqueue; /* output packets not to be sent yet */ > > struct pppstat sc_stats; /* count of bytes/pkts sent/rcvd */ > > - caddr_t sc_bpf; /* hook for BPF */ > > enumNPmode sc_npmode[NUM_NP]; /* what to do with each NP */ > > struct compressor *sc_xcomp; /* transmit compressor */ > > void*sc_xc_state; /* transmit compressor state */ > > -- > > 2.26.0 > > > -- :wq Claudio
[PATCH] ppp(4): use common bpf filter hook
Use bpf filter hook from the common interface structure. This simplifies the code by unifying it and prepare ppp(4) for pipex(4) support. Ok? --- sys/net/if_ppp.c| 16 sys/net/if_pppvar.h | 1 - 2 files changed, 8 insertions(+), 9 deletions(-) diff --git sys/net/if_ppp.c sys/net/if_ppp.c index 192ec7c91e0..4cba9a8778c 100644 --- sys/net/if_ppp.c +++ sys/net/if_ppp.c @@ -204,9 +204,11 @@ int ppp_clone_create(struct if_clone *ifc, int unit) { struct ppp_softc *sc; + struct ifnet *ifp; sc = malloc(sizeof(*sc), M_DEVBUF, M_WAITOK|M_ZERO); sc->sc_unit = unit; + ifp = >sc_if; snprintf(sc->sc_if.if_xname, sizeof sc->sc_if.if_xname, "%s%d", ifc->ifc_name, unit); sc->sc_if.if_softc = sc; @@ -224,7 +226,7 @@ ppp_clone_create(struct if_clone *ifc, int unit) if_attach(>sc_if); if_alloc_sadl(>sc_if); #if NBPFILTER > 0 - bpfattach(>sc_bpf, >sc_if, DLT_PPP, PPP_HDRLEN); + bpfattach(>if_bpf, ifp, DLT_PPP, PPP_HDRLEN); #endif NET_LOCK(); LIST_INSERT_HEAD(_softc_list, sc, sc_list); @@ -754,11 +756,9 @@ pppoutput(struct ifnet *ifp, struct mbuf *m0, struct sockaddr *dst, } #if NBPFILTER > 0 - /* -* See if bpf wants to look at the packet. -*/ - if (sc->sc_bpf) - bpf_mtap(sc->sc_bpf, m0, BPF_DIRECTION_OUT); + /* See if bpf wants to look at the packet. */ + if (ifp->if_bpf) + bpf_mtap(ifp->if_bpf, m0, BPF_DIRECTION_OUT); #endif /* @@ -1369,8 +1369,8 @@ ppp_inproc(struct ppp_softc *sc, struct mbuf *m) #if NBPFILTER > 0 /* See if bpf wants to look at the packet. */ - if (sc->sc_bpf) - bpf_mtap(sc->sc_bpf, m, BPF_DIRECTION_IN); + if (ifp->if_bpf) + bpf_mtap(ifp->if_bpf, m, BPF_DIRECTION_IN); #endif rv = 0; diff --git sys/net/if_pppvar.h sys/net/if_pppvar.h index 87f7d1798bb..9dc774a0515 100644 --- sys/net/if_pppvar.h +++ sys/net/if_pppvar.h @@ -113,7 +113,6 @@ struct ppp_softc { struct mbuf *sc_togo; /* output packet ready to go */ struct mbuf_list sc_npqueue; /* output packets not to be sent yet */ struct pppstat sc_stats; /* count of bytes/pkts sent/rcvd */ - caddr_t sc_bpf; /* hook for BPF */ enumNPmode sc_npmode[NUM_NP]; /* what to do with each NP */ struct compressor *sc_xcomp; /* transmit compressor */ void*sc_xc_state; /* transmit compressor state */ -- 2.26.0