svn commit: samba r20493 - in branches/SAMBA_4_0/source/librpc/ndr:
.
abartlet at samba.org
abartlet at samba.org
Wed Jan 3 03:59:45 GMT 2007
Author: abartlet
Date: 2007-01-03 03:59:44 +0000 (Wed, 03 Jan 2007)
New Revision: 20493
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=20493
Log:
Add support for the 'Netscape' varient of GUID formatting, used in the
Fedora DS.
Andrew Bartlett
Modified:
branches/SAMBA_4_0/source/librpc/ndr/uuid.c
Changeset:
Modified: branches/SAMBA_4_0/source/librpc/ndr/uuid.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/ndr/uuid.c 2007-01-03 03:19:02 UTC (rev 20492)
+++ branches/SAMBA_4_0/source/librpc/ndr/uuid.c 2007-01-03 03:59:44 UTC (rev 20493)
@@ -69,6 +69,45 @@
}
/**
+ build a GUID from a string
+*/
+_PUBLIC_ NTSTATUS NS_GUID_from_string(const char *s, struct GUID *guid)
+{
+ NTSTATUS status = NT_STATUS_INVALID_PARAMETER;
+ uint32_t time_low;
+ uint32_t time_mid, time_hi_and_version;
+ uint32_t clock_seq[2];
+ uint32_t node[6];
+ int i;
+
+ if (s == NULL) {
+ return NT_STATUS_INVALID_PARAMETER;
+ }
+
+ if (11 == sscanf(s, "%08x-%04x%04x-%02x%02x%02x%02x-%02x%02x%02x%02x",
+ &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])) {
+ status = NT_STATUS_OK;
+ }
+
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
+ }
+
+ guid->time_low = time_low;
+ guid->time_mid = time_mid;
+ guid->time_hi_and_version = time_hi_and_version;
+ guid->clock_seq[0] = clock_seq[0];
+ guid->clock_seq[1] = clock_seq[1];
+ for (i=0;i<6;i++) {
+ guid->node[i] = node[i];
+ }
+
+ return NT_STATUS_OK;
+}
+
+/**
* generate a random GUID
*/
struct GUID GUID_random(void)
@@ -144,6 +183,19 @@
return ret;
}
+_PUBLIC_ char *NS_GUID_string(TALLOC_CTX *mem_ctx, const struct GUID *guid)
+{
+ return talloc_asprintf(mem_ctx,
+ "%08x-%04x%04x-%02x%02x%02x%02x-%02x%02x%02x%02x",
+ guid->time_low, guid->time_mid,
+ guid->time_hi_and_version,
+ guid->clock_seq[0],
+ guid->clock_seq[1],
+ guid->node[0], guid->node[1],
+ guid->node[2], guid->node[3],
+ guid->node[4], guid->node[5]);
+}
+
_PUBLIC_ BOOL policy_handle_empty(struct policy_handle *h)
{
return (h->handle_type == 0 && GUID_all_zero(&h->uuid));
More information about the samba-cvs
mailing list