aboutsummaryrefslogtreecommitdiff
path: root/sys/netgraph/ng_pipe.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netgraph/ng_pipe.c')
-rw-r--r--sys/netgraph/ng_pipe.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/netgraph/ng_pipe.c b/sys/netgraph/ng_pipe.c
index 7afaf24f5914..d368c142b1ab 100644
--- a/sys/netgraph/ng_pipe.c
+++ b/sys/netgraph/ng_pipe.c
@@ -44,6 +44,7 @@
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <sys/mbuf.h>
+#include <sys/prng.h>
#include <sys/time.h>
#include <vm/uma.h>
@@ -771,7 +772,7 @@ pipe_dequeue(struct hookinfo *hinfo, struct timeval *now) {
* the original packet...
*/
if (hinfo->cfg.duplicate &&
- random() % 100 <= hinfo->cfg.duplicate) {
+ prng32_bounded(100) <= hinfo->cfg.duplicate) {
ngp_h = uma_zalloc(ngp_zone, M_NOWAIT);
KASSERT(ngp_h != NULL, ("ngp_h zalloc failed (3)"));
m = m_dup(m, M_NOWAIT);
@@ -814,7 +815,7 @@ pipe_dequeue(struct hookinfo *hinfo, struct timeval *now) {
/* Randomly discard the frame, according to BER setting */
if (hinfo->cfg.ber) {
oldrand = rand;
- rand = random();
+ rand = prng32_bounded(1U << 31);
if (((oldrand ^ rand) << 17) >=
hinfo->ber_p[priv->overhead + m->m_pkthdr.len]) {
hinfo->stats.out_disc_frames++;