summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/dev/random/harvest.c3
-rw-r--r--sys/dev/random/randomdev.c14
-rw-r--r--sys/sys/random.h11
3 files changed, 27 insertions, 1 deletions
diff --git a/sys/dev/random/harvest.c b/sys/dev/random/harvest.c
index 93ce35b..59495d7 100644
--- a/sys/dev/random/harvest.c
+++ b/sys/dev/random/harvest.c
@@ -45,6 +45,9 @@
static u_int read_random_phony(void *, u_int);
+/* Structure holding the desired entropy sources */
+struct harvest_select harvest = { 0, 0, 0 };
+
/* hold the address of the routine which is actually called if
* the randomdev is loaded
*/
diff --git a/sys/dev/random/randomdev.c b/sys/dev/random/randomdev.c
index bb602b1..8358877 100644
--- a/sys/dev/random/randomdev.c
+++ b/sys/dev/random/randomdev.c
@@ -81,7 +81,7 @@ static dev_t random_dev;
static dev_t urandom_dev; /* XXX Temporary */
/* To stash the sysctl's until they are removed */
-static struct sysctl_oid *random_sysctl[10]; /* magic # is sysctl count */
+static struct sysctl_oid *random_sysctl[12]; /* magic # is sysctl count */
static int sysctlcount = 0;
static int
@@ -190,6 +190,18 @@ random_modevent(module_t mod, int type, void *data)
SYSCTL_ADD_INT(NULL, SYSCTL_CHILDREN(node1),
OID_AUTO, "seeded", CTLFLAG_RW,
&random_state.seeded, 0, "Seeded State");
+ random_sysctl[sysctlcount++] =
+ SYSCTL_ADD_INT(NULL, SYSCTL_CHILDREN(node1),
+ OID_AUTO, "harvest_ethernet", CTLFLAG_RW,
+ &harvest.ethernet, 0, "Harvest NIC entropy");
+ random_sysctl[sysctlcount++] =
+ SYSCTL_ADD_INT(NULL, SYSCTL_CHILDREN(node1),
+ OID_AUTO, "harvest_point_to_point", CTLFLAG_RW,
+ &harvest.point_to_point, 0, "Harvest serial net entropy");
+ random_sysctl[sysctlcount++] =
+ SYSCTL_ADD_INT(NULL, SYSCTL_CHILDREN(node1),
+ OID_AUTO, "harvest_interrupt", CTLFLAG_RW,
+ &harvest.interrupt, 0, "Harvest IRQ entropy");
random_sysctl[sysctlcount++] = node2 =
SYSCTL_ADD_NODE(NULL, SYSCTL_CHILDREN(node_base),
OID_AUTO, "yarrow", CTLFLAG_RW, 0,
diff --git a/sys/sys/random.h b/sys/sys/random.h
index f2bcf44..f2c89e6 100644
--- a/sys/sys/random.h
+++ b/sys/sys/random.h
@@ -37,6 +37,17 @@ enum esource { RANDOM_WRITE, RANDOM_KEYBOARD, RANDOM_MOUSE, RANDOM_NET,
RANDOM_INTERRUPT, ENTROPYSOURCE };
void random_harvest(void *, u_int, u_int, u_int, enum esource);
+/* Allow the sysadmin to select the broad category of
+ * entropy types to harvest
+ */
+struct harvest_select {
+ int ethernet;
+ int point_to_point;
+ int interrupt;
+};
+
+extern struct harvest_select harvest;
+
#endif
#endif /* _SYS_RANDOM_H_ */
OpenPOWER on IntegriCloud