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->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->sc_if);
> > if_alloc_sadl(&sc->sc_if);
> > #if NBPFILTER > 0
> > - bpfattach(&sc->sc_bpf, &sc->sc_if, DLT_PPP, PPP_HDRLEN);
> > + bpfattach(&ifp->if_bpf, ifp, DLT_PPP, PPP_HDRLEN);
> > #endif
> > NET_LOCK();
> > LIST_INSERT_HEAD(&ppp_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 */
> > enum NPmode 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