Re: [PATCH] ppp(4): use common bpf filter hook

2020-05-19 Thread Vitaliy Makkoveev
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

2020-05-19 Thread Claudio Jeker
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

2020-05-04 Thread Sergey Ryazanov
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