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