random.h File Reference

Thread safe random functions. More...

Functions

void ub_systemseed (unsigned int seed)
 Initialize the system randomness.
struct ub_randstateub_initstate (unsigned int seed, struct ub_randstate *from)
 Initialize a random generator state for use.
long int ub_random (struct ub_randstate *state)
 Generate next random number from the state passed along.
void ub_randfree (struct ub_randstate *state)
 Delete the random state.

Detailed Description

Thread safe random functions.

Similar to arc4random() with an explicit initialisation routine.


Function Documentation

void ub_systemseed ( unsigned int  seed  ) 

Initialize the system randomness.

Obtains entropy from the system before a chroot or privilege makes it unavailable. You do not have to call this, otherwise ub_initstate does so.

Parameters:
seed,: seed value to create state (if no good entropy is found).

References log_err(), VERB_OPS, and verbose().

Referenced by daemon_init(), ub_arc4random_stir(), and ub_initstate().

struct ub_randstate* ub_initstate ( unsigned int  seed,
struct ub_randstate from 
) [read]

Initialize a random generator state for use.

Parameters:
seed,: seed value to create state contents. (ignored for arc4random).
from,: if not NULL, the seed is taken from this random structure. can be used to seed random states via a parent-random-state that is itself seeded with entropy.
Returns:
new state or NULL alloc failure.

References log_err(), ub_arc4random_stir(), and ub_systemseed().

Referenced by daemon_create_workers(), libworker_setup(), rnd_test(), ub_ctx_create(), and worker_init().

long int ub_random ( struct ub_randstate state  ) 

Generate next random number from the state passed along.

Thread safe, so random numbers are repeatable.

Parameters:
state,: must have been initialised with ub_initstate.
Returns:
: random 31 bit value.

References MAX_VALUE, ub_randstate::rc4, ub_randstate::rc4_ready, and ub_arc4random_stir().

Referenced by calc_next_probe(), daemon_get_shufport(), iter_ns_probability(), iter_server_selection(), pending_tcp_query(), rnd_test(), select_id(), select_ifport(), serviced_perturb_qname(), and ub_arc4random_stir().

void ub_randfree ( struct ub_randstate state  ) 

Delete the random state.

Parameters:
state,: to delete.

Referenced by daemon_delete(), libworker_delete(), rnd_test(), ub_ctx_create(), ub_ctx_delete(), and worker_delete().

Generated on Thu Apr 22 00:27:07 2010 for unbound by  doxygen 1.6.3