net/bnxt: ignore VLAN priority mask
[dpdk.git] / lib / librte_eal / include / rte_uuid.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright (C) 1996, 1997, 1998 Theodore Ts'o.
3  */
4 /**
5  * @file
6  *
7  * UUID related functions originally from libuuid
8  */
9
10 #ifndef _RTE_UUID_H_
11 #define _RTE_UUID_H_
12
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16
17 #include <stdbool.h>
18 #include <stddef.h>
19 #include <string.h>
20
21 /**
22  * Struct describing a Universal Unique Identifier
23  */
24 typedef unsigned char rte_uuid_t[16];
25
26 /**
27  * Helper for defining UUID values for id tables.
28  */
29 #define RTE_UUID_INIT(a, b, c, d, e) {          \
30         ((a) >> 24) & 0xff, ((a) >> 16) & 0xff, \
31         ((a) >> 8) & 0xff, (a) & 0xff,          \
32         ((b) >> 8) & 0xff, (b) & 0xff,          \
33         ((c) >> 8) & 0xff, (c) & 0xff,          \
34         ((d) >> 8) & 0xff, (d) & 0xff,          \
35         ((e) >> 40) & 0xff, ((e) >> 32) & 0xff, \
36         ((e) >> 24) & 0xff, ((e) >> 16) & 0xff, \
37         ((e) >> 8) & 0xff, (e) & 0xff           \
38 }
39
40 /**
41  * Test if UUID is all zeros.
42  *
43  * @param uu
44  *    The uuid to check.
45  * @return
46  *    true if uuid is NULL value, false otherwise
47  */
48 bool rte_uuid_is_null(const rte_uuid_t uu);
49
50 /**
51  * Copy uuid.
52  *
53  * @param dst
54  *    Destination uuid
55  * @param src
56  *    Source uuid
57  */
58 static inline void rte_uuid_copy(rte_uuid_t dst, const rte_uuid_t src)
59 {
60         memcpy(dst, src, sizeof(rte_uuid_t));
61 }
62
63 /**
64  * Compare two UUID's
65  *
66  * @param a
67  *    A UUID to compare
68  * @param b
69  *    A UUID to compare
70  * @return
71  *   returns an integer less than, equal to, or greater than zero if UUID a is
72  *   is less than, equal, or greater than UUID b.
73  */
74 int     rte_uuid_compare(const rte_uuid_t a, const rte_uuid_t b);
75
76 /**
77  * Extract UUID from string
78  *
79  * @param in
80  *    Pointer to string of characters to convert
81  * @param uu
82  *    Destination UUID
83  * @return
84  *    Returns 0 on success, and -1 if string is not a valid UUID.
85  */
86 int     rte_uuid_parse(const char *in, rte_uuid_t uu);
87
88 /**
89  * Convert UUID to string
90  *
91  * @param uu
92  *    UUID to format
93  * @param out
94  *    Resulting string buffer
95  * @param len
96  *    Sizeof the available string buffer
97  */
98 #define RTE_UUID_STRLEN (36 + 1)
99 void    rte_uuid_unparse(const rte_uuid_t uu, char *out, size_t len);
100
101 #ifdef __cplusplus
102 }
103 #endif
104
105 #endif /* RTE_UUID_H */