6 #define PD_UUID_BINLEN 16
7 #define PD_UUID_STRLEN 36
10 uint64_t timestamp, node;
11 uint16_t clock_sequence;
14 unsigned char uuid[16];
16 int (*get_lock)(void *);
17 int (*release_lock)(void *);
19 int (*read_state)(struct pd_uuid_state *s);
20 int (*save_state)(struct pd_uuid_state *s);
21 /* TODO hook for a random number generator? */
22 unsigned long (*random_bytes)(void *out, unsigned long outlen,
29 typedef struct pd_uuid pd_uuid_t;
31 int pd_uuid_init_state(struct pd_uuid_state *s);
32 int pd_uuid_init(struct pd_uuid_state *s, int f);
33 int pd_uuid_make_v1(struct pd_uuid_state *s, pd_uuid_t *uuid);
34 int pd_uuid_make_v1mc(struct pd_uuid_state *s, pd_uuid_t *uuid);
35 int pd_uuid_make_v4(struct pd_uuid_state *s, pd_uuid_t *uuid);
36 int pd_uuid_make_v3(struct pd_uuid_state *s, pd_uuid_t *uuid, pd_uuid_t *ns, void *data, int len);
37 int pd_uuid_make_v5(struct pd_uuid_state *s, pd_uuid_t *uuid, pd_uuid_t *ns, void *data, int len);
39 int pd_uuid_copy(pd_uuid_t *src, pd_uuid_t *dst);
40 int pd_uuid_cmp(pd_uuid_t *a, pd_uuid_t *b);
42 int pd_set_uuid_hash(pd_uuid_t *s, void *hash, int version);
44 int pd_uuid_set_string(pd_uuid_t *uuid, char *s);
45 char *pd_uuid_get_string(pd_uuid_t *uuid, char *s);
47 unsigned long pd_uuid_rng_get_bytes(unsigned char *out, unsigned long outlen);
49 pd_uuid_t pd_uuid_ns_x500;
50 pd_uuid_t pd_uuid_ns_url;
51 pd_uuid_t pd_uuid_ns_dns;
52 pd_uuid_t pd_uuid_ns_oid;