Line data Source code
1 : /* 2 : Unix SMB/CIFS implementation. 3 : 4 : routines for marshalling/unmarshalling special ODJ structures 5 : 6 : Copyright (C) Guenther Deschner 2021 7 : 8 : This program is free software; you can redistribute it and/or modify 9 : it under the terms of the GNU General Public License as published by 10 : the Free Software Foundation; either version 3 of the License, or 11 : (at your option) any later version. 12 : 13 : This program is distributed in the hope that it will be useful, 14 : but WITHOUT ANY WARRANTY; without even the implied warranty of 15 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 : GNU General Public License for more details. 17 : 18 : You should have received a copy of the GNU General Public License 19 : along with this program. If not, see <http://www.gnu.org/licenses/>. 20 : */ 21 : 22 : #include "includes.h" 23 : #include "../librpc/gen_ndr/ndr_ODJ.h" 24 : #include "../librpc/ndr/ndr_ODJ.h" 25 : 26 3176 : uint32_t odj_switch_level_from_guid(const struct GUID *r) 27 : { 28 8 : struct { 29 : uint16_t level; 30 : const char *guid; 31 3176 : } levels[] = { 32 : { 33 : .level = 1, 34 : .guid = ODJ_GUID_JOIN_PROVIDER 35 : },{ 36 : .level = 2, 37 : .guid = ODJ_GUID_JOIN_PROVIDER2 38 : },{ 39 : .level = 3, 40 : .guid = ODJ_GUID_JOIN_PROVIDER3 41 : },{ 42 : .level = 4, 43 : .guid = ODJ_GUID_CERT_PROVIDER 44 : },{ 45 : .level = 5, 46 : .guid = ODJ_GUID_POLICY_PROVIDER 47 : } 48 : }; 49 8 : int i; 50 : 51 6352 : for (i = 0; i < ARRAY_SIZE(levels); i++) { 52 16 : struct GUID guid; 53 16 : NTSTATUS status; 54 : 55 6352 : status = GUID_from_string(levels[i].guid, &guid); 56 6352 : if (!NT_STATUS_IS_OK(status)) { 57 3176 : return 0; 58 : } 59 6352 : if (GUID_equal(&guid, r)) { 60 3176 : return levels[i].level; 61 : } 62 : } 63 : 64 0 : return 0; 65 : }