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 0 : uint32_t odj_switch_level_from_guid(const struct GUID *r)
27 : {
28 : struct {
29 : uint16_t level;
30 : const char *guid;
31 0 : } 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 : int i;
50 :
51 0 : for (i = 0; i < ARRAY_SIZE(levels); i++) {
52 : struct GUID guid;
53 : NTSTATUS status;
54 :
55 0 : status = GUID_from_string(levels[i].guid, &guid);
56 0 : if (!NT_STATUS_IS_OK(status)) {
57 0 : return 0;
58 : }
59 0 : if (GUID_equal(&guid, r)) {
60 0 : return levels[i].level;
61 : }
62 : }
63 :
64 0 : return 0;
65 : }
|