summaryrefslogtreecommitdiff
path: root/source4/librpc/idl/winbind.idl
blob: 73e725bb9835c936a9529f1628e16de59de75244 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/*
  winbind IRPC interface
*/

#include "idl_types.h"

import "netlogon.idl", "lsa.idl", "security.idl";

[
  uuid("245f3e6b-3c5d-6e21-3a2d-2a3d645b7221"),
  version(1.0),
  pointer_default(unique)
]
interface winbind
{
	typedef [switch_type(uint16)] union netr_LogonLevel netr_LogonLevel;
	typedef [switch_type(uint16)] union netr_Validation netr_Validation;

	typedef enum {
		ID_TYPE_NOT_SPECIFIED,
		ID_TYPE_UID,
		ID_TYPE_GID,
		ID_TYPE_BOTH
	} id_type;

	typedef struct {
		uint32 id;
		id_type type;
	} unixid;

	typedef enum {
		ID_UNKNOWN,
		ID_MAPPED,
		ID_UNMAPPED,
		ID_EXPIRED
	} id_mapping;

	typedef struct {
		unixid *unixid;
		dom_sid *sid;
		id_mapping status;
	} id_map;

	/* a call to get runtime informations */
	void winbind_information(/* TODO */);

	/* 
	 * a call to trigger some internal events,
	 * for use in torture tests...
	 */
	NTSTATUS winbind_remote_control(/* TODO */);

	/*
	 * do a netr_LogonSamLogon() against the right DC
	 */
	NTSTATUS winbind_SamLogon(
		[in]  uint16 logon_level,
		[in]  [switch_is(logon_level)] netr_LogonLevel logon,
		[in]  uint16 validation_level,
		[out] [switch_is(validation_level)] netr_Validation validation,
		[out] uint8 authoritative
	);

	typedef [v1_enum] enum {
		WINBIND_IDMAP_LEVEL_SIDS_TO_XIDS	= 1,
		WINBIND_IDMAP_LEVEL_XIDS_TO_SIDS	= 2
	} winbind_get_idmap_level;

	NTSTATUS winbind_get_idmap(
		[in]     winbind_get_idmap_level level,
		[in]     uint32 count,
		[in,out] [size_is(count)] id_map ids[]
	);

}