1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
  23  * Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
  24  */
  25 
  26 #ifndef _SMBSRV_MLSVC_H
  27 #define _SMBSRV_MLSVC_H
  28 
  29 #include <smbsrv/smb_share.h>
  30 #include <smbsrv/ndl/netlogon.ndl>
  31 
  32 #ifdef __cplusplus
  33 extern "C" {
  34 #endif
  35 
  36 struct netr_info;
  37 
  38 int smb_dclocator_init(void);
  39 void smbrdr_initialize(void);
  40 void dssetup_initialize(void);
  41 void srvsvc_initialize(void);
  42 void wkssvc_initialize(void);
  43 void lsarpc_initialize(void);
  44 void logr_initialize(void);
  45 void netr_initialize(void);
  46 void samr_initialize(void);
  47 void svcctl_initialize(void);
  48 void winreg_initialize(void);
  49 int srvsvc_gettime(unsigned long *);
  50 void msgsvcsend_initialize(void);
  51 void spoolss_initialize(void);
  52 void netdfs_initialize(void);
  53 
  54 void logr_finalize(void);
  55 void svcctl_finalize(void);
  56 void spoolss_finalize(void);
  57 void netdfs_finalize(void);
  58 
  59 /* netr_auth.c */
  60 DWORD netr_open(char *, char *, mlsvc_handle_t *);
  61 int netr_close(mlsvc_handle_t *);
  62 DWORD netlogon_auth(char *, mlsvc_handle_t *, DWORD);
  63 int netr_setup_authenticator(struct netr_info *, struct netr_authenticator *,
  64     struct netr_authenticator *);
  65 DWORD netr_validate_chain(struct netr_info *, struct netr_authenticator *);
  66 
  67 void ndr_srvsvc_timecheck(char *, char *);
  68 
  69 /* Generic functions to get/set windows Security Descriptors */
  70 uint32_t srvsvc_sd_get(smb_share_t *, uint8_t *, uint32_t *);
  71 uint32_t srvsvc_sd_set(smb_share_t *, uint8_t *);
  72 
  73 uint32_t smb_logon_init(void);
  74 void smb_logon_fini(void);
  75 
  76 /* Locking for process-wide settings (i.e. privileges) */
  77 void smb_proc_initsem(void);    /* init (or re-init in child) */
  78 int  smb_proc_takesem(void);    /* parent before */
  79 void smb_proc_givesem(void);    /* parent after */
  80 
  81 /* Quota */
  82 void smb_quota_init(void);
  83 void smb_quota_fini(void);
  84 void smb_quota_add_fs(const char *);
  85 void smb_quota_remove_fs(const char *);
  86 
  87 uint32_t smb_ddiscover_main(char *, smb_domainex_t *);
  88 
  89 #ifdef __cplusplus
  90 }
  91 #endif
  92 #endif /* _SMBSRV_MLSVC_H */