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