http://gimel.esc.cam.ac.uk/james/rpld/src/rpld-1.2.tar.gz
[rpld.git] / util.c
1 /*************************************************
2 *     rpld - an IBM style RIPL server            *
3 *************************************************/
4
5 /* Copyright (c) 1999, James McKenzie.
6  *                      All rights reserved
7  * Copyright (c) 1998, Christopher Lightfoot.
8  *                      All rights reserved
9  *
10  * By using this file, you agree to the terms and conditions set
11  * forth in the LICENCE file which can be found at the top level of
12  * the rpld distribution.
13  *
14  * IBM is a trademark of IBM corp.
15  *
16  */
17
18
19 static char rcsid[] = "$Id: util.c,v 1.6 2000/07/16 13:18:10 root Exp root $";
20
21 /*
22  * $Log: util.c,v $
23  * Revision 1.6  2000/07/16 13:18:10  root
24  * #
25  *
26  * Revision 1.1  2000/07/16 13:16:33  root
27  * #
28  *
29  * Revision 1.5  1999/09/13 11:17:35  root
30  * \#
31  *
32  * Revision 1.4  1999/09/13 11:05:27  root
33  * \#
34  *
35  * Revision 1.3  1999/09/13 11:04:13  root
36  * \#
37  *
38  */
39
40 #include "project.h"
41
42
43 unsigned char ethtoaret[1024];
44
45 unsigned char *
46 ethtoa (void *in)
47 {
48   unsigned char *p = (unsigned char *) in;
49   int i = ETH_ALEN;
50   int len = 0;
51
52   len += sprintf (ethtoaret + len, "%02x", *(p++));
53
54   while (--i)
55     len += sprintf (ethtoaret + len, ":%02x", *(p++));
56
57   return (ethtoaret);
58 }
59
60 void
61 daemonize (void)
62 {
63   int fd;
64
65   switch (fork ())
66     {
67     case 0:
68       break;
69     case -1:
70       openlog ("rpld", LOG_PID, LOG_DAEMON);
71       syslog (LOG_ERR, "fork failed: %m");
72       exit (1);
73     default:
74       exit (0);
75     }
76
77   setpgrp ();
78
79   fd = open ("/dev/null", O_RDWR);
80   dup2 (fd, 0);
81   dup2 (fd, 1);
82   dup2 (fd, 2);
83   close (fd);
84 }