summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/include/proto.h3
-rw-r--r--source3/lib/util_uuid.c10
-rw-r--r--source3/librpc/ndr/ndr_misc.c7
3 files changed, 19 insertions, 1 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h
index f7f0836c8f..246a3b75be 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -1815,6 +1815,7 @@ void smb_uuid_generate_random(struct GUID *uu);
const char *smb_uuid_string(TALLOC_CTX *mem_ctx, const struct GUID uu);
bool smb_string_to_uuid(const char *in, struct GUID* uu);
char *guid_binstring(const struct GUID *guid);
+bool guid_equal(const struct GUID *g1, const struct GUID *g2);
/* The following definitions come from lib/version.c */
@@ -4101,6 +4102,8 @@ void ndr_print_PAC_BUFFER(struct ndr_print *ndr, const char *name, const struct
bool all_zero(const uint8_t *ptr, size_t size);
void ndr_print_GUID(struct ndr_print *ndr, const char *name, const struct GUID *guid);
+bool ndr_syntax_id_equal(const struct ndr_syntax_id *i1,
+ const struct ndr_syntax_id *i2);
enum ndr_err_code ndr_push_server_id(struct ndr_push *ndr, int ndr_flags, const struct server_id *r);
enum ndr_err_code ndr_pull_server_id(struct ndr_pull *ndr, int ndr_flags, struct server_id *r);
void ndr_print_server_id(struct ndr_print *ndr, const char *name, const struct server_id *r);
diff --git a/source3/lib/util_uuid.c b/source3/lib/util_uuid.c
index 36c04e9b84..0d788ac8b4 100644
--- a/source3/lib/util_uuid.c
+++ b/source3/lib/util_uuid.c
@@ -130,4 +130,12 @@ char *guid_binstring(const struct GUID *guid)
return binary_string_rfc2254((char *)guid_flat.info, UUID_FLAT_SIZE);
}
-
+bool guid_equal(const struct GUID *g1, const struct GUID *g2)
+{
+ return ((g1->time_low == g2->time_low)
+ && (g1->time_mid == g2->time_mid)
+ && (g1->time_hi_and_version == g2->time_hi_and_version)
+ && (memcmp(g1->clock_seq, g2->clock_seq,
+ sizeof(g1->clock_seq)) == 0)
+ && (memcmp(g1->node, g2->node, sizeof(g1->node)) == 0));
+}
diff --git a/source3/librpc/ndr/ndr_misc.c b/source3/librpc/ndr/ndr_misc.c
index 79761b9251..f1468166ff 100644
--- a/source3/librpc/ndr/ndr_misc.c
+++ b/source3/librpc/ndr/ndr_misc.c
@@ -43,6 +43,13 @@ void ndr_print_GUID(struct ndr_print *ndr, const char *name, const struct GUID *
ndr->print(ndr, "%-25s: %s", name, GUID_string(ndr, guid));
}
+bool ndr_syntax_id_equal(const struct ndr_syntax_id *i1,
+ const struct ndr_syntax_id *i2)
+{
+ return guid_equal(&i1->uuid, &i2->uuid)
+ && (i1->if_version == i2->if_version);
+}
+
enum ndr_err_code ndr_push_server_id(struct ndr_push *ndr, int ndr_flags, const struct server_id *r)
{
if (ndr_flags & NDR_SCALARS) {