summaryrefslogtreecommitdiffstats
path: root/usr.sbin/pppd/magic.c
diff options
context:
space:
mode:
authorwollman <wollman@FreeBSD.org>1994-09-25 02:11:26 +0000
committerwollman <wollman@FreeBSD.org>1994-09-25 02:11:26 +0000
commit860a10b12f94d28edf8ffa8a4df515be3e1d5f29 (patch)
tree955c8e4d02e3ceb1c2b82dcf3c77c981990acab3 /usr.sbin/pppd/magic.c
parent74d0d724065cd8f7e32c82f2e1eeb9af8f2abd1d (diff)
downloadFreeBSD-src-860a10b12f94d28edf8ffa8a4df515be3e1d5f29.zip
FreeBSD-src-860a10b12f94d28edf8ffa8a4df515be3e1d5f29.tar.gz
Initial revision
Diffstat (limited to 'usr.sbin/pppd/magic.c')
-rw-r--r--usr.sbin/pppd/magic.c70
1 files changed, 70 insertions, 0 deletions
diff --git a/usr.sbin/pppd/magic.c b/usr.sbin/pppd/magic.c
new file mode 100644
index 0000000..20dfd6f
--- /dev/null
+++ b/usr.sbin/pppd/magic.c
@@ -0,0 +1,70 @@
+/*
+ * magic.c - PPP Magic Number routines.
+ *
+ * Copyright (c) 1989 Carnegie Mellon University.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that the above copyright notice and this paragraph are
+ * duplicated in all such forms and that any documentation,
+ * advertising materials, and other materials related to such
+ * distribution and use acknowledge that the software was developed
+ * by Carnegie Mellon University. The name of the
+ * University may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#ifndef lint
+static char rcsid[] = "$Id: magic.c,v 1.1 1993/11/11 03:54:25 paulus Exp $";
+#endif
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/time.h>
+
+#include "magic.h"
+
+
+static u_long next; /* Next value to return */
+
+extern u_long gethostid __ARGS((void));
+extern long random __ARGS((void));
+extern void srandom __ARGS((int));
+
+
+/*
+ * magic_init - Initialize the magic number generator.
+ *
+ * Computes first magic number and seed for random number generator.
+ * Attempts to compute a random number seed which will not repeat.
+ * The current method uses the current hostid and current time.
+ */
+void magic_init()
+{
+ struct timeval tv;
+
+ next = gethostid();
+ if (gettimeofday(&tv, NULL)) {
+ perror("gettimeofday");
+ exit(1);
+ }
+ next ^= (u_long) tv.tv_sec ^ (u_long) tv.tv_usec;
+
+ srandom((int) next);
+}
+
+
+/*
+ * magic - Returns the next magic number.
+ */
+u_long magic()
+{
+ u_long m;
+
+ m = next;
+ next = (u_long) random();
+ return (m);
+}
OpenPOWER on IntegriCloud