xref: /illumos-gate/usr/src/uts/common/smbsrv/smb_door.h (revision 9fb67ea305c66b6a297583b9b0db6796b0dfe497)
1*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
2*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * CDDL HEADER START
3*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
4*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * The contents of this file are subject to the terms of the
5*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Common Development and Distribution License (the "License").
6*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * You may not use this file except in compliance with the License.
7*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
8*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * or http://www.opensolaris.org/os/licensing.
10*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * See the License for the specific language governing permissions
11*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * and limitations under the License.
12*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
13*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * When distributing Covered Code, include this CDDL HEADER in each
14*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * If applicable, add the following below this CDDL HEADER, with the
16*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * fields enclosed by brackets "[]" replaced with your own identifying
17*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * information: Portions Copyright [yyyy] [name of copyright owner]
18*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
19*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * CDDL HEADER END
20*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
21*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
22*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
23*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Use is subject to license terms.
24*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
25*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
26*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #ifndef _SMBSRV_SMB_DOOR_H
27*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	_SMBSRV_SMB_DOOR_H
28*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
29*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <sys/door.h>
30*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <smbsrv/wintypes.h>
31*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <smbsrv/smb_xdr.h>
32*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <smbsrv/smb_token.h>
33*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
34*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #ifdef __cplusplus
35*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States extern "C" {
36*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #endif
37*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
38*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMBD_DOOR_NAME			"/var/run/smbd_door"
39*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
40*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_DOOR_CALL_RETRIES		3
41*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
42*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
43*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Opcodes for smbd door.
44*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
45*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * SMB_DR_NULL is the equivalent of the NULL RPC.  It ensures that an
46*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * opcode of zero is not misinterpreted as an operational door call
47*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * and it is available as a test interface.
48*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
49*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * SMB_DR_ASYNC_RESPONSE delivers the response part of an asynchronous
50*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * request and must be processed as a synchronous request.
51*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
52*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef enum smb_dopcode {
53*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_DR_NULL = 0,
54*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_DR_ASYNC_RESPONSE,
55*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_DR_USER_AUTH_LOGON,
56*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_DR_USER_NONAUTH_LOGON,
57*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_DR_USER_AUTH_LOGOFF,
58*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_DR_LOOKUP_SID,
59*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_DR_LOOKUP_NAME,
60*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_DR_JOIN,
61*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_DR_GET_DCINFO,
62*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_DR_VSS_GET_COUNT,
63*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_DR_VSS_GET_SNAPSHOTS,
64*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_DR_VSS_MAP_GMTTOKEN,
65*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_DR_ADS_FIND_HOST,
66*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_DR_QUOTA_QUERY,
67*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_DR_QUOTA_SET,
68*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_DR_DFS_GET_REFERRALS
69*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_dopcode_t;
70*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
71*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States struct smb_event;
72*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
73*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_doorarg {
74*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	smb_doorhdr_t		da_hdr;
75*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	door_arg_t		da_arg;
76*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdrproc_t		da_req_xdr;
77*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdrproc_t		da_rsp_xdr;
78*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	void			*da_req_data;
79*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	void			*da_rsp_data;
80*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	smb_dopcode_t		da_opcode;
81*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	const char		*da_opname;
82*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	struct smb_event	*da_event;
83*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t		da_flags;
84*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_doorarg_t;
85*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
86*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
87*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Door call return codes.
88*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
89*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_DOP_SUCCESS			0
90*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_DOP_NOT_CALLED		1
91*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_DOP_DECODE_ERROR		2
92*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_DOP_ENCODE_ERROR		3
93*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_DOP_EMPTYBUF		4
94*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
95*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #ifndef _KERNEL
96*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States char *smb_common_encode(void *, xdrproc_t, size_t *);
97*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int smb_common_decode(char *, size_t, xdrproc_t, void *);
98*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States char *smb_string_encode(char *, size_t *);
99*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int smb_string_decode(smb_string_t *, char *, size_t);
100*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #endif /* _KERNEL */
101*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
102*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_dr_ctx {
103*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char *ptr;
104*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char *start_ptr;
105*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char *end_ptr;
106*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int status;
107*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_dr_ctx_t;
108*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
109*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_dr_ctx_t *smb_dr_decode_start(char *, int);
110*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int smb_dr_decode_finish(smb_dr_ctx_t *);
111*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
112*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_dr_ctx_t *smb_dr_encode_start(char *, int);
113*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int smb_dr_encode_finish(smb_dr_ctx_t *, unsigned int *);
114*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
115*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int32_t smb_dr_get_int32(smb_dr_ctx_t *);
116*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States DWORD smb_dr_get_dword(smb_dr_ctx_t *);
117*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t smb_dr_get_uint32(smb_dr_ctx_t *);
118*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int64_t smb_dr_get_int64(smb_dr_ctx_t *);
119*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint64_t smb_dr_get_uint64(smb_dr_ctx_t *);
120*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States unsigned short smb_dr_get_ushort(smb_dr_ctx_t *);
121*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
122*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States void smb_dr_put_int32(smb_dr_ctx_t *, int32_t);
123*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States void smb_dr_put_dword(smb_dr_ctx_t *, DWORD);
124*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States void smb_dr_put_uint32(smb_dr_ctx_t *, uint32_t);
125*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States void smb_dr_put_int64(smb_dr_ctx_t *, int64_t);
126*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States void smb_dr_put_uint64(smb_dr_ctx_t *, uint64_t);
127*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States void smb_dr_put_ushort(smb_dr_ctx_t *, unsigned short);
128*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
129*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States char *smb_dr_get_string(smb_dr_ctx_t *);
130*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States void smb_dr_put_string(smb_dr_ctx_t *, const char *);
131*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States void smb_dr_free_string(char *);
132*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
133*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States void smb_dr_put_word(smb_dr_ctx_t *, WORD);
134*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States WORD smb_dr_get_word(smb_dr_ctx_t *);
135*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
136*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States void smb_dr_put_BYTE(smb_dr_ctx_t *, BYTE);
137*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States BYTE smb_dr_get_BYTE(smb_dr_ctx_t *);
138*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
139*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States void smb_dr_put_buf(smb_dr_ctx_t *, unsigned char *, int);
140*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int smb_dr_get_buf(smb_dr_ctx_t *, unsigned char *, int);
141*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
142*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #ifdef __cplusplus
143*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
144*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #endif
145*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
146*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #endif	/* _SMBSRV_SMB_DOOR_H */
147