--- a/crypto/rand/rand_unix.c
+++ b/crypto/rand/rand_unix.c
@@ -222,6 +222,26 @@
     }
     return 1;
 }
+# elif defined RAND_GENODE
+int RAND_poll(void)
+{
+	unsigned char buf[ENTROPY_NEEDED];
+	char const *rand_file = "/dev/random";
+
+	int fd = open(rand_file, O_RDONLY);
+	if (fd == -1) {
+		fprintf(stderr, "libcrypto: open(%s) failed with '%s'\n",
+				rand_file, strerror(errno));
+		return 0;
+	}
+
+	read(fd, buf, sizeof(buf)); /* XXX check read */
+
+	RAND_add(buf, sizeof(buf), ENTROPY_NEEDED);
+	memset(buf, 0, sizeof(buf)); /* XXX make explicit */
+
+	return 1;
+}
 # elif defined __OpenBSD__
 int RAND_poll(void)
 {
