"seed2" was ruining non-repeating property, so remove it. discussed on tech-net

This commit is contained in:
itojun 2003-11-25 18:13:55 +00:00
parent b6a2cef9dc
commit 0864b4939d
2 changed files with 8 additions and 10 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: ip_id.c,v 1.3 2003/11/19 18:39:34 jonathan Exp $ */ /* $NetBSD: ip_id.c,v 1.4 2003/11/25 18:13:55 itojun Exp $ */
/* $OpenBSD: ip_id.c,v 1.6 2002/03/15 18:19:52 millert Exp $ */ /* $OpenBSD: ip_id.c,v 1.6 2002/03/15 18:19:52 millert Exp $ */
/* /*
@ -57,7 +57,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: ip_id.c,v 1.3 2003/11/19 18:39:34 jonathan Exp $"); __KERNEL_RCSID(0, "$NetBSD: ip_id.c,v 1.4 2003/11/25 18:13:55 itojun Exp $");
#include "opt_inet.h" #include "opt_inet.h"
@ -85,7 +85,7 @@ const static u_int16_t pfacts[PFAC_N] = {
}; };
static u_int16_t ru_x; static u_int16_t ru_x;
static u_int16_t ru_seed, ru_seed2; static u_int16_t ru_seed;
static u_int16_t ru_a, ru_b; static u_int16_t ru_a, ru_b;
static u_int16_t ru_g; static u_int16_t ru_g;
static u_int16_t ru_counter = 0; static u_int16_t ru_counter = 0;
@ -137,7 +137,6 @@ ip_initid(void)
/* 15 bits of random seed */ /* 15 bits of random seed */
ru_seed = (tmp >> 16) & 0x7FFF; ru_seed = (tmp >> 16) & 0x7FFF;
ru_seed2 = arc4random() & 0x7FFF;
/* Determine the LCG we use */ /* Determine the LCG we use */
ru_b = ((tmp = arc4random()) & 0xfffe) | 1; ru_b = ((tmp = arc4random()) & 0xfffe) | 1;
@ -194,5 +193,5 @@ ip_randomid(void)
ru_counter += i; ru_counter += i;
return (ru_seed ^ pmod(ru_g, ru_seed2 ^ ru_x,RU_N)) | ru_msb; return (ru_seed ^ pmod(ru_g, ru_x, RU_N)) | ru_msb;
} }

View File

@ -1,4 +1,4 @@
/* $NetBSD: ip6_id.c,v 1.9 2003/09/16 00:31:23 itojun Exp $ */ /* $NetBSD: ip6_id.c,v 1.10 2003/11/25 18:13:55 itojun Exp $ */
/* $KAME: ip6_id.c,v 1.8 2003/09/06 13:41:06 itojun Exp $ */ /* $KAME: ip6_id.c,v 1.8 2003/09/06 13:41:06 itojun Exp $ */
/* $OpenBSD: ip_id.c,v 1.6 2002/03/15 18:19:52 millert Exp $ */ /* $OpenBSD: ip_id.c,v 1.6 2002/03/15 18:19:52 millert Exp $ */
@ -87,7 +87,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: ip6_id.c,v 1.9 2003/09/16 00:31:23 itojun Exp $"); __KERNEL_RCSID(0, "$NetBSD: ip6_id.c,v 1.10 2003/11/25 18:13:55 itojun Exp $");
#include <sys/types.h> #include <sys/types.h>
#include <sys/param.h> #include <sys/param.h>
@ -113,7 +113,7 @@ struct randomtab {
u_int32_t ru_msb; u_int32_t ru_msb;
u_int32_t ru_x; u_int32_t ru_x;
u_int32_t ru_seed, ru_seed2; u_int32_t ru_seed;
u_int32_t ru_a, ru_b; u_int32_t ru_a, ru_b;
u_int32_t ru_g; u_int32_t ru_g;
long ru_reseed; long ru_reseed;
@ -186,7 +186,6 @@ initid(struct randomtab *p)
/* (bits - 1) bits of random seed */ /* (bits - 1) bits of random seed */
p->ru_seed = arc4random() & (~0U >> (32 - p->ru_bits + 1)); p->ru_seed = arc4random() & (~0U >> (32 - p->ru_bits + 1));
p->ru_seed2 = arc4random() & (~0U >> (32 - p->ru_bits + 1));
/* Determine the LCG we use */ /* Determine the LCG we use */
p->ru_b = (arc4random() & (~0U >> (32 - p->ru_bits))) | 1; p->ru_b = (arc4random() & (~0U >> (32 - p->ru_bits))) | 1;
@ -243,7 +242,7 @@ randomid(struct randomtab *p)
p->ru_counter += i; p->ru_counter += i;
return (p->ru_seed ^ pmod(p->ru_g, p->ru_seed2 ^ p->ru_x, p->ru_n)) | return (p->ru_seed ^ pmod(p->ru_g, p->ru_x, p->ru_n)) |
p->ru_msb; p->ru_msb;
} }