Mon, 28 Jan 2013 17:37:18 +0100
Correct socket error reporting improvement with IPv6 portable code,
after helpful recommendation by Saúl Ibarra Corretgé on OSips devlist.
michael@13 | 1 | ## |
michael@13 | 2 | ## uuid -- OpenPKG UUID Update Utility |
michael@428 | 3 | ## Copyright (c) 2000-2012 OpenPKG GmbH <http://openpkg.com/> |
michael@13 | 4 | ## |
michael@428 | 5 | ## This software is property of the OpenPKG GmbH, DE MUC HRB 160208. |
michael@428 | 6 | ## All rights reserved. Licenses which grant limited permission to use, |
michael@428 | 7 | ## copy, modify and distribute this software are available from the |
michael@428 | 8 | ## OpenPKG GmbH. |
michael@13 | 9 | ## |
michael@428 | 10 | ## THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED |
michael@13 | 11 | ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
michael@13 | 12 | ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
michael@13 | 13 | ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR |
michael@13 | 14 | ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
michael@13 | 15 | ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
michael@13 | 16 | ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
michael@13 | 17 | ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
michael@13 | 18 | ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
michael@13 | 19 | ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT |
michael@13 | 20 | ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
michael@13 | 21 | ## SUCH DAMAGE. |
michael@13 | 22 | ## |
michael@13 | 23 | |
michael@13 | 24 | =pod |
michael@13 | 25 | |
michael@13 | 26 | =head1 NAME |
michael@13 | 27 | |
michael@13 | 28 | B<openpkg uuid> - OpenPKG UUID Update Utility |
michael@13 | 29 | |
michael@13 | 30 | =head1 SYNOPSIS |
michael@13 | 31 | |
michael@13 | 32 | B<openpkg uuid> [B<--verbose>] [B<--multicast>] B<reset>|B<update>|B<info> |
michael@13 | 33 | |
michael@13 | 34 | =head1 DESCRIPTION |
michael@13 | 35 | |
michael@13 | 36 | The B<openpkg uuid> command is the maintenance utility for the DCE 1.1 |
michael@13 | 37 | and ISO/IEC 11578:1996 compliant I<Universally Unique Identifiers> |
michael@13 | 38 | (UUID) of an B<OpenPKG> instance. It is internally based on B<OSSP |
michael@13 | 39 | uuid>. |
michael@13 | 40 | |
michael@13 | 41 | UUIDs are 128 bit numbers which are intended to have a high likelihood |
michael@13 | 42 | of uniqueness over space and time and are computationally difficult |
michael@13 | 43 | to guess. They are globally unique identifiers which can be locally |
michael@13 | 44 | generated without contacting a global registration authority. UUIDs are |
michael@13 | 45 | intended as unique identifiers for both mass tagging objects with an |
michael@13 | 46 | extremely short lifetime and to reliably identifying very persistent |
michael@13 | 47 | objects across a network. The three classical UUID variants are DCE 1.1 |
michael@13 | 48 | UUIDs of version 1 (time and node based), version 3 (name based) and |
michael@13 | 49 | version 4 (random number based). |
michael@13 | 50 | |
michael@13 | 51 | For an B<OpenPKG> instance, three different UUIDs are used: |
michael@13 | 52 | |
michael@13 | 53 | =over 3 |
michael@13 | 54 | |
michael@13 | 55 | =item 1. B<OpenPKG Registry> (C<UUID_REGISTRY>) |
michael@13 | 56 | |
michael@13 | 57 | This is a version 1 UUID which uniquely identifiers the B<OpenPKG> |
michael@13 | 58 | instance for global registration purposes. It is generated just once in |
michael@13 | 59 | the lifetime of the B<OpenPKG> instance. The value of this UUID cannot |
michael@13 | 60 | be recalculated deterministically. |
michael@13 | 61 | |
michael@13 | 62 | =item 2. B<OpenPKG Instance> (C<UUID_INSTANCE>) |
michael@13 | 63 | |
michael@13 | 64 | This is a version 3 UUID which summarizes the B<OpenPKG> |
michael@13 | 65 | instance parameters. Currently the values of the following |
michael@13 | 66 | particular OpenPKG RPM macros are uses as input: |
michael@13 | 67 | |
michael@13 | 68 | %{l_openpkg_release} %{l_prefix} |
michael@13 | 69 | %{l_susr} %{l_suid} %{l_sgrp} %{l_sgid} |
michael@13 | 70 | %{l_musr} %{l_muid} %{l_mgrp} %{l_mgid} |
michael@13 | 71 | %{l_rusr} %{l_ruid} %{l_rgrp} %{l_rgid} |
michael@13 | 72 | %{l_nusr} %{l_nuid} %{l_ngrp} %{l_ngid} |
michael@13 | 73 | |
michael@13 | 74 | The value of this UUID can be recalculated deterministically and will |
michael@13 | 75 | not chance as long as none of the values of the above macro do not |
michael@13 | 76 | change. This UUID can be used for detecting OpenPKG release upgrades, |
michael@13 | 77 | accidentally changed UIDs or GIDs, etc. Notice that version 3 UUIDs are |
michael@13 | 78 | message digests (actually MD5 based) and so are one-way functions which do |
michael@13 | 79 | not allow one to recalculate the input values from the UUID. |
michael@13 | 80 | |
michael@13 | 81 | =item 3. B<OpenPKG Platform> (C<UUID_PLATFORM>) |
michael@13 | 82 | |
michael@13 | 83 | This is a version 3 UUID which summarizes the B<OpenPKG> platform |
michael@13 | 84 | parameters. Currently the OpenPKG RPM platform id plus the FQDN and IP |
michael@13 | 85 | address of the underlying host are used as input. This UUID can be used |
michael@13 | 86 | for detecting operating system and host changes. Notice that version |
michael@13 | 87 | 3 UUIDs are message digests (actually MD5 based) and so are one-way |
michael@13 | 88 | functions which do not allow one to recalculate the input values from |
michael@13 | 89 | the UUID. |
michael@13 | 90 | |
michael@13 | 91 | =back |
michael@13 | 92 | |
michael@13 | 93 | =head1 OPTIONS |
michael@13 | 94 | |
michael@13 | 95 | =over 4 |
michael@13 | 96 | |
michael@13 | 97 | =item B<--verbose> |
michael@13 | 98 | |
michael@13 | 99 | Print verbose messages during operation. |
michael@13 | 100 | |
michael@13 | 101 | =item B<--multicast> |
michael@13 | 102 | |
michael@13 | 103 | Generate a random multicast MAC address instead of using the real IEEE |
michael@13 | 104 | 802 MAC address of the underlying host when generating the version 1 |
michael@13 | 105 | UUID C<UUID_REGISTRY>. |
michael@13 | 106 | |
michael@13 | 107 | =back |
michael@13 | 108 | |
michael@13 | 109 | =head1 COMMANDS |
michael@13 | 110 | |
michael@13 | 111 | =over 4 |
michael@13 | 112 | |
michael@13 | 113 | =item B<reset> |
michael@13 | 114 | |
michael@13 | 115 | This resets the three UUIDs C<UUID_REGISTRY>, C<UUID_INSTANCE> and |
michael@13 | 116 | C<UUID_PLATFORM> to the "Nil UUID". They are then automatically |
michael@13 | 117 | regenerated within one day if already done explicitly afterward with |
michael@13 | 118 | "C<openpkg uuid update>". |
michael@13 | 119 | |
michael@13 | 120 | =item B<update> |
michael@13 | 121 | |
michael@13 | 122 | This updates the three UUIDs C<UUID_REGISTRY>, C<UUID_INSTANCE> and |
michael@13 | 123 | C<UUID_PLATFORM> to the "Nil UUID". C<UUID_REGISTRY> is kept unless it |
michael@13 | 124 | is the "Nil UUID" (see "C<openpkg uuid reset>" command above). The UUIDs |
michael@13 | 125 | C<UUID_INSTANCE> and C<UUID_PLATFORM> are updated only if their input |
michael@13 | 126 | values (and this way the resulting UUIDs) have changed. This operation |
michael@13 | 127 | is performed daily automatically. |
michael@13 | 128 | |
michael@13 | 129 | =item B<info> |
michael@13 | 130 | |
michael@13 | 131 | This print summary page of identification information, including all |
michael@13 | 132 | UUIDs and all of their calculation inputs. |
michael@13 | 133 | |
michael@13 | 134 | =back |
michael@13 | 135 | |
michael@13 | 136 | =head1 FILES |
michael@13 | 137 | |
michael@13 | 138 | The three UUIDs of the B<OpenPKG> instance are stored in the file |
michael@13 | 139 | C<@l_prefix@/etc/openpkg/uuid> in Bourne-Shell syntax. An example |
michael@13 | 140 | content is: |
michael@13 | 141 | |
michael@13 | 142 | UUID_REGISTRY="81eca44e-4d18-11d8-a837-0090272ff725" |
michael@13 | 143 | UUID_INSTANCE="c55a8d2d-31bb-3ae0-9edb-68337af61acc" |
michael@13 | 144 | UUID_PLATFORM="05ec2532-9e3f-37dc-a7ed-b291c2c463ed" |
michael@13 | 145 | |
michael@13 | 146 | =head1 CAVEATS |
michael@13 | 147 | |
michael@13 | 148 | By default and in full compliance with DCE 1.1 and ISO/IEC 11578:1996, |
michael@13 | 149 | the OpenPKG Registry UUID (C<UUID_REGISTRY>) contains the IEEE 802 MAC |
michael@13 | 150 | address of the underlying host. If this is not acceptable by local |
michael@13 | 151 | security policies you can easily at any time generate a new OpenPKG |
michael@13 | 152 | Registry UUID with a random multicast MAC address instead by running: |
michael@13 | 153 | |
michael@13 | 154 | $ openpkg uuid reset |
michael@13 | 155 | $ openpkg uuid --multicast update |
michael@13 | 156 | |
michael@13 | 157 | =head1 SEE ALSO |
michael@13 | 158 | |
michael@13 | 159 | B<OSSP uuid> E<lt>http://www.ossp.org/pkg/lib/uuid/E<gt>. |
michael@13 | 160 | |
michael@13 | 161 | =head1 HISTORY |
michael@13 | 162 | |
michael@13 | 163 | The B<openpkg uuid> command first appeared in B<OpenPKG 2.0>. |
michael@13 | 164 | |
michael@13 | 165 | =cut |
michael@13 | 166 |