19d6ca396SRobert Mustacchi.\" 2c10c16deSRichard Lowe.\" Copyright (c) 2006, Sun Microsystems, Inc. All Rights Reserved. 30b5ce10aSAndy Stormont.\" Copyright 2014 Andrew Stormont. 49d6ca396SRobert Mustacchi.\" Copyright 2021 Oxide Computer Company 59d6ca396SRobert Mustacchi.\" 69d6ca396SRobert Mustacchi.\" The contents of this file are subject to the terms of the 79d6ca396SRobert Mustacchi.\" Common Development and Distribution License (the "License"). 89d6ca396SRobert Mustacchi.\" You may not use this file except in compliance with the License. 99d6ca396SRobert Mustacchi.\" 109d6ca396SRobert Mustacchi.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 119d6ca396SRobert Mustacchi.\" or http://www.opensolaris.org/os/licensing. 129d6ca396SRobert Mustacchi.\" See the License for the specific language governing permissions 139d6ca396SRobert Mustacchi.\" and limitations under the License. 149d6ca396SRobert Mustacchi.\" 159d6ca396SRobert Mustacchi.\" When distributing Covered Code, include this CDDL HEADER in each 169d6ca396SRobert Mustacchi.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE. 179d6ca396SRobert Mustacchi.\" If applicable, add the following below this CDDL HEADER, with the 189d6ca396SRobert Mustacchi.\" fields enclosed by brackets "[]" replaced with your own identifying 199d6ca396SRobert Mustacchi.\" information: Portions Copyright [yyyy] [name of copyright owner] 209d6ca396SRobert Mustacchi.\" 219d6ca396SRobert Mustacchi.Dd November 30, 2021 229d6ca396SRobert Mustacchi.Dt UUID_CLEAR 3UUID 239d6ca396SRobert Mustacchi.Os 249d6ca396SRobert Mustacchi.Sh NAME 259d6ca396SRobert Mustacchi.Nm uuid_clear , 269d6ca396SRobert Mustacchi.Nm uuid_compare , 279d6ca396SRobert Mustacchi.Nm uuid_copy , 289d6ca396SRobert Mustacchi.Nm uuid_generate , 299d6ca396SRobert Mustacchi.Nm uuid_generate_random , 309d6ca396SRobert Mustacchi.Nm uuid_generate_time , 319d6ca396SRobert Mustacchi.Nm uuid_is_null , 329d6ca396SRobert Mustacchi.Nm uuid_parse , 339d6ca396SRobert Mustacchi.Nm uuid_time , 349d6ca396SRobert Mustacchi.Nm uuid_unparse , 359d6ca396SRobert Mustacchi.Nm uuid_unparse_lower , 369d6ca396SRobert Mustacchi.Nm uuid_unparse_upper 379d6ca396SRobert Mustacchi.Nd universally unique identifier (UUID) operations 389d6ca396SRobert Mustacchi.Sh LIBRARY 399d6ca396SRobert Mustacchi.Lb libuuid 409d6ca396SRobert Mustacchi.Sh SYNOPSIS 419d6ca396SRobert Mustacchi.In uuid/uuid.h 429d6ca396SRobert Mustacchi.Ft void 439d6ca396SRobert Mustacchi.Fo uuid_clear 449d6ca396SRobert Mustacchi.Fa "uuid_t uu" 459d6ca396SRobert Mustacchi.Fc 469d6ca396SRobert Mustacchi.Ft int 479d6ca396SRobert Mustacchi.Fo uuid_compare 489d6ca396SRobert Mustacchi.Fa "uuid_t uu1" 499d6ca396SRobert Mustacchi.Fa "uuid_t uu2" 509d6ca396SRobert Mustacchi.Fc 519d6ca396SRobert Mustacchi.Ft void 529d6ca396SRobert Mustacchi.Fo uuid_copy 539d6ca396SRobert Mustacchi.Fa "uuid_t dst" 549d6ca396SRobert Mustacchi.Fa "uuid_t src" 559d6ca396SRobert Mustacchi.Fc 569d6ca396SRobert Mustacchi.Ft void 579d6ca396SRobert Mustacchi.Fo uuid_generate 589d6ca396SRobert Mustacchi.Fa "uuid_t out" 599d6ca396SRobert Mustacchi.Fc 609d6ca396SRobert Mustacchi.Ft void 619d6ca396SRobert Mustacchi.Fo uuid_generate_random 629d6ca396SRobert Mustacchi.Fa "uuid_t out" 639d6ca396SRobert Mustacchi.Fc 649d6ca396SRobert Mustacchi.Ft void 659d6ca396SRobert Mustacchi.Fo uuid_generate_time 669d6ca396SRobert Mustacchi.Fa "uuid_t out" 679d6ca396SRobert Mustacchi.Fc 689d6ca396SRobert Mustacchi.Ft int 699d6ca396SRobert Mustacchi.Fo uuid_is_null 709d6ca396SRobert Mustacchi.Fa "uuid_t uu" 719d6ca396SRobert Mustacchi.Fc 729d6ca396SRobert Mustacchi.Ft int 739d6ca396SRobert Mustacchi.Fo uuid_parse 749d6ca396SRobert Mustacchi.Fa "char *int" 759d6ca396SRobert Mustacchi.Fa "uuid_t uu" 769d6ca396SRobert Mustacchi.Fc 779d6ca396SRobert Mustacchi.Ft time_t 789d6ca396SRobert Mustacchi.Fo uuid_time 799d6ca396SRobert Mustacchi.Fa "uuid_t uu" 809d6ca396SRobert Mustacchi.Fa "struct timeval *ret_tv" 819d6ca396SRobert Mustacchi.Fc 829d6ca396SRobert Mustacchi.Ft void 839d6ca396SRobert Mustacchi.Fo uuid_unparse 849d6ca396SRobert Mustacchi.Fa "uuid_t uu" 859d6ca396SRobert Mustacchi.Fa "char *out" 869d6ca396SRobert Mustacchi.Fc 879d6ca396SRobert Mustacchi.Ft void 889d6ca396SRobert Mustacchi.Fo uuid_unparse_lower 899d6ca396SRobert Mustacchi.Fa "uuid_t uu" 909d6ca396SRobert Mustacchi.Fa "char *out" 919d6ca396SRobert Mustacchi.Fc 929d6ca396SRobert Mustacchi.Ft void 939d6ca396SRobert Mustacchi.Fo uuid_unparse_upper 949d6ca396SRobert Mustacchi.Fa "uuid_t uu" 959d6ca396SRobert Mustacchi.Fa "char *out" 969d6ca396SRobert Mustacchi.Fc 979d6ca396SRobert Mustacchi.Sh DESCRIPTION 989d6ca396SRobert MustacchiThe 999d6ca396SRobert Mustacchi.Fn uuid_clear 1009d6ca396SRobert Mustacchifunction sets the value of the specified universally unique identifier 1019d6ca396SRobert Mustacchi.Pq UUID 1029d6ca396SRobert Mustacchivariable 1039d6ca396SRobert Mustacchi.Fa uu 1049d6ca396SRobert Mustacchito the NULL value. 1059d6ca396SRobert Mustacchi.Pp 1069d6ca396SRobert MustacchiThe 1079d6ca396SRobert Mustacchi.Fn uuid_compare 1089d6ca396SRobert Mustacchifunction compares the two specified UUID variables 1099d6ca396SRobert Mustacchi.Fa uu1 1109d6ca396SRobert Mustacchiand 1119d6ca396SRobert Mustacchi.Fa uu2 1129d6ca396SRobert Mustacchito each other. 1139d6ca396SRobert MustacchiIt returns an integer less than, equal to, or greater than zero if 1149d6ca396SRobert Mustacchi.Fa uu1 1159d6ca396SRobert Mustacchiis found to be, respectively, lexicographically less than, equal, or greater 1169d6ca396SRobert Mustacchithan 1179d6ca396SRobert Mustacchi.Fa uu2 . 1189d6ca396SRobert Mustacchi.Pp 1199d6ca396SRobert MustacchiThe 1209d6ca396SRobert Mustacchi.Fn uuid_copy 1219d6ca396SRobert Mustacchifunction copies the UUID variable 1229d6ca396SRobert Mustacchi.Fa src 1239d6ca396SRobert Mustacchito 1249d6ca396SRobert Mustacchi.Fa dst . 1259d6ca396SRobert Mustacchi.Pp 1269d6ca396SRobert MustacchiThe 1279d6ca396SRobert Mustacchi.Fn uuid_generate 1289d6ca396SRobert Mustacchiand 1299d6ca396SRobert Mustacchi.Fn uuid_generate_random 1309d6ca396SRobert Mustacchifunctions create a new UUID that is generated based on high-quality randomness 1319d6ca396SRobert Mustacchiutilizing the 1329d6ca396SRobert Mustacchi.Xr arc4random 3C 1339d6ca396SRobert Mustacchifunction. 1349d6ca396SRobert MustacchiThese correspond to a DCE version 4 UUID. 1359d6ca396SRobert MustacchiOn some implementations it is possible that the 1369d6ca396SRobert Mustacchi.Fn uuid_generate 1379d6ca396SRobert Mustacchifunction will fall back to generating a version 1 UUID. 1389d6ca396SRobert MustacchiWhile in our current implementation this is not possible, applications should 1399d6ca396SRobert Mustacchinot assume a guaranteed format when calling the 1409d6ca396SRobert Mustacchi.Fn uuid_generate 1419d6ca396SRobert Mustacchifunction. 1429d6ca396SRobert Mustacchi.Pp 1439d6ca396SRobert MustacchiThe 1449d6ca396SRobert Mustacchi.Fn uuid_generate_time 1459d6ca396SRobert Mustacchifunction uses the current time and the local Ethernet MAC address 1469d6ca396SRobert Mustacchi.Pq if available, otherwise a MAC address is fabricated 1479d6ca396SRobert Mustacchithat corresponds to a DCE version 1 UUID. 1489d6ca396SRobert MustacchiIf the UUID is not guaranteed to be unique, the multicast bit is set 1499d6ca396SRobert Mustacchi.Pq the high-order bit of octet number 10 . 1509d6ca396SRobert Mustacchi.Pp 1519d6ca396SRobert MustacchiThe 1529d6ca396SRobert Mustacchi.Fn uuid_is_null 1539d6ca396SRobert Mustacchifunction compares the value of the specified UUID variable 1549d6ca396SRobert Mustacchi.Fa uu 1559d6ca396SRobert Mustacchito the NULL value. 1569d6ca396SRobert MustacchiIf the value is equal to the NULL UUID, 1579d6ca396SRobert Mustacchi.Sy 1 158c10c16deSRichard Loweis returned. 1599d6ca396SRobert MustacchiOtherwise 1609d6ca396SRobert Mustacchi.Sy 0 1619d6ca396SRobert Mustacchiis returned. 1629d6ca396SRobert Mustacchi.Pp 1639d6ca396SRobert MustacchiThe 1649d6ca396SRobert Mustacchi.Fn uuid_parse 1659d6ca396SRobert Mustacchifunction converts the UUID string specified by 1669d6ca396SRobert Mustacchi.Fa in 1679d6ca396SRobert Mustacchito the internal 1689d6ca396SRobert Mustacchi.Vt uuid_t 1699d6ca396SRobert Mustacchiformat. 1709d6ca396SRobert MustacchiThe input UUID is a string of the form 1719d6ca396SRobert Mustacchi.Sy cefa7a9c-1dd2-11b2-8350-880020adbeef . 1729d6ca396SRobert MustacchiIn 1739d6ca396SRobert Mustacchi.Xr printf 3C 1749d6ca396SRobert Mustacchiformat, the string is 1759d6ca396SRobert Mustacchi.Dq Sy %08x-%04x-%04x-%04x-%012x , 1769d6ca396SRobert Mustacchi36 bytes plus the trailing null character. 1779d6ca396SRobert MustacchiIf the input string is parsed successfully, 1789d6ca396SRobert Mustacchi.Sy 0 1799d6ca396SRobert Mustacchiis returned and the UUID is stored in the location pointed to by 1809d6ca396SRobert Mustacchi.Fa uu . 1819d6ca396SRobert MustacchiOtherwise 1829d6ca396SRobert Mustacchi.Sy -1 1839d6ca396SRobert Mustacchiis returned. 1849d6ca396SRobert Mustacchi.Pp 1859d6ca396SRobert MustacchiThe 1869d6ca396SRobert Mustacchi.Fn uuid_time 1879d6ca396SRobert Mustacchifunction extracts the time at which the specified UUID 1889d6ca396SRobert Mustacchi.Fa uu 1899d6ca396SRobert Mustacchiwas created. 1909d6ca396SRobert MustacchiSince the UUID creation time is encoded within the UUID, this function can 1919d6ca396SRobert Mustacchireasonably be expected to extract the creation time only for UUIDs created with 1929d6ca396SRobert Mustacchithe 1939d6ca396SRobert Mustacchi.Fn uuid_generate_time 1949d6ca396SRobert Mustacchifunction. 1959d6ca396SRobert MustacchiThe time at which the UUID was created, in seconds since January 1, 1970 GMT 1969d6ca396SRobert Mustacchi.Pq the epoch , 1979d6ca396SRobert Mustacchiis returned 1989d6ca396SRobert Mustacchi.Po 1999d6ca396SRobert Mustacchisee 2009d6ca396SRobert Mustacchi.Xr time 2 2019d6ca396SRobert Mustacchi.Pc . 2029d6ca396SRobert MustacchiThe time at which the UUID was created, in seconds and microseconds since the 2039d6ca396SRobert Mustacchiepoch is also stored in the location pointed to by 2049d6ca396SRobert Mustacchi.Fa ret_tv 2059d6ca396SRobert Mustacchi.Po 2069d6ca396SRobert Mustacchisee 2079d6ca396SRobert Mustacchi.Xr gettimeofday 3C 2089d6ca396SRobert Mustacchi.Pc . 2099d6ca396SRobert Mustacchi.Pp 2109d6ca396SRobert MustacchiThe 2119d6ca396SRobert Mustacchi.Fn uuid_unparse 2129d6ca396SRobert Mustacchiand 2139d6ca396SRobert Mustacchi.Fn uuid_unparse_lower 2149d6ca396SRobert Mustacchifunctions convert the specified UUID 2159d6ca396SRobert Mustacchi.Fa uu 2169d6ca396SRobert Mustacchifrom the internal binary format to a lower case string of the length defined in 2179d6ca396SRobert Mustacchithe 2189d6ca396SRobert Mustacchi.In uuid/uuid.h 2199d6ca396SRobert Mustacchimacro, 2209d6ca396SRobert Mustacchi.Dv UUID_PRINTABLE_STRING_LENGTH , 2219d6ca396SRobert Mustacchiwhich includes the trailing null character. 2229d6ca396SRobert MustacchiThe resulting value is stored in the character string pointed to by 2239d6ca396SRobert Mustacchi.Fa out . 2249d6ca396SRobert Mustacchi.Pp 2259d6ca396SRobert MustacchiThe uuid_unparse_upper 2269d6ca396SRobert Mustacchifunction converts the specified UUID 2279d6ca396SRobert Mustacchi.Fa uu 2280b5ce10aSAndy Stormontfrom the internal binary format to a upper case string of the length defined in 2299d6ca396SRobert Mustacchithe 2309d6ca396SRobert Mustacchi.In uuid/uuid.h 2319d6ca396SRobert Mustacchimacro, 2329d6ca396SRobert Mustacchi.Dv UUID_PRINTABLE_STRING_LENGTH , 2339d6ca396SRobert Mustacchiwhich includes the trailing null character. 2349d6ca396SRobert MustacchiThe resulting value is stored in the character string pointed to by 2359d6ca396SRobert Mustacchi.Fa out . 2369d6ca396SRobert Mustacchi.Sh INTERFACE STABILITY 2379d6ca396SRobert Mustacchi.Sy Evolving 2389d6ca396SRobert Mustacchi.Sh MT-LEVEL 2399d6ca396SRobert Mustacchi.Sy Safe 2409d6ca396SRobert Mustacchi.Sh SEE ALSO 2419d6ca396SRobert Mustacchi.Xr time 2 , 2429d6ca396SRobert Mustacchi.Xr arc4random 3C , 2439d6ca396SRobert Mustacchi.Xr gettimeofday 3C , 2449d6ca396SRobert Mustacchi.Xr printf 3C , 2459d6ca396SRobert Mustacchi.Xr libuuid 3LIB , 246*bbf21555SRichard Lowe.Xr attributes 7 247