From e65ea7471e2447ed150ade9a2c4f0a67663fb8d2 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Wed, 16 Jul 2008 22:18:43 +0200 Subject: Add ndr_syntax_id_equal() (This used to be commit 5fc90908deb417130af122941e084542304a2543) --- source3/include/proto.h | 3 +++ source3/lib/util_uuid.c | 10 +++++++++- source3/librpc/ndr/ndr_misc.c | 7 +++++++ 3 files changed, 19 insertions(+), 1 deletion(-) 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) { -- cgit