diff options
author | Stefan Metzmacher <metze@samba.org> | 2014-02-04 12:54:42 +0100 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2014-02-11 16:02:14 +0100 |
commit | 3b2b0aa4d4bf07971ef016e5a2ce0fec84bbf144 (patch) | |
tree | 2d2a96386066181bd0ee11c12f52e2fe2f102c24 /librpc/ndr/ndr_misc.c | |
parent | 7b5717058a7d7a93cda712efc7622a87d3980e48 (diff) | |
download | samba-3b2b0aa4d4bf07971ef016e5a2ce0fec84bbf144.tar.gz samba-3b2b0aa4d4bf07971ef016e5a2ce0fec84bbf144.tar.xz samba-3b2b0aa4d4bf07971ef016e5a2ce0fec84bbf144.zip |
librpc/ndr: add ndr_syntax_id_[from|to]_string()
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
Diffstat (limited to 'librpc/ndr/ndr_misc.c')
-rw-r--r-- | librpc/ndr/ndr_misc.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/librpc/ndr/ndr_misc.c b/librpc/ndr/ndr_misc.c index c4a1adb3ead..fa643c84949 100644 --- a/librpc/ndr/ndr_misc.c +++ b/librpc/ndr/ndr_misc.c @@ -35,3 +35,50 @@ bool ndr_syntax_id_equal(const struct ndr_syntax_id *i1, return GUID_equal(&i1->uuid, &i2->uuid) && (i1->if_version == i2->if_version); } + +_PUBLIC_ char *ndr_syntax_id_to_string(TALLOC_CTX *mem_ctx, const struct ndr_syntax_id *id) +{ + return talloc_asprintf(mem_ctx, + "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x/0x%08x", + id->uuid.time_low, id->uuid.time_mid, + id->uuid.time_hi_and_version, + id->uuid.clock_seq[0], + id->uuid.clock_seq[1], + id->uuid.node[0], id->uuid.node[1], + id->uuid.node[2], id->uuid.node[3], + id->uuid.node[4], id->uuid.node[5], + (unsigned)id->if_version); +} + +_PUBLIC_ bool ndr_syntax_id_from_string(const char *s, struct ndr_syntax_id *id) +{ + int ret; + size_t i; + uint32_t time_low; + uint32_t time_mid, time_hi_and_version; + uint32_t clock_seq[2]; + uint32_t node[6]; + uint32_t if_version; + + ret = sscanf(s, + "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x/0x%08x", + &time_low, &time_mid, &time_hi_and_version, + &clock_seq[0], &clock_seq[1], + &node[0], &node[1], &node[2], &node[3], &node[4], &node[5], + &if_version); + if (ret != 12) { + return false; + } + + id->uuid.time_low = time_low; + id->uuid.time_mid = time_mid; + id->uuid.time_hi_and_version = time_hi_and_version; + id->uuid.clock_seq[0] = clock_seq[0]; + id->uuid.clock_seq[1] = clock_seq[1]; + for (i=0; i<6; i++) { + id->uuid.node[i] = node[i]; + } + id->if_version = if_version; + + return true; +} |