1 /*
2 * This file and its contents are supplied under the terms of the
3 * Common Development and Distribution License ("CDDL"), version 1.0.
4 * You may only use this file in accordance with the terms of version
5 * 1.0 of the CDDL.
6 *
7 * A full copy of the text of the CDDL should have accompanied this
8 * source. A copy of the CDDL is also available via the Internet at
9 * http://www.illumos.org/license/CDDL.
10 */
11
12 /*
13 * Copyright 2014 Pluribus Networks Inc.
14 */
15
16 #ifndef _COMPAT_FREEBSD_UUID_H_
17 #define _COMPAT_FREEBSD_UUID_H_
18
19 #include <sys/endian.h>
20 #include <uuid/uuid.h>
21
22 /* Status codes returned by the functions. */
23 #define uuid_s_ok 0
24 #define uuid_s_bad_version 1
25 #define uuid_s_invalid_string_uuid 2
26
27 static __inline void
uuid_from_string(const char * str,uuid_t * uuidp,uint32_t * status)28 uuid_from_string(const char *str, uuid_t *uuidp, uint32_t *status)
29 {
30 if (uuid_parse((char *)str, *uuidp) == 0) {
31 *status = uuid_s_ok;
32 } else {
33 *status = uuid_s_invalid_string_uuid;
34 }
35 }
36
37 static __inline void
uuid_enc_le(void * buf,uuid_t * uuidp)38 uuid_enc_le(void *buf, uuid_t *uuidp)
39 {
40 uchar_t *p;
41 int i;
42
43 p = buf;
44 be32enc(p, ((struct uuid *)uuidp)->time_low);
45 be16enc(p + 4, ((struct uuid *)uuidp)->time_mid);
46 be16enc(p + 6, ((struct uuid *)uuidp)->time_hi_and_version);
47 p[8] = ((struct uuid *)uuidp)->clock_seq_hi_and_reserved;
48 p[9] = ((struct uuid *)uuidp)->clock_seq_low;
49
50 for (i = 0; i < 6; i++)
51 p[10 + i] = ((struct uuid *)uuidp)->node_addr[i];
52
53 }
54
55 #endif /* _COMPAT_FREEBSD_UUID_H_ */
56