Line data Source code
1 : /* 2 : Unix SMB/CIFS implementation. 3 : 4 : UUID/GUID/policy_handle functions 5 : 6 : Copyright (C) Andrew Tridgell 2003. 7 : Copyright (C) Stefan (metze) Metzmacher 2004. 8 : 9 : This program is free software; you can redistribute it and/or modify 10 : it under the terms of the GNU General Public License as published by 11 : the Free Software Foundation; either version 3 of the License, or 12 : (at your option) any later version. 13 : 14 : This program is distributed in the hope that it will be useful, 15 : but WITHOUT ANY WARRANTY; without even the implied warranty of 16 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 : GNU General Public License for more details. 18 : 19 : You should have received a copy of the GNU General Public License 20 : along with this program. If not, see <http://www.gnu.org/licenses/>. 21 : */ 22 : 23 : #include "includes.h" 24 : #include "system/network.h" 25 : #include "librpc/ndr/libndr.h" 26 : #include "libcli/util/ntstatus.h" 27 : #include "lib/util/util_str_hex.h" 28 : 29 247358 : _PUBLIC_ void ndr_print_GUID(struct ndr_print *ndr, const char *name, const struct GUID *guid) 30 : { 31 740 : struct GUID_txt_buf buf; 32 247358 : ndr->print(ndr, "%-25s: %s", name, GUID_buf_string(guid, &buf)); 33 247358 : } 34 : 35 6009374 : bool ndr_syntax_id_equal(const struct ndr_syntax_id *i1, 36 : const struct ndr_syntax_id *i2) 37 : { 38 6009374 : return GUID_equal(&i1->uuid, &i2->uuid) 39 6009374 : && (i1->if_version == i2->if_version); 40 : } 41 : 42 3355505 : char *ndr_syntax_id_buf_string( 43 : const struct ndr_syntax_id *id, struct ndr_syntax_id_buf *dst) 44 : { 45 7777 : struct GUID_txt_buf guid_buf; 46 : 47 6711010 : snprintf(dst->buf, 48 : sizeof(dst->buf), 49 : "%s/0x%08"PRIx32, 50 : GUID_buf_string(&id->uuid, &guid_buf), 51 3355505 : id->if_version); 52 : 53 3355505 : return dst->buf; 54 : } 55 : 56 0 : _PUBLIC_ char *ndr_syntax_id_to_string(TALLOC_CTX *mem_ctx, const struct ndr_syntax_id *id) 57 : { 58 0 : struct ndr_syntax_id_buf buf; 59 0 : return talloc_strdup(mem_ctx, ndr_syntax_id_buf_string(id, &buf)); 60 : } 61 : 62 3329910 : _PUBLIC_ bool ndr_syntax_id_from_string(const char *s, struct ndr_syntax_id *id) 63 : { 64 7129 : bool ok; 65 : 66 3329910 : ok = parse_guid_string(s, &id->uuid); 67 3329910 : if (!ok) { 68 0 : return false; 69 : } 70 : 71 3329910 : if (strncmp(s + 36, "/0x", 3) != 0) { 72 0 : return false; 73 : } 74 : 75 3329910 : ok = hex_uint32(s+39, &id->if_version); 76 3329910 : return ok; 77 : }