91#include <sys/kernel.h>
92#include <sys/random.h>
93#include <sys/socket.h>
94#include <sys/libkern.h>
99#include <netinet/in.h>
100#include <netinet/ip6.h>
104#define INT32_MAX 0x7fffffffU
135 { 2, 3, 59652323, 0 },
149static u_int32_t
pmod(u_int32_t, u_int32_t, u_int32_t);
158pmod(u_int32_t gen, u_int32_t expo, u_int32_t mod)
196 p->
ru_b = (arc4random() & (~0U >> (32 - p->
ru_bits))) | 1;
198 (arc4random() & (~0U >> (32 - p->
ru_bits))) & (~1U), p->
ru_m);
199 while (p->
ru_b % 3 == 0)
202 j = arc4random() % p->
ru_n;
210 for (i = 0; p->
pfacts[i] > 0; i++)
211 if (j % p->
pfacts[i] == 0)
217 j = (j + 1) % p->
ru_n;
236 n = arc4random() & 0x3;
240 for (i = 0; i <= n; i++) {
269 if (__predict_false(!is_random_seeded()))
u_int32_t ip6_randomflowlabel(void)
static void initid(struct randomtab *)
static struct randomtab randomtab_32
static struct randomtab randomtab_20
u_int32_t ip6_randomid(void)
static u_int32_t randomid(struct randomtab *)
static u_int32_t pmod(u_int32_t, u_int32_t, u_int32_t)
const u_int32_t pfacts[4]