Theodore Ts'o | 4eca93b | 1999-03-16 20:31:56 +0000 | [diff] [blame] | 1 | .\" Copyright 1999 Andreas Dilger (adilger@enel.ucalgary.ca) |
| 2 | .\" |
Theodore Ts'o | 9dd97ae | 2004-04-03 11:24:10 -0500 | [diff] [blame] | 3 | .\" %Begin-Header% |
| 4 | .\" Redistribution and use in source and binary forms, with or without |
| 5 | .\" modification, are permitted provided that the following conditions |
| 6 | .\" are met: |
| 7 | .\" 1. Redistributions of source code must retain the above copyright |
| 8 | .\" notice, and the entire permission notice in its entirety, |
| 9 | .\" including the disclaimer of warranties. |
| 10 | .\" 2. Redistributions in binary form must reproduce the above copyright |
| 11 | .\" notice, this list of conditions and the following disclaimer in the |
| 12 | .\" documentation and/or other materials provided with the distribution. |
| 13 | .\" 3. The name of the author may not be used to endorse or promote |
| 14 | .\" products derived from this software without specific prior |
| 15 | .\" written permission. |
Theodore Ts'o | 4eca93b | 1999-03-16 20:31:56 +0000 | [diff] [blame] | 16 | .\" |
Theodore Ts'o | 9dd97ae | 2004-04-03 11:24:10 -0500 | [diff] [blame] | 17 | .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED |
| 18 | .\" WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
| 19 | .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF |
| 20 | .\" WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE |
| 21 | .\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| 22 | .\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT |
| 23 | .\" OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR |
| 24 | .\" BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
| 25 | .\" LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 26 | .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE |
| 27 | .\" USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH |
| 28 | .\" DAMAGE. |
| 29 | .\" %End-Header% |
Theodore Ts'o | 4eca93b | 1999-03-16 20:31:56 +0000 | [diff] [blame] | 30 | .\" |
| 31 | .\" Created Wed Mar 10 17:42:12 1999, Andreas Dilger |
| 32 | .TH UUID_GENERATE 3 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@" |
| 33 | .SH NAME |
Theodore Ts'o | caf8ce4 | 1999-10-21 19:56:34 +0000 | [diff] [blame] | 34 | uuid_generate, uuid_generate_random, uuid_generate_time \- create a new unique UUID value |
Theodore Ts'o | 4eca93b | 1999-03-16 20:31:56 +0000 | [diff] [blame] | 35 | .SH SYNOPSIS |
| 36 | .nf |
| 37 | .B #include <uuid/uuid.h> |
| 38 | .sp |
| 39 | .BI "void uuid_generate(uuid_t " out ); |
Theodore Ts'o | b19d1a9 | 1999-06-18 00:32:03 +0000 | [diff] [blame] | 40 | .BI "void uuid_generate_random(uuid_t " out ); |
| 41 | .BI "void uuid_generate_time(uuid_t " out ); |
Theodore Ts'o | 4eca93b | 1999-03-16 20:31:56 +0000 | [diff] [blame] | 42 | .fi |
| 43 | .SH DESCRIPTION |
| 44 | The |
| 45 | .B uuid_generate |
Theodore Ts'o | b19d1a9 | 1999-06-18 00:32:03 +0000 | [diff] [blame] | 46 | function creates a new universally unique identifier (UUID). The uuid will |
| 47 | be generated based on high-quality randomness from |
| 48 | .IR /dev/urandom , |
| 49 | if available. If it is not available, then |
| 50 | .B uuid_generate |
| 51 | will use an alternative algorithm which uses the current time, the |
| 52 | local ethernet MAC address (if available), and random data generated |
| 53 | using a pseudo-random generator. |
| 54 | .sp |
| 55 | The |
| 56 | .B uuid_generate_random |
| 57 | function forces the use of the all-random UUID format, even if |
| 58 | a high-quality random number generator (i.e., |
| 59 | .IR /dev/urandom ) |
| 60 | is not available, in which case a pseudo-random |
| 61 | generator will be subsituted. Note that the use of a pseudo-random |
| 62 | generator may compromise the uniqueness of UUID's |
| 63 | generated in this fashion. |
| 64 | .sp |
| 65 | The |
| 66 | .B uuid_generate_time |
| 67 | function forces the use of the alternative algorithm which uses the |
| 68 | current time and the local ethernet MAC address (if available). |
| 69 | This algorithm used to be the default one used to generate UUID, but |
| 70 | because of the use of the ethernet MAC address, it can leak |
| 71 | information about when and where the UUID was generated. This can cause |
| 72 | privacy problems in some applications, so the |
| 73 | .B uuid_generate |
| 74 | function only uses this algorithm if a high-quality source of |
| 75 | randomness is not available. |
Theodore Ts'o | 4eca93b | 1999-03-16 20:31:56 +0000 | [diff] [blame] | 76 | .sp |
| 77 | The UUID is 16 bytes (128 bits) long, which gives approximately 3.4x10^38 |
| 78 | unique values (there are approximately 10^80 elemntary particles in |
| 79 | the universe according to Carl Sagan's |
| 80 | .IR Cosmos ). |
| 81 | The new UUID can reasonably be considered unique among all UUIDs created |
| 82 | on the local system, and among UUIDs created on other systems in the past |
| 83 | and in the future. |
| 84 | .SH RETURN VALUE |
| 85 | The newly created UUID is returned in the memory location pointed to by |
| 86 | .IR out . |
| 87 | .SH "CONFORMING TO" |
| 88 | OSF DCE 1.1 |
| 89 | .SH AUTHOR |
Theodore Ts'o | 6d49349 | 2004-05-04 22:05:05 -0400 | [diff] [blame^] | 90 | Theodore Y. Ts'o |
Theodore Ts'o | 4eca93b | 1999-03-16 20:31:56 +0000 | [diff] [blame] | 91 | .SH AVAILABILITY |
Theodore Ts'o | 6d49349 | 2004-05-04 22:05:05 -0400 | [diff] [blame^] | 92 | .UR http://e2fsprogs.sourceforge.net/ |
| 93 | http://e2fsprogs.sourceforge.net/ |
| 94 | .UE |
Theodore Ts'o | 4eca93b | 1999-03-16 20:31:56 +0000 | [diff] [blame] | 95 | .SH "SEE ALSO" |
Theodore Ts'o | 6d49349 | 2004-05-04 22:05:05 -0400 | [diff] [blame^] | 96 | .BR uuid (3), |
| 97 | .BR uuidgen (1), |
Theodore Ts'o | 4eca93b | 1999-03-16 20:31:56 +0000 | [diff] [blame] | 98 | .BR uuid_clear (3), |
| 99 | .BR uuid_compare (3), |
| 100 | .BR uuid_copy (3), |
Theodore Ts'o | 4eca93b | 1999-03-16 20:31:56 +0000 | [diff] [blame] | 101 | .BR uuid_is_null (3), |
| 102 | .BR uuid_parse (3), |
| 103 | .BR uuid_time (3), |
| 104 | .BR uuid_unparse (3) |