uuid.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /*-
  2. * Copyright (c) 2002 Marcel Moolenaar
  3. * All rights reserved.
  4. *
  5. * Redistribution and use in source and binary forms, with or without
  6. * modification, are permitted provided that the following conditions
  7. * are met:
  8. *
  9. * 1. Redistributions of source code must retain the above copyright
  10. * notice, this list of conditions and the following disclaimer.
  11. * 2. Redistributions in binary form must reproduce the above copyright
  12. * notice, this list of conditions and the following disclaimer in the
  13. * documentation and/or other materials provided with the distribution.
  14. *
  15. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  16. * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  17. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  18. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  19. * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  20. * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  21. * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  22. * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  23. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  24. * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  25. *
  26. * $FreeBSD$
  27. */
  28. /*
  29. * Portions copyright (c) 2014-2023, Arm Limited and Contributors.
  30. * All rights reserved.
  31. */
  32. #ifndef UUID_H
  33. #define UUID_H
  34. #include <stdint.h>
  35. /* Length of a node address (an IEEE 802 address). */
  36. #define _UUID_NODE_LEN 6
  37. /* Length of UUID string including dashes. */
  38. #define _UUID_STR_LEN 36
  39. /*
  40. * See also:
  41. * http://www.opengroup.org/dce/info/draft-leach-uuids-guids-01.txt
  42. * http://www.opengroup.org/onlinepubs/009629399/apdxa.htm
  43. *
  44. * A DCE 1.1 compatible source representation of UUIDs.
  45. */
  46. struct uuid {
  47. uint8_t time_low[4];
  48. uint8_t time_mid[2];
  49. uint8_t time_hi_and_version[2];
  50. uint8_t clock_seq_hi_and_reserved;
  51. uint8_t clock_seq_low;
  52. uint8_t node[_UUID_NODE_LEN];
  53. };
  54. struct efi_guid {
  55. uint32_t time_low;
  56. uint16_t time_mid;
  57. uint16_t time_hi_and_version;
  58. uint8_t clock_seq_and_node[8];
  59. };
  60. union uuid_helper_t {
  61. struct uuid uuid_struct;
  62. struct efi_guid efi_guid;
  63. };
  64. /* XXX namespace pollution? */
  65. typedef struct uuid uuid_t;
  66. #endif /* UUID_H */