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