1*8d7e4166Sjose borrego /* 2*8d7e4166Sjose borrego * CDDL HEADER START 3*8d7e4166Sjose borrego * 4*8d7e4166Sjose borrego * The contents of this file are subject to the terms of the 5*8d7e4166Sjose borrego * Common Development and Distribution License (the "License"). 6*8d7e4166Sjose borrego * You may not use this file except in compliance with the License. 7*8d7e4166Sjose borrego * 8*8d7e4166Sjose borrego * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*8d7e4166Sjose borrego * or http://www.opensolaris.org/os/licensing. 10*8d7e4166Sjose borrego * See the License for the specific language governing permissions 11*8d7e4166Sjose borrego * and limitations under the License. 12*8d7e4166Sjose borrego * 13*8d7e4166Sjose borrego * When distributing Covered Code, include this CDDL HEADER in each 14*8d7e4166Sjose borrego * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*8d7e4166Sjose borrego * If applicable, add the following below this CDDL HEADER, with the 16*8d7e4166Sjose borrego * fields enclosed by brackets "[]" replaced with your own identifying 17*8d7e4166Sjose borrego * information: Portions Copyright [yyyy] [name of copyright owner] 18*8d7e4166Sjose borrego * 19*8d7e4166Sjose borrego * CDDL HEADER END 20*8d7e4166Sjose borrego */ 21*8d7e4166Sjose borrego /* 22*8d7e4166Sjose borrego * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 23*8d7e4166Sjose borrego * Use is subject to license terms. 24*8d7e4166Sjose borrego */ 25*8d7e4166Sjose borrego 26*8d7e4166Sjose borrego #ifndef _SMBSRV_SAMLIB_H 27*8d7e4166Sjose borrego #define _SMBSRV_SAMLIB_H 28*8d7e4166Sjose borrego 29*8d7e4166Sjose borrego /* 30*8d7e4166Sjose borrego * Prototypes for the SAM library and RPC client side library interface. 31*8d7e4166Sjose borrego * There are two levels of interface defined here: sam_xxx and samr_xxx. 32*8d7e4166Sjose borrego * The sam_xxx functions provide a high level interface which make 33*8d7e4166Sjose borrego * multiple RPC calls and do all the work necessary to obtain and return 34*8d7e4166Sjose borrego * the requested information. The samr_xxx functions provide a low level 35*8d7e4166Sjose borrego * interface in which each function maps to a single underlying RPC. 36*8d7e4166Sjose borrego */ 37*8d7e4166Sjose borrego 38*8d7e4166Sjose borrego #include <smbsrv/ndl/samrpc.ndl> 39*8d7e4166Sjose borrego 40*8d7e4166Sjose borrego 41*8d7e4166Sjose borrego #ifdef __cplusplus 42*8d7e4166Sjose borrego extern "C" { 43*8d7e4166Sjose borrego #endif 44*8d7e4166Sjose borrego 45*8d7e4166Sjose borrego /* 46*8d7e4166Sjose borrego * Account Control Flags 47*8d7e4166Sjose borrego * Use in SAMR Query Display Information RPC 48*8d7e4166Sjose borrego */ 49*8d7e4166Sjose borrego #define ACF_DISABLED 0x001 /* account disable */ 50*8d7e4166Sjose borrego #define ACF_HOMEDIRREQ 0x002 /* home dir required */ 51*8d7e4166Sjose borrego #define ACF_PWDNOTREQ 0x004 /* password not required */ 52*8d7e4166Sjose borrego #define ACF_TEMPDUP 0x008 /* temp dup account */ 53*8d7e4166Sjose borrego #define ACF_NORMUSER 0x010 /* normal user */ 54*8d7e4166Sjose borrego #define ACF_MNS 0x020 /* MNS account */ 55*8d7e4166Sjose borrego #define ACF_DOMTRUST 0x040 /* Domain trust acct */ 56*8d7e4166Sjose borrego #define ACF_WSTRUST 0x080 /* WKST trust acct */ 57*8d7e4166Sjose borrego #define ACF_SVRTRUST 0x100 /* Server trust acct */ 58*8d7e4166Sjose borrego #define ACF_PWDNOEXP 0x200 /* password no expire */ 59*8d7e4166Sjose borrego #define ACF_AUTOLOCK 0x400 /* acct auto lock */ 60*8d7e4166Sjose borrego 61*8d7e4166Sjose borrego /* 62*8d7e4166Sjose borrego * samlib.c 63*8d7e4166Sjose borrego */ 64*8d7e4166Sjose borrego int sam_lookup_user_info(char *server, char *domain_name, char *username, 65*8d7e4166Sjose borrego smb_userinfo_t *user_info); 66*8d7e4166Sjose borrego 67*8d7e4166Sjose borrego DWORD sam_create_trust_account(char *server, char *domain, 68*8d7e4166Sjose borrego smb_auth_info_t *auth); 69*8d7e4166Sjose borrego 70*8d7e4166Sjose borrego DWORD sam_create_account(char *server, char *domain_name, char *account_name, 71*8d7e4166Sjose borrego smb_auth_info_t *auth, DWORD account_flags); 72*8d7e4166Sjose borrego 73*8d7e4166Sjose borrego DWORD sam_remove_trust_account(char *server, char *domain); 74*8d7e4166Sjose borrego 75*8d7e4166Sjose borrego DWORD sam_delete_account(char *server, char *domain_name, char *account_name); 76*8d7e4166Sjose borrego 77*8d7e4166Sjose borrego DWORD sam_lookup_name(char *server, char *domain_name, char *account_name, 78*8d7e4166Sjose borrego DWORD *rid_ret); 79*8d7e4166Sjose borrego 80*8d7e4166Sjose borrego DWORD sam_get_local_domains(char *server, char *domain_name); 81*8d7e4166Sjose borrego DWORD sam_check_user(char *server, char *domain_name, char *account_name); 82*8d7e4166Sjose borrego 83*8d7e4166Sjose borrego /* 84*8d7e4166Sjose borrego * samr_open.c 85*8d7e4166Sjose borrego */ 86*8d7e4166Sjose borrego int samr_open(char *server, char *domain, char *username, 87*8d7e4166Sjose borrego DWORD access_mask, mlsvc_handle_t *samr_handle); 88*8d7e4166Sjose borrego 89*8d7e4166Sjose borrego int samr_connect(char *server, char *domain, char *username, 90*8d7e4166Sjose borrego DWORD access_mask, mlsvc_handle_t *samr_handle); 91*8d7e4166Sjose borrego 92*8d7e4166Sjose borrego int samr_close_handle(mlsvc_handle_t *handle); 93*8d7e4166Sjose borrego 94*8d7e4166Sjose borrego DWORD samr_open_domain(mlsvc_handle_t *samr_handle, DWORD access_mask, 95*8d7e4166Sjose borrego struct samr_sid *sid, mlsvc_handle_t *domain_handle); 96*8d7e4166Sjose borrego 97*8d7e4166Sjose borrego DWORD samr_open_user(mlsvc_handle_t *domain_handle, DWORD access_mask, 98*8d7e4166Sjose borrego DWORD rid, mlsvc_handle_t *user_handle); 99*8d7e4166Sjose borrego 100*8d7e4166Sjose borrego DWORD samr_delete_user(mlsvc_handle_t *user_handle); 101*8d7e4166Sjose borrego 102*8d7e4166Sjose borrego int samr_open_group(mlsvc_handle_t *domain_handle, DWORD rid, 103*8d7e4166Sjose borrego mlsvc_handle_t *group_handle); 104*8d7e4166Sjose borrego 105*8d7e4166Sjose borrego DWORD samr_create_user(mlsvc_handle_t *domain_handle, char *username, 106*8d7e4166Sjose borrego DWORD account_flags, DWORD *rid, mlsvc_handle_t *user_handle); 107*8d7e4166Sjose borrego 108*8d7e4166Sjose borrego /* 109*8d7e4166Sjose borrego * samr_lookup.c 110*8d7e4166Sjose borrego */ 111*8d7e4166Sjose borrego union samr_user_info { 112*8d7e4166Sjose borrego struct info1 { 113*8d7e4166Sjose borrego char *username; 114*8d7e4166Sjose borrego char *fullname; 115*8d7e4166Sjose borrego DWORD group_rid; 116*8d7e4166Sjose borrego char *description; 117*8d7e4166Sjose borrego char *unknown; 118*8d7e4166Sjose borrego } info1; 119*8d7e4166Sjose borrego 120*8d7e4166Sjose borrego struct info6 { 121*8d7e4166Sjose borrego char *username; 122*8d7e4166Sjose borrego char *fullname; 123*8d7e4166Sjose borrego } info6; 124*8d7e4166Sjose borrego 125*8d7e4166Sjose borrego struct info7 { 126*8d7e4166Sjose borrego char *username; 127*8d7e4166Sjose borrego } info7; 128*8d7e4166Sjose borrego 129*8d7e4166Sjose borrego struct info8 { 130*8d7e4166Sjose borrego char *fullname; 131*8d7e4166Sjose borrego } info8; 132*8d7e4166Sjose borrego 133*8d7e4166Sjose borrego struct info9 { 134*8d7e4166Sjose borrego DWORD group_rid; 135*8d7e4166Sjose borrego } info9; 136*8d7e4166Sjose borrego 137*8d7e4166Sjose borrego struct info16 { 138*8d7e4166Sjose borrego DWORD unknown; 139*8d7e4166Sjose borrego } info16; 140*8d7e4166Sjose borrego }; 141*8d7e4166Sjose borrego 142*8d7e4166Sjose borrego 143*8d7e4166Sjose borrego int samr_lookup_domain(mlsvc_handle_t *samr_handle, char *domain_name, 144*8d7e4166Sjose borrego smb_userinfo_t *user_info); 145*8d7e4166Sjose borrego 146*8d7e4166Sjose borrego DWORD samr_enum_local_domains(mlsvc_handle_t *samr_handle); 147*8d7e4166Sjose borrego 148*8d7e4166Sjose borrego DWORD samr_lookup_domain_names(mlsvc_handle_t *domain_handle, char *name, 149*8d7e4166Sjose borrego smb_userinfo_t *user_info); 150*8d7e4166Sjose borrego 151*8d7e4166Sjose borrego int samr_query_user_info(mlsvc_handle_t *user_handle, WORD switch_value, 152*8d7e4166Sjose borrego union samr_user_info *user_info); 153*8d7e4166Sjose borrego 154*8d7e4166Sjose borrego int samr_query_user_groups(mlsvc_handle_t *user_handle, 155*8d7e4166Sjose borrego smb_userinfo_t *user_info); 156*8d7e4166Sjose borrego 157*8d7e4166Sjose borrego DWORD samr_get_user_pwinfo(mlsvc_handle_t *user_handle); 158*8d7e4166Sjose borrego 159*8d7e4166Sjose borrego typedef struct oem_password { 160*8d7e4166Sjose borrego BYTE data[512]; 161*8d7e4166Sjose borrego DWORD length; 162*8d7e4166Sjose borrego } oem_password_t; 163*8d7e4166Sjose borrego 164*8d7e4166Sjose borrego 165*8d7e4166Sjose borrego int sam_oem_password(oem_password_t *oem_password, unsigned char *new_password, 166*8d7e4166Sjose borrego unsigned char *old_password); 167*8d7e4166Sjose borrego 168*8d7e4166Sjose borrego #ifdef __cplusplus 169*8d7e4166Sjose borrego } 170*8d7e4166Sjose borrego #endif 171*8d7e4166Sjose borrego 172*8d7e4166Sjose borrego 173*8d7e4166Sjose borrego #endif /* _SMBSRV_SAMLIB_H */ 174