http://gimel.esc.cam.ac.uk/james/rpld/src/rpld-1.4.tar.gz
[rpld.git] / util.c
1 /*************************************************
2 *     rpld - an IBM style RIPL server            *
3 *************************************************/
4
5 /* Copyright (c) 1999,2000, James McKenzie.
6  *                      All rights reserved
7  * Copyright (c) 1998,2000, 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.7 2000/07/16 14:05:28 root Exp $";
20
21 /*
22  * $Log: util.c,v $
23  * Revision 1.7  2000/07/16 14:05:28  root
24  * #
25  *
26  * Revision 1.6  2000/07/16 13:18:10  root
27  * #
28  *
29  * Revision 1.1  2000/07/16 13:16:33  root
30  * #
31  *
32  * Revision 1.5  1999/09/13 11:17:35  root
33  * \#
34  *
35  * Revision 1.4  1999/09/13 11:05:27  root
36  * \#
37  *
38  * Revision 1.3  1999/09/13 11:04:13  root
39  * \#
40  *
41  */
42
43 #include "project.h"
44
45
46 unsigned char ethtoaret[1024];
47
48 unsigned char *
49 ethtoa (void *in)
50 {
51   unsigned char *p = (unsigned char *) in;
52   int i = ETH_ALEN;
53   int len = 0;
54
55   len += sprintf (ethtoaret + len, "%02x", *(p++));
56
57   while (--i)
58     len += sprintf (ethtoaret + len, ":%02x", *(p++));
59
60   return (ethtoaret);
61 }
62
63 void
64 daemonize (void)
65 {
66   int fd;
67
68   switch (fork ())
69     {
70     case 0:
71       break;
72     case -1:
73       openlog ("rpld", LOG_PID, LOG_DAEMON);
74       syslog (LOG_ERR, "fork failed: %m");
75       exit (1);
76     default:
77       exit (0);
78     }
79
80   setpgrp ();
81
82   fd = open ("/dev/null", O_RDWR);
83   dup2 (fd, 0);
84   dup2 (fd, 1);
85   dup2 (fd, 2);
86   close (fd);
87 }