Initial import from FreeBSD RELENG_4:
[dragonfly.git] / contrib / isc-dhcp / common / convert.c
1 /* convert.c
2
3    Safe copying of option values into and out of the option buffer, which
4    can't be assumed to be aligned. */
5
6 /*
7  * Copyright (c) 1995, 1996 The Internet Software Consortium.
8  * All rights reserved.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  *
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions and the following disclaimer.
16  * 2. Redistributions in binary form must reproduce the above copyright
17  *    notice, this list of conditions and the following disclaimer in the
18  *    documentation and/or other materials provided with the distribution.
19  * 3. Neither the name of The Internet Software Consortium nor the names
20  *    of its contributors may be used to endorse or promote products derived
21  *    from this software without specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE INTERNET SOFTWARE CONSORTIUM AND
24  * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
25  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
26  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27  * DISCLAIMED.  IN NO EVENT SHALL THE INTERNET SOFTWARE CONSORTIUM OR
28  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
30  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
31  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
32  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
33  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
34  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35  * SUCH DAMAGE.
36  *
37  * This software has been written for the Internet Software Consortium
38  * by Ted Lemon <mellon@fugue.com> in cooperation with Vixie
39  * Enterprises.  To learn more about the Internet Software Consortium,
40  * see ``http://www.vix.com/isc''.  To learn more about Vixie
41  * Enterprises, see ``http://www.vix.com''.
42  */
43
44 #ifndef lint
45 static char copyright[] =
46 "$Id: convert.c,v 1.4.2.1 1998/06/25 21:11:28 mellon Exp $ Copyright (c) 1995, 1996 The Internet Software Consortium.  All rights reserved.\n";
47 #endif /* not lint */
48
49 #include "dhcpd.h"
50
51 u_int32_t getULong (buf)
52         unsigned char *buf;
53 {
54         unsigned long ibuf;
55
56         memcpy (&ibuf, buf, sizeof (u_int32_t));
57         return ntohl (ibuf);
58 }
59
60 int32_t getLong (buf)
61         unsigned char *buf;
62 {
63         long ibuf;
64
65         memcpy (&ibuf, buf, sizeof (int32_t));
66         return ntohl (ibuf);
67 }
68
69 u_int16_t getUShort (buf)
70         unsigned char *buf;
71 {
72         unsigned short ibuf;
73
74         memcpy (&ibuf, buf, sizeof (u_int16_t));
75         return ntohs (ibuf);
76 }
77
78 int16_t getShort (buf)
79         unsigned char *buf;
80 {
81         short ibuf;
82
83         memcpy (&ibuf, buf, sizeof (int16_t));
84         return ntohs (ibuf);
85 }
86
87 void putULong (obuf, val)
88         unsigned char *obuf;
89         u_int32_t val;
90 {
91         u_int32_t tmp = htonl (val);
92         memcpy (obuf, &tmp, sizeof tmp);
93 }
94
95 void putLong (obuf, val)
96         unsigned char *obuf;
97         int32_t val;
98 {
99         int32_t tmp = htonl (val);
100         memcpy (obuf, &tmp, sizeof tmp);
101 }
102
103 void putUShort (obuf, val)
104         unsigned char *obuf;
105         unsigned int val;
106 {
107         u_int16_t tmp = htons (val);
108         memcpy (obuf, &tmp, sizeof tmp);
109 }
110
111 void putShort (obuf, val)
112         unsigned char *obuf;
113         int val;
114 {
115         int16_t tmp = htons (val);
116         memcpy (obuf, &tmp, sizeof tmp);
117 }
118