Added sample rpld.conf file to load gPXE
[rpld.git] / util.c
1 /*************************************************
2 *     rpld - an IBM style RIPL server            *
3 *************************************************/
4
5 /* Copyright (c) 1999,2000,2001 James McKenzie.
6  *                      All rights reserved
7  * Copyright (c) 1998,2000,2001 Christopher Lightfoot.
8  *                      All rights reserved
9  *
10  * NetBSD and BPF support by Takashi YAMAMOTO
11  * Copyright (C) 2001 YAMAMOTO Takashi <yamt@netbsd.org>.
12  *
13  *
14  * By using this file, you agree to the terms and conditions set
15  * forth in the LICENCE file which can be found at the top level of
16  * the rpld distribution.
17  *
18  * IBM is a trademark of IBM corp.
19  *
20  */
21
22
23 static char rcsid[] = "$Id: util.c,v 1.9 2001/11/01 15:24:26 root Exp $";
24
25 /*
26  * $Log: util.c,v $
27  * Revision 1.9  2001/11/01 15:24:26  root
28  * #
29  *
30  * Revision 1.8  2001/11/01 15:23:59  root
31  * #
32  *
33  * Revision 1.7  2000/07/16 14:05:28  root
34  * #
35  *
36  * Revision 1.6  2000/07/16 13:18:10  root
37  * #
38  *
39  * Revision 1.1  2000/07/16 13:16:33  root
40  * #
41  *
42  * Revision 1.5  1999/09/13 11:17:35  root
43  * \#
44  *
45  * Revision 1.4  1999/09/13 11:05:27  root
46  * \#
47  *
48  * Revision 1.3  1999/09/13 11:04:13  root
49  * \#
50  *
51  */
52
53 #include "project.h"
54
55 #include <stdlib.h>
56
57
58 char ethtoaret[1024];
59
60 char *
61 ethtoa (void *in)
62 {
63   unsigned char *p = (unsigned char *) in;
64   int i = ETH_ALEN;
65   int len = 0;
66
67   len += sprintf (ethtoaret + len, "%02x", *(p++));
68
69   while (--i)
70     len += sprintf (ethtoaret + len, ":%02x", *(p++));
71
72   return (ethtoaret);
73 }
74
75 #ifdef __NetBSD__
76 void
77 daemonize (void)
78 {
79   if (daemon (1, 0) == -1)
80     {
81       openlog ("rpld", LOG_PID, LOG_DAEMON);
82       syslog (LOG_ERR, "fork failed: %m");
83       exit (1);
84     }
85 }
86 #else
87 void
88 daemonize (void)
89 {
90   int fd;
91
92   switch (fork ())
93     {
94     case 0:
95       break;
96     case -1:
97       openlog ("rpld", LOG_PID, LOG_DAEMON);
98       syslog (LOG_ERR, "fork failed: %m");
99       exit (1);
100     default:
101       exit (0);
102     }
103
104   setpgrp ();
105
106   fd = open ("/dev/null", O_RDWR);
107   dup2 (fd, 0);
108   dup2 (fd, 1);
109   dup2 (fd, 2);
110   close (fd);
111 }
112 #endif