diff usr/src/lib/smbsrv/libsmb/common/libsmb.h @ 10717:fe0545fc3cdd

6612607 CIFS ADS client should use ldap_sasl_interactive_bind_s API 6877755 smbd should not route stderr, stdout to /dev/null 6882701 Wrong error message for attempt to map local user to Windows group, or vice versa 6885105 Potential for deadlock in smb_node_set_delete_on_close() 6881928 smbd core generated when running a script to join domain, set abe properties 6885538 Reduce dependencies on libsmbrdr 6820325 cifs service can't start on multi vlan+ipmp configuration
author Alan Wright <amw@Sun.COM>
date Mon, 05 Oct 2009 11:03:34 -0700
parents 96eda55bfd54
children 37e5dcdf36d3
line wrap: on
line diff
--- a/usr/src/lib/smbsrv/libsmb/common/libsmb.h	Mon Oct 05 13:48:48 2009 -0400
+++ b/usr/src/lib/smbsrv/libsmb/common/libsmb.h	Mon Oct 05 11:03:34 2009 -0700
@@ -484,6 +484,16 @@
     unsigned char *, int, char *, char *, uchar_t *);
 
 /*
+ * SMB authenticated IPC
+ */
+extern void smb_ipc_commit(void);
+extern void smb_ipc_get_user(char *, size_t);
+extern void smb_ipc_get_passwd(uint8_t *, size_t);
+extern void smb_ipc_init(void);
+extern void smb_ipc_rollback(void);
+extern void smb_ipc_set(char *, uint8_t *);
+
+/*
  * SMB MAC Signing
  */
 
@@ -553,16 +563,16 @@
  * that the system joined. All other domains are either
  * trusted or untrusted, as defined by the primary domain PDC.
  */
-typedef enum nt_domain_type {
-	NT_DOMAIN_NULL,
-	NT_DOMAIN_BUILTIN,
-	NT_DOMAIN_LOCAL,
-	NT_DOMAIN_PRIMARY,
-	NT_DOMAIN_ACCOUNT,
-	NT_DOMAIN_TRUSTED,
-	NT_DOMAIN_UNTRUSTED,
-	NT_DOMAIN_NUM_TYPES
-} nt_domain_type_t;
+typedef enum smb_domain_type {
+	SMB_DOMAIN_NULL,
+	SMB_DOMAIN_BUILTIN,
+	SMB_DOMAIN_LOCAL,
+	SMB_DOMAIN_PRIMARY,
+	SMB_DOMAIN_ACCOUNT,
+	SMB_DOMAIN_TRUSTED,
+	SMB_DOMAIN_UNTRUSTED,
+	SMB_DOMAIN_NUM_TYPES
+} smb_domain_type_t;
 
 /*
  * Information specific to trusted domains
@@ -586,9 +596,9 @@
 /*
  * This is the information that is held about each domain.
  */
-typedef struct nt_domain {
+typedef struct smb_domain {
 	list_node_t		di_lnd;
-	nt_domain_type_t	di_type;
+	smb_domain_type_t	di_type;
 	char			di_sid[SMB_SID_STRSZ];
 	char			di_nbname[NETBIOS_NAME_SZ];
 	char			di_fqname[MAXHOSTNAMELEN];
@@ -597,11 +607,11 @@
 		smb_domain_dns_t	di_dns;
 		smb_domain_trust_t	di_trust;
 	} di_u;
-} nt_domain_t;
+} smb_domain_t;
 
 typedef struct smb_trusted_domains {
 	uint32_t	td_num;
-	nt_domain_t	*td_domains;
+	smb_domain_t	*td_domains;
 } smb_trusted_domains_t;
 
 #define	SMB_DOMAIN_SUCCESS		0
@@ -611,29 +621,38 @@
 #define	SMB_DOMAIN_INTERNAL_ERR		4
 #define	SMB_DOMAIN_INVALID_ARG		5
 #define	SMB_DOMAIN_NO_MEMORY		6
+#define	SMB_DOMAIN_NO_CACHE		7
 
-typedef struct smb_domain {
+/*
+ * This structure could contain information about
+ * the primary domain the name of selected domain controller
+ * for the primary domain and a list of trusted domains if
+ * any. The "ex" in the structure name stands for extended.
+ * This is to differentiate this structure from smb_domain_t
+ * which only contains information about a single domain.
+ */
+typedef struct smb_domainex {
 	char			d_dc[MAXHOSTNAMELEN];
-	nt_domain_t		d_info;
+	smb_domain_t		d_primary;
 	smb_trusted_domains_t	d_trusted;
-} smb_domain_t;
+} smb_domainex_t;
 
-int nt_domain_init(uint32_t);
-void nt_domain_fini(void);
-void nt_domain_show(void);
-void nt_domain_save(void);
-boolean_t nt_domain_lookup_name(char *, nt_domain_t *);
-boolean_t nt_domain_lookup_sid(smb_sid_t *, nt_domain_t *);
-boolean_t nt_domain_lookup_type(nt_domain_type_t, nt_domain_t *);
-boolean_t nt_domain_get_primary(smb_domain_t *);
-void nt_domain_update(smb_domain_t *);
-void nt_domain_start_update(void);
-void nt_domain_end_update(void);
-void nt_domain_set_basic_info(char *, char *, char *, nt_domain_t *);
-void nt_domain_set_dns_info(char *, char *, char *, char *, char *,
-    nt_domain_t *);
-void nt_domain_set_trust_info(char *, char *, char *,
-    uint32_t, uint32_t, uint32_t, nt_domain_t *);
+int smb_domain_init(uint32_t);
+void smb_domain_fini(void);
+void smb_domain_show(void);
+void smb_domain_save(void);
+boolean_t smb_domain_lookup_name(char *, smb_domain_t *);
+boolean_t smb_domain_lookup_sid(smb_sid_t *, smb_domain_t *);
+boolean_t smb_domain_lookup_type(smb_domain_type_t, smb_domain_t *);
+boolean_t smb_domain_getinfo(smb_domainex_t *);
+void smb_domain_update(smb_domainex_t *);
+uint32_t smb_domain_start_update(void);
+void smb_domain_end_update(void);
+void smb_domain_set_basic_info(char *, char *, char *, smb_domain_t *);
+void smb_domain_set_dns_info(char *, char *, char *, char *, char *,
+    smb_domain_t *);
+void smb_domain_set_trust_info(char *, char *, char *,
+    uint32_t, uint32_t, uint32_t, smb_domain_t *);
 
 typedef enum {
 	SMB_LGRP_BUILTIN = 1,
@@ -823,7 +842,7 @@
 uint32_t smb_sam_lookup_sid(smb_sid_t *, smb_account_t *);
 int smb_sam_usr_cnt(void);
 uint32_t smb_sam_usr_groups(smb_sid_t *, smb_ids_t *);
-int smb_sam_grp_cnt(nt_domain_type_t);
+int smb_sam_grp_cnt(smb_domain_type_t);
 void smb_account_free(smb_account_t *);
 boolean_t smb_account_validate(smb_account_t *);