diff options
Diffstat (limited to 'libglusterfs/src/common-utils.c')
-rw-r--r-- | libglusterfs/src/common-utils.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index ac8babcc8ad..ef48aca056b 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -2547,6 +2547,61 @@ lkowner_utoa_r (gf_lkowner_t *lkowner, char *dst, int len) return dst; } +gf_boolean_t +is_valid_lease_id (const char *lease_id) +{ + int i = 0; + gf_boolean_t valid = _gf_false; + + for (i = 0; i < LEASE_ID_SIZE; i++) { + if (lease_id[i] != 0) { + valid = _gf_true; + goto out; + } + } +out: + return valid; +} + +/* Lease_id can be a either in printable or non printable binary + * format. This function can be used to print any lease_id. + * + * This function returns a pointer to a buf, containing the ascii + * representation of the value in lease_id, in the following format: + * 4hexnum-4hexnum-4hexnum-4hexnum-4hexnum-4hexnum-4hexnum-4hexnum + * + * Eg: If lease_id = "lid1-clnt1" the printable string would be: + * 6c69-6431-2d63-6c6e-7431-0000-0000-0000 + * + * Note: The pointer returned should not be stored for further use, as any + * subsequent call to this function will override the same buffer. + */ +char * +leaseid_utoa (const char *lease_id) +{ + char *buf = NULL; + int i = 0; + int j = 0; + + buf = glusterfs_leaseid_buf_get (); + if (!buf) + goto out; + + for (i = 0; i < LEASE_ID_SIZE; i++) { + if (i && !(i % 2)) { + buf[j] = '-'; + j++; + } + sprintf (&buf[j], "%02hhx", lease_id[i]); + j += 2; + if (j == GF_LEASE_ID_BUF_SIZE) + break; + } + buf[GF_LEASE_ID_BUF_SIZE - 1] = '\0'; +out: + return buf; +} + void* gf_array_elem (void *a, int index, size_t elem_size) { uint8_t* ptr = a; @@ -4199,6 +4254,7 @@ fop_enum_to_pri_string (glusterfs_fop_t fop) case GF_FOP_REMOVEXATTR: case GF_FOP_FREMOVEXATTR: case GF_FOP_IPC: + case GF_FOP_LEASE: return "NORMAL"; case GF_FOP_READ: |