Home | History | Annotate | Line # | Download | only in sys
      1 /*	$NetBSD: uuid.h,v 1.8 2022/08/20 11:27:09 riastradh Exp $	*/
      2 
      3 /*
      4  * Copyright (c) 2002 Marcel Moolenaar
      5  * All rights reserved.
      6  *
      7  * Redistribution and use in source and binary forms, with or without
      8  * modification, are permitted provided that the following conditions
      9  * are met:
     10  *
     11  * 1. Redistributions of source code must retain the above copyright
     12  *    notice, this list of conditions and the following disclaimer.
     13  * 2. Redistributions in binary form must reproduce the above copyright
     14  *    notice, this list of conditions and the following disclaimer in the
     15  *    documentation and/or other materials provided with the distribution.
     16  *
     17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     19  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     20  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     21  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     22  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     27  *
     28  * $FreeBSD: /repoman/r/ncvs/src/sys/sys/uuid.h,v 1.3 2003/05/31 16:47:07 phk Exp $
     29  */
     30 
     31 #ifndef _SYS_UUID_H_
     32 #define	_SYS_UUID_H_
     33 
     34 #include <sys/cdefs.h>
     35 #include <sys/stdint.h>
     36 
     37 /* Length of a node address (an IEEE 802 address). */
     38 #define	_UUID_NODE_LEN		6
     39 
     40 /* Length of a printed UUID. */
     41 #define	_UUID_STR_LEN		38
     42 
     43 /*
     44  * See also:
     45  *      http://www.opengroup.org/dce/info/draft-leach-uuids-guids-01.txt
     46  *      http://www.opengroup.org/onlinepubs/009629399/apdxa.htm
     47  *
     48  * A DCE 1.1 compatible source representation of UUIDs.
     49  */
     50 struct uuid {
     51 	uint32_t	time_low;
     52 	uint16_t	time_mid;
     53 	uint16_t	time_hi_and_version;
     54 	uint8_t		clock_seq_hi_and_reserved;
     55 	uint8_t		clock_seq_low;
     56 	uint8_t		node[_UUID_NODE_LEN];
     57 };
     58 
     59 #ifdef _KERNEL
     60 
     61 #define	UUID_NODE_LEN	_UUID_NODE_LEN
     62 #define	UUID_STR_LEN	_UUID_STR_LEN
     63 
     64 int	uuid_snprintf(char *, size_t, const struct uuid *);
     65 int	uuid_printf(const struct uuid *);
     66 void	uuid_dec_be(const void *, struct uuid *);
     67 void	uuid_dec_le(const void *, struct uuid *);
     68 void	uuid_enc_be(void *, const struct uuid *);
     69 void	uuid_enc_le(void *, const struct uuid *);
     70 int	uuidgen(struct uuid *, int);
     71 
     72 #else	/* _KERNEL */
     73 
     74 typedef struct uuid uuid_t;
     75 
     76 __BEGIN_DECLS
     77 int	uuidgen(struct uuid *, int);
     78 __END_DECLS
     79 
     80 #endif	/* _KERNEL */
     81 
     82 #endif /* _SYS_UUID_H_ */
     83