magic.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:2k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* magic.c - PPP Magic Number routines */
  2. /* Copyright 1995 Wind River Systems, Inc. */
  3. #include "copyright_wrs.h"
  4. /*
  5.  * Copyright (c) 1989 Carnegie Mellon University.
  6.  * All rights reserved.
  7.  *
  8.  * Redistribution and use in source and binary forms are permitted
  9.  * provided that the above copyright notice and this paragraph are
  10.  * duplicated in all such forms and that any documentation,
  11.  * advertising materials, and other materials related to such
  12.  * distribution and use acknowledge that the software was developed
  13.  * by Carnegie Mellon University.  The name of the
  14.  * University may not be used to endorse or promote products derived
  15.  * from this software without specific prior written permission.
  16.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  17.  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  18.  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  19.  */
  20. /*
  21. modification history
  22. --------------------
  23. 01b,16jun95,dzb  header file consolidation.
  24. 01a,21dec94,dab  VxWorks port - first WRS version.
  25.    +dzb  added: path for ppp header files, WRS copyright, tickLib.h.
  26. */
  27. #include "vxWorks.h"
  28. #include "tickLib.h"
  29. #include "sys/types.h"
  30. #include "sys/times.h"
  31. #include "pppLib.h"
  32. static u_long next; /* Next value to return */
  33. extern u_long gethostid __ARGS((void));
  34. /*
  35.  * magic_init - Initialize the magic number generator.
  36.  *
  37.  * Computes first magic number and seed for random number generator.
  38.  * Attempts to compute a random number seed which will not repeat.
  39.  * The current method uses the current hostid and current time.
  40.  */
  41. void magic_init()
  42. {
  43.     next = tickGet();
  44.     srandom((int) next);
  45. }
  46. /*
  47.  * magic - Returns the next magic number.
  48.  */
  49. u_long magic()
  50. {
  51.     u_long m;
  52.     m = next;
  53.     next = (u_long) random();
  54.     return (m);
  55. }