diff options
| -rw-r--r-- | sys/alpha/alpha/machdep.c | 16 | ||||
| -rw-r--r-- | sys/alpha/alpha/mem.c | 78 | ||||
| -rw-r--r-- | sys/dev/syscons/syscons.c | 2 | ||||
| -rw-r--r-- | sys/i386/i386/machdep.c | 2 | ||||
| -rw-r--r-- | sys/i386/i386/mem.c | 2 | ||||
| -rw-r--r-- | sys/i386/include/random.h | 90 | ||||
| -rw-r--r-- | sys/i386/isa/random_machdep.c | 378 | ||||
| -rw-r--r-- | sys/i4b/layer2/i4b_tei.c | 5 | ||||
| -rw-r--r-- | sys/i4b/layer4/i4b_l4mgmt.c | 5 | ||||
| -rw-r--r-- | sys/kern/kern_random.c | 1 | ||||
| -rw-r--r-- | sys/net/if_spppsubr.c | 2 | ||||
| -rw-r--r-- | sys/netipx/ipx_input.c | 3 | ||||
| -rw-r--r-- | usr.sbin/rndcontrol/rndcontrol.c | 2 |
13 files changed, 89 insertions, 497 deletions
diff --git a/sys/alpha/alpha/machdep.c b/sys/alpha/alpha/machdep.c index 5251471bcba1..9b7857c28c14 100644 --- a/sys/alpha/alpha/machdep.c +++ b/sys/alpha/alpha/machdep.c @@ -112,6 +112,7 @@ #include <sys/sysctl.h> #include <sys/uio.h> #include <sys/linker.h> +#include <sys/random.h> #include <net/netisr.h> #include <vm/vm.h> #include <vm/vm_kern.h> @@ -1001,6 +1002,11 @@ alpha_init(pfn, ptb, bim, bip, biv) (struct trapframe *)proc0paddr->u_pcb.pcb_hw.apcb_ksp; /* + * Initialise entropy pool. + */ + rand_initialize(); + + /* * Look at arguments passed to us and compute boothowto. */ @@ -2115,13 +2121,3 @@ alpha_fpstate_switch(struct proc *p) p->p_md.md_flags |= MDP_FPUSED; } - -/* - * dummy version of read_random() until the random driver is ported. - */ -int read_random __P((void)); -int -read_random(void) -{ - return (0); -} diff --git a/sys/alpha/alpha/mem.c b/sys/alpha/alpha/mem.c index 223c2b0ee8de..322fb66fb86b 100644 --- a/sys/alpha/alpha/mem.c +++ b/sys/alpha/alpha/mem.c @@ -55,9 +55,10 @@ #include <sys/malloc.h> #include <sys/proc.h> #include <sys/msgbuf.h> +#include <sys/random.h> +#include <sys/signalvar.h> #include <machine/frame.h> -/* #include <machine/random.h>*/ #include <machine/psl.h> #ifdef PERFMON #include <machine/perfmon.h> @@ -94,7 +95,19 @@ static struct cdevsw mem_cdevsw = { /* bmaj */ -1 }; +/* + XXX the below should be used. However there is too much "16" + hardcodeing in kern_random.c right now. -- obrien +#if NHWI > 0 +#define ICU_LEN (NHWI) +#else +#define ICU_LEN (NSWI) +#endif +*/ +#define ICU_LEN 16 +static struct random_softc random_softc[ICU_LEN]; +static int random_ioctl __P((dev_t, u_long, caddr_t, int, struct proc *)); static int mmclose(dev, flags, fmt, p) @@ -151,6 +164,10 @@ mmrw(dev, uio, flags) register int c; register struct iovec *iov; int error = 0, rw; + u_int poolsize; + caddr_t buf; + + buf = NULL; while (uio->uio_resid > 0 && !error) { iov = uio->uio_iov; @@ -215,6 +232,51 @@ kmemphys: uio->uio_resid = 0; return (0); +/* minor device 3 (/dev/random) is source of filth on read, rathole on write */ + case 3: + if (uio->uio_rw == UIO_WRITE) { + uio->uio_resid = 0; + return (0); + } + if (buf == NULL) + buf = (caddr_t) + malloc(PAGE_SIZE, M_TEMP, M_WAITOK); + c = min(iov->iov_len, PAGE_SIZE); + poolsize = read_random(buf, c); + if (poolsize == 0) { + if (buf) + free(buf, M_TEMP); + return (0); + } + c = min(c, poolsize); + error = uiomove(buf, c, uio); + continue; + +/* minor device 4 (/dev/urandom) is source of muck on read, rathole on write */ + case 4: + if (uio->uio_rw == UIO_WRITE) { + c = iov->iov_len; + break; + } + if (CURSIG(curproc) != 0) { + /* + * Use tsleep() to get the error code right. + * It should return immediately. + */ + error = tsleep(&random_softc[0], + PZERO | PCATCH, "urand", 1); + if (error != 0 && error != EWOULDBLOCK) + continue; + } + if (buf == NULL) + buf = (caddr_t) + malloc(PAGE_SIZE, M_TEMP, M_WAITOK); + c = min(iov->iov_len, PAGE_SIZE); + poolsize = read_random_unlimited(buf, c); + c = min(c, poolsize); + error = uiomove(buf, c, uio); + continue; + /* minor device 12 (/dev/zero) is source of nulls on read, rathole on write */ case 12: if (uio->uio_rw == UIO_WRITE) { @@ -287,7 +349,7 @@ mmioctl(dev, cmd, cmdarg, flags, p) switch(minor(dev)) { case 3: case 4: - break; + return random_ioctl(dev, cmd, cmdarg, flags, p); #ifdef PERFMON case 32: @@ -393,5 +455,15 @@ mem_drvinit(void *unused) #endif /* PERFMON */ } -SYSINIT(memdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,mem_drvinit,NULL) +static int +random_ioctl(dev, cmd, data, flags, p) + dev_t dev; + u_long cmd; + caddr_t data; + int flags; + struct proc *p; +{ + return (0); +} +SYSINIT(memdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,mem_drvinit,NULL) diff --git a/sys/dev/syscons/syscons.c b/sys/dev/syscons/syscons.c index 06c77cf6a175..0d60d321e8dc 100644 --- a/sys/dev/syscons/syscons.c +++ b/sys/dev/syscons/syscons.c @@ -47,6 +47,7 @@ #include <sys/kernel.h> #include <sys/malloc.h> #include <sys/cons.h> +#include <sys/random.h> #include <machine/clock.h> #include <machine/console.h> @@ -55,7 +56,6 @@ #ifdef __i386__ #include <machine/apm_bios.h> #include <machine/frame.h> -#include <machine/random.h> #endif #include <dev/kbd/kbdreg.h> diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c index 8ab5347b8c1f..c06cf5a8b474 100644 --- a/sys/i386/i386/machdep.c +++ b/sys/i386/i386/machdep.c @@ -121,7 +121,7 @@ #include <i386/isa/intr_machdep.h> #include <isa/rtc.h> #include <machine/vm86.h> -#include <machine/random.h> +#include <sys/random.h> #include <sys/ptrace.h> #include <machine/sigframe.h> diff --git a/sys/i386/i386/mem.c b/sys/i386/i386/mem.c index bb96e18c1156..abe9fa3f73f9 100644 --- a/sys/i386/i386/mem.c +++ b/sys/i386/i386/mem.c @@ -56,10 +56,10 @@ #include <sys/malloc.h> #include <sys/memrange.h> #include <sys/proc.h> +#include <sys/random.h> #include <sys/signalvar.h> #include <machine/frame.h> -#include <machine/random.h> #include <machine/psl.h> #include <machine/specialreg.h> #include <i386/isa/intr_machdep.h> diff --git a/sys/i386/include/random.h b/sys/i386/include/random.h deleted file mode 100644 index 5a3cbe247f23..000000000000 --- a/sys/i386/include/random.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * random.h -- A strong random number generator - * - * $FreeBSD$ - * - * Version 0.95, last modified 18-Oct-95 - * - * Copyright Theodore Ts'o, 1994, 1995. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, and the entire permission notice in its entirety, - * including the disclaimer of warranties. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * ALTERNATIVELY, this product may be distributed under the terms of - * the GNU Public License, in which case the provisions of the GPL are - * required INSTEAD OF the above restrictions. (This clause is - * necessary due to a potential bad interaction between the GPL and - * the restrictions contained in a BSD-style copyright.) - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -/* - * Many kernel routines will have a use for good random numbers, - * for example, for truely random TCP sequence numbers, which prevent - * certain forms of TCP spoofing attacks. - * - */ - -#ifndef _MACHINE_RANDOM_H_ -#define _MACHINE_RANDOM_H_ - -#include <sys/ioccom.h> - -#define MEM_SETIRQ _IOW('r', 1, u_int16_t) /* set interrupt */ -#define MEM_CLEARIRQ _IOW('r', 2, u_int16_t) /* clear interrupt */ -#define MEM_RETURNIRQ _IOR('r', 3, u_int16_t) /* return interrupt */ - -#ifdef _KERNEL - -/* Type of the cookie passed to add_interrupt_randomness. */ - -struct random_softc { - inthand2_t *sc_handler; - void *sc_arg; - int sc_intr; -}; - -/* Exported functions */ - -void rand_initialize(void); -void add_keyboard_randomness(u_char scancode); -inthand2_t add_interrupt_randomness; -#ifdef notused -void add_blkdev_randomness(int major); -#endif - -#ifdef notused -void get_random_bytes(void *buf, u_int nbytes); -#endif -u_int read_random(void *buf, u_int size); -u_int read_random_unlimited(void *buf, u_int size); -#ifdef notused -u_int write_random(const char *buf, u_int nbytes); -#endif -int random_poll(dev_t dev, int events, struct proc *p); - -#endif /* _KERNEL */ - -#endif /* !_MACHINE_RANDOM_H_ */ diff --git a/sys/i386/isa/random_machdep.c b/sys/i386/isa/random_machdep.c deleted file mode 100644 index ef63742579e0..000000000000 --- a/sys/i386/isa/random_machdep.c +++ /dev/null @@ -1,378 +0,0 @@ -/* - * random_machdep.c -- A strong random number generator - * - * $FreeBSD$ - * - * Version 0.95, last modified 18-Oct-95 - * - * Copyright Theodore Ts'o, 1994, 1995. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, and the entire permission notice in its entirety, - * including the disclaimer of warranties. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * ALTERNATIVELY, this product may be distributed under the terms of - * the GNU Public License, in which case the provisions of the GPL are - * required INSTEAD OF the above restrictions. (This clause is - * necessary due to a potential bad interaction between the GPL and - * the restrictions contained in a BSD-style copyright.) - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/select.h> -#include <sys/poll.h> -#include <sys/md5.h> - -#include <machine/random.h> - -#include <i386/isa/icu.h> - -#define MAX_BLKDEV 4 - -/* - * The pool is stirred with a primitive polynomial of degree 128 - * over GF(2), namely x^128 + x^99 + x^59 + x^31 + x^9 + x^7 + 1. - * For a pool of size 64, try x^64+x^62+x^38+x^10+x^6+x+1. - */ -#define POOLWORDS 128 /* Power of 2 - note that this is 32-bit words */ -#define POOLBITS (POOLWORDS*32) - -#if POOLWORDS == 128 -#define TAP1 99 /* The polynomial taps */ -#define TAP2 59 -#define TAP3 31 -#define TAP4 9 -#define TAP5 7 -#elif POOLWORDS == 64 -#define TAP1 62 /* The polynomial taps */ -#define TAP2 38 -#define TAP3 10 -#define TAP4 6 -#define TAP5 1 -#else -#error No primitive polynomial available for chosen POOLWORDS -#endif - -#define WRITEBUFFER 512 /* size in bytes */ - -/* There is actually only one of these, globally. */ -struct random_bucket { - u_int add_ptr; - u_int entropy_count; - int input_rotate; - u_int32_t *pool; - struct selinfo rsel; -}; - -/* There is one of these per entropy source */ -struct timer_rand_state { - u_long last_time; - int last_delta; - int nbits; -}; - -static struct random_bucket random_state; -static u_int32_t random_pool[POOLWORDS]; -static struct timer_rand_state keyboard_timer_state; -static struct timer_rand_state extract_timer_state; -static struct timer_rand_state irq_timer_state[ICU_LEN]; -#ifdef notyet -static struct timer_rand_state blkdev_timer_state[MAX_BLKDEV]; -#endif -static struct wait_queue *random_wait; - -#ifndef MIN -#define MIN(a,b) (((a) < (b)) ? (a) : (b)) -#endif - -void -rand_initialize(void) -{ - random_state.add_ptr = 0; - random_state.entropy_count = 0; - random_state.pool = random_pool; - random_wait = NULL; - random_state.rsel.si_flags = 0; - random_state.rsel.si_pid = 0; -} - -/* - * This function adds an int into the entropy "pool". It does not - * update the entropy estimate. The caller must do this if appropriate. - * - * The pool is stirred with a primitive polynomial of degree 128 - * over GF(2), namely x^128 + x^99 + x^59 + x^31 + x^9 + x^7 + 1. - * For a pool of size 64, try x^64+x^62+x^38+x^10+x^6+x+1. - * - * We rotate the input word by a changing number of bits, to help - * assure that all bits in the entropy get toggled. Otherwise, if we - * consistently feed the entropy pool small numbers (like ticks and - * scancodes, for example), the upper bits of the entropy pool don't - * get affected. --- TYT, 10/11/95 - */ -static __inline void -add_entropy_word(struct random_bucket *r, const u_int32_t input) -{ - u_int i; - u_int32_t w; - - w = (input << r->input_rotate) | (input >> (32 - r->input_rotate)); - i = r->add_ptr = (r->add_ptr - 1) & (POOLWORDS-1); - if (i) - r->input_rotate = (r->input_rotate + 7) & 31; - else - /* - * At the beginning of the pool, add an extra 7 bits - * rotation, so that successive passes spread the - * input bits across the pool evenly. - */ - r->input_rotate = (r->input_rotate + 14) & 31; - - /* XOR in the various taps */ - w ^= r->pool[(i+TAP1)&(POOLWORDS-1)]; - w ^= r->pool[(i+TAP2)&(POOLWORDS-1)]; - w ^= r->pool[(i+TAP3)&(POOLWORDS-1)]; - w ^= r->pool[(i+TAP4)&(POOLWORDS-1)]; - w ^= r->pool[(i+TAP5)&(POOLWORDS-1)]; - w ^= r->pool[i]; - /* Rotate w left 1 bit (stolen from SHA) and store */ - r->pool[i] = (w << 1) | (w >> 31); -} - -/* - * This function adds entropy to the entropy "pool" by using timing - * delays. It uses the timer_rand_state structure to make an estimate - * of how any bits of entropy this call has added to the pool. - * - * The number "num" is also added to the pool - it should somehow describe - * the type of event which just happened. This is currently 0-255 for - * keyboard scan codes, and 256 upwards for interrupts. - * On the i386, this is assumed to be at most 16 bits, and the high bits - * are used for a high-resolution timer. - */ -static void -add_timer_randomness(struct random_bucket *r, struct timer_rand_state *state, - u_int num) -{ - int delta, delta2; - u_int nbits; - u_int32_t time; - - num ^= timecounter->tc_get_timecount(timecounter) << 16; - r->entropy_count += 2; - - time = ticks; - - add_entropy_word(r, (u_int32_t) num); - add_entropy_word(r, time); - - /* - * Calculate number of bits of randomness we probably - * added. We take into account the first and second order - * deltas in order to make our estimate. - */ - delta = time - state->last_time; - state->last_time = time; - - delta2 = delta - state->last_delta; - state->last_delta = delta; - - if (delta < 0) delta = -delta; - if (delta2 < 0) delta2 = -delta2; - delta = MIN(delta, delta2) >> 1; - for (nbits = 0; delta; nbits++) - delta >>= 1; - - r->entropy_count += nbits; - - /* Prevent overflow */ - if (r->entropy_count > POOLBITS) - r->entropy_count = POOLBITS; - - if (r->entropy_count >= 8) - selwakeup(&random_state.rsel); -} - -void -add_keyboard_randomness(u_char scancode) -{ - add_timer_randomness(&random_state, &keyboard_timer_state, scancode); -} - -void -add_interrupt_randomness(void *vsc) -{ - int intr; - struct random_softc *sc = vsc; - - (sc->sc_handler)(sc->sc_arg); - intr = sc->sc_intr; - add_timer_randomness(&random_state, &irq_timer_state[intr], intr); -} - -#ifdef notused -void -add_blkdev_randomness(int major) -{ - if (major >= MAX_BLKDEV) - return; - - add_timer_randomness(&random_state, &blkdev_timer_state[major], - 0x200+major); -} -#endif /* notused */ - -#if POOLWORDS % 16 -#error extract_entropy() assumes that POOLWORDS is a multiple of 16 words. -#endif -/* - * This function extracts randomness from the "entropy pool", and - * returns it in a buffer. This function computes how many remaining - * bits of entropy are left in the pool, but it does not restrict the - * number of bytes that are actually obtained. - */ -static __inline int -extract_entropy(struct random_bucket *r, char *buf, int nbytes) -{ - int ret, i; - u_int32_t tmp[4]; - - add_timer_randomness(r, &extract_timer_state, nbytes); - - /* Redundant, but just in case... */ - if (r->entropy_count > POOLBITS) - r->entropy_count = POOLBITS; - /* Why is this here? Left in from Ted Ts'o. Perhaps to limit time. */ - if (nbytes > 32768) - nbytes = 32768; - - ret = nbytes; - if (r->entropy_count / 8 >= nbytes) - r->entropy_count -= nbytes*8; - else - r->entropy_count = 0; - - while (nbytes) { - /* Hash the pool to get the output */ - tmp[0] = 0x67452301; - tmp[1] = 0xefcdab89; - tmp[2] = 0x98badcfe; - tmp[3] = 0x10325476; - for (i = 0; i < POOLWORDS; i += 16) - MD5Transform(tmp, (char *)(r->pool+i)); - /* Modify pool so next hash will produce different results */ - add_entropy_word(r, tmp[0]); - add_entropy_word(r, tmp[1]); - add_entropy_word(r, tmp[2]); - add_entropy_word(r, tmp[3]); - /* - * Run the MD5 Transform one more time, since we want - * to add at least minimal obscuring of the inputs to - * add_entropy_word(). --- TYT - */ - MD5Transform(tmp, (char *)(r->pool)); - - /* Copy data to destination buffer */ - i = MIN(nbytes, 16); - bcopy(tmp, buf, i); - nbytes -= i; - buf += i; - } - - /* Wipe data from memory */ - bzero(tmp, sizeof(tmp)); - - return ret; -} - -#ifdef notused /* XXX NOT the exported kernel interface */ -/* - * This function is the exported kernel interface. It returns some - * number of good random numbers, suitable for seeding TCP sequence - * numbers, etc. - */ -void -get_random_bytes(void *buf, u_int nbytes) -{ - extract_entropy(&random_state, (char *) buf, nbytes); -} -#endif /* notused */ - -u_int -read_random(void *buf, u_int nbytes) -{ - if ((nbytes * 8) > random_state.entropy_count) - nbytes = random_state.entropy_count / 8; - - return extract_entropy(&random_state, (char *)buf, nbytes); -} - -u_int -read_random_unlimited(void *buf, u_int nbytes) -{ - return extract_entropy(&random_state, (char *)buf, nbytes); -} - -#ifdef notused -u_int -write_random(const char *buf, u_int nbytes) -{ - u_int i; - u_int32_t word, *p; - - for (i = nbytes, p = (u_int32_t *)buf; - i >= sizeof(u_int32_t); - i-= sizeof(u_int32_t), p++) - add_entropy_word(&random_state, *p); - if (i) { - word = 0; - bcopy(p, &word, i); - add_entropy_word(&random_state, word); - } - return nbytes; -} -#endif /* notused */ - -int -random_poll(dev_t dev, int events, struct proc *p) -{ - int s; - int revents = 0; - - s = splhigh(); - if (events & (POLLIN | POLLRDNORM)) { - if (random_state.entropy_count >= 8) - revents |= events & (POLLIN | POLLRDNORM); - else - selrecord(p, &random_state.rsel); - } - splx(s); - if (events & (POLLOUT | POLLWRNORM)) - revents |= events & (POLLOUT | POLLWRNORM); /* heh */ - - return (revents); -} - diff --git a/sys/i4b/layer2/i4b_tei.c b/sys/i4b/layer2/i4b_tei.c index fd813c881cb5..98f9b00a9a4d 100644 --- a/sys/i4b/layer2/i4b_tei.c +++ b/sys/i4b/layer2/i4b_tei.c @@ -46,6 +46,7 @@ #if defined(__FreeBSD__) #include <sys/ioccom.h> +#include <sys/random.h> #else #include <sys/ioctl.h> #endif @@ -65,10 +66,6 @@ #include <i4b/i4b_ioctl.h> #endif -#if defined(__FreeBSD__) -#include <machine/random.h> -#endif - #include <i4b/include/i4b_global.h> #include <i4b/include/i4b_l1l2.h> #include <i4b/include/i4b_l2l3.h> diff --git a/sys/i4b/layer4/i4b_l4mgmt.c b/sys/i4b/layer4/i4b_l4mgmt.c index 064a1f04550e..cde245141eec 100644 --- a/sys/i4b/layer4/i4b_l4mgmt.c +++ b/sys/i4b/layer4/i4b_l4mgmt.c @@ -43,6 +43,7 @@ #if defined(__FreeBSD__) #include <sys/ioccom.h> +#include <sys/random.h> #else #include <sys/ioctl.h> #endif @@ -54,10 +55,6 @@ #include <net/if.h> #ifdef __FreeBSD__ -#include <machine/random.h> -#endif - -#ifdef __FreeBSD__ #include <machine/i4b_debug.h> #include <machine/i4b_ioctl.h> #else diff --git a/sys/kern/kern_random.c b/sys/kern/kern_random.c index f4caf3b8a361..43e443c20713 100644 --- a/sys/kern/kern_random.c +++ b/sys/kern/kern_random.c @@ -44,7 +44,6 @@ #include <sys/kernel.h> #include <sys/select.h> #include <sys/poll.h> -#include <sys/timetc.h> #include <sys/md5.h> #include <sys/random.h> diff --git a/sys/net/if_spppsubr.c b/sys/net/if_spppsubr.c index 36ede2b2d086..8e9744624c6b 100644 --- a/sys/net/if_spppsubr.c +++ b/sys/net/if_spppsubr.c @@ -42,7 +42,7 @@ #include <sys/socket.h> #include <sys/syslog.h> #if defined(__FreeBSD__) && __FreeBSD__ >= 3 -#include <machine/random.h> +#include <sys/random.h> #endif #include <sys/malloc.h> #include <sys/mbuf.h> diff --git a/sys/netipx/ipx_input.c b/sys/netipx/ipx_input.c index db6025d33d4b..e16285c79ee5 100644 --- a/sys/netipx/ipx_input.c +++ b/sys/netipx/ipx_input.c @@ -42,6 +42,7 @@ #include <sys/protosw.h> #include <sys/socket.h> #include <sys/kernel.h> +#include <sys/random.h> #include <sys/sysctl.h> #include <net/if.h> @@ -55,8 +56,6 @@ #include <netipx/ipx_pcb.h> #include <netipx/ipx_var.h> -#include <machine/random.h> - int ipxcksum = 0; SYSCTL_INT(_net_ipx_ipx, OID_AUTO, checksum, CTLFLAG_RW, &ipxcksum, 0, ""); diff --git a/usr.sbin/rndcontrol/rndcontrol.c b/usr.sbin/rndcontrol/rndcontrol.c index b3c16f28a8ee..d80f6801eed6 100644 --- a/usr.sbin/rndcontrol/rndcontrol.c +++ b/usr.sbin/rndcontrol/rndcontrol.c @@ -29,13 +29,13 @@ static const char rcsid[] = "$FreeBSD$"; #endif /* not lint */ +#include <sys/random.h> #include <err.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <sys/ioctl.h> -#include <machine/random.h> static void usage() |
