pppac(4) related `ifnet' has `IFXF_CLONED' set. I guess this was done
because we don't collect entropy from pseudo interfaces:

---- cut begin ----
void
if_input_process(struct ifnet *ifp, struct mbuf_list *ml)
{
        struct mbuf *m;

        if (ml_empty(ml))
                return;

        if (!ISSET(ifp->if_xflags, IFXF_CLONED))
                enqueue_randomness(ml_len(ml) ^ (uintptr_t)MBUF_LIST_FIRST(ml));

        /* skip */
}
---- cut end ----

Should we do the same for pppx(4)?

Index: sys/net/if_pppx.c
===================================================================
RCS file: /cvs/src/sys/net/if_pppx.c,v
retrieving revision 1.91
diff -u -p -r1.91 if_pppx.c
--- sys/net/if_pppx.c   6 Jul 2020 20:37:51 -0000       1.91
+++ sys/net/if_pppx.c   7 Jul 2020 11:37:04 -0000
@@ -705,6 +705,7 @@ pppx_add_session(struct pppx_dev *pxd, s
        snprintf(ifp->if_xname, sizeof(ifp->if_xname), "%s%d", "pppx", unit);
        ifp->if_mtu = req->pr_peer_mru; /* XXX */
        ifp->if_flags = IFF_POINTOPOINT | IFF_MULTICAST | IFF_UP;
+       ifp->if_xflags = IFXF_CLONED;
        ifp->if_start = pppx_if_start;
        ifp->if_output = pppx_if_output;
        ifp->if_ioctl = pppx_if_ioctl;

Reply via email to