diff options
author | as200622 <none@none> | 2008-01-05 20:52:22 -0800 |
---|---|---|
committer | as200622 <none@none> | 2008-01-05 20:52:22 -0800 |
commit | dc20a3024900c47dd2ee44b9707e6df38f7d62a5 (patch) | |
tree | e0957e6b6d6b5c0117800046c765b78d69f80ce1 /usr/src/lib/smbsrv/libsmb/common/libsmb.h | |
parent | bda89588bd7667394a834e8a9a34612cce2ae9c3 (diff) | |
download | illumos-gate-dc20a3024900c47dd2ee44b9707e6df38f7d62a5.tar.gz |
6560095 SNAS shows SIDs for Built-in Groups members instead of name
6582153 SMB signing and sealing (redirector)
6582192 Remove SMB config cache
6582210 Consistent Logging Strategy
6582214 Unified error reporting strategy
6593360 Confusing log message: [ID 334764 user.error] Ads is not enable
6597854 The shares are not accessible if doing Run \\ip-addr
6610587 RPC-WINREG test has failed on smbtorture.
6610650 Workgroup: authentication problem when client's LM level > 2
6611277 Should not be able to join domain when Snas ipc-mode=anon and W2K DC IPC=No access without anonymous
6613675 Creating a file with DOS readonly bit set requires special handling
6626113 libshare_smb leaks file descriptor on unload
6626119 libshare_smb leaks file descriptor on door call failure
6626126 libsmb configuration leaks memory
6629314 smbd logging forgets newlines, creating a mess
6629954 smb local group support should be re-enabled
6630424 libshare having trouble starting smb/server
6631739 rdr_ipcmode does change to "Fallback,anon".
6631985 SMB daemon doesn't locate a new ADS server if ads_site property has been modified.
6631987 SMB daemon reads /etc/resolv.conf once when it starts up.
6633202 smbfs client caused CIFS server panic
6635175 lint error reported when building smbsrv module when either mars or ceres lint was used
6636763 Get core if using sharemgr set-share -r with nonexistent share
6640934 libshare tries to enable smb service if any filesystem is shared over smb
6641051 The CIFS server needs to use the VFS nbmand mechanism for system-wide share reservations
6642047 Changes to SMF properties of the CIFS service - PSARC/2007/686
6642302 Do not add null when marshalling non-null-terminated NDR strings
6642368 Cross protocol byte range locking is needed
--HG--
rename : usr/src/lib/smbsrv/libmlsvc/common/mlsvc_handle.c => deleted_files/usr/src/lib/smbsrv/libmlsvc/common/mlsvc_handle.c
rename : usr/src/lib/smbsrv/libsmb/common/smb_group_door_encdec.c => deleted_files/usr/src/lib/smbsrv/libsmb/common/smb_group_door_encdec.c
rename : usr/src/lib/smbsrv/libsmb/common/smb_group_xdr.c => deleted_files/usr/src/lib/smbsrv/libsmb/common/smb_group_xdr.c
rename : usr/src/lib/smbsrv/libmlrpc/common/mlrpc_client.c => usr/src/lib/smbsrv/libmlrpc/common/ndr_client.c
rename : usr/src/lib/smbsrv/libmlrpc/common/mlrpc_heap.c => usr/src/lib/smbsrv/libmlrpc/common/ndr_heap.c
rename : usr/src/lib/smbsrv/libmlrpc/common/mlrpc_encdec.c => usr/src/lib/smbsrv/libmlrpc/common/ndr_marshal.c
rename : usr/src/lib/smbsrv/libmlrpc/common/mlndo.c => usr/src/lib/smbsrv/libmlrpc/common/ndr_ops.c
rename : usr/src/lib/smbsrv/libmlrpc/common/mlndr.c => usr/src/lib/smbsrv/libmlrpc/common/ndr_process.c
rename : usr/src/lib/smbsrv/libmlrpc/common/mlrpc_server.c => usr/src/lib/smbsrv/libmlrpc/common/ndr_server.c
rename : usr/src/lib/smbsrv/libmlrpc/common/mlrpc_svc.c => usr/src/lib/smbsrv/libmlrpc/common/ndr_svc.c
Diffstat (limited to 'usr/src/lib/smbsrv/libsmb/common/libsmb.h')
-rw-r--r-- | usr/src/lib/smbsrv/libsmb/common/libsmb.h | 333 |
1 files changed, 112 insertions, 221 deletions
diff --git a/usr/src/lib/smbsrv/libsmb/common/libsmb.h b/usr/src/lib/smbsrv/libsmb/common/libsmb.h index 510f68c20d..50a3c3d989 100644 --- a/usr/src/lib/smbsrv/libsmb/common/libsmb.h +++ b/usr/src/lib/smbsrv/libsmb/common/libsmb.h @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -34,11 +34,14 @@ extern "C" { #include <sys/types.h> #include <arpa/inet.h> +#include <netdb.h> #include <stdlib.h> #include <libscf.h> #include <libshare.h> +#include <sqlite/sqlite.h> +#include <smbsrv/string.h> #include <smbsrv/smb_idmap.h> /* @@ -67,7 +70,6 @@ extern "C" { /* Max value length of all SMB properties */ #define MAX_VALUE_BUFLEN 512 -#define SMB_PI_MAX_DOMAIN_U 48 #define SMBD_FMRI_PREFIX "network/smb/server" #define SMBD_DEFAULT_INSTANCE_FMRI "svc:/network/smb/server:default" @@ -78,6 +80,7 @@ extern "C" { #define SMBD_SMF_NO_MEMORY 1 /* no memory for data structures */ #define SMBD_SMF_SYSTEM_ERR 2 /* system error, use errno */ #define SMBD_SMF_NO_PERMISSION 3 /* no permission for operation */ +#define SMBD_SMF_INVALID_ARG 4 #define SCH_STATE_UNINIT 0 #define SCH_STATE_INITIALIZING 1 @@ -99,72 +102,8 @@ typedef struct smb_scfhandle { /* * CIFS Configuration Management */ - -/* macros for the description of all config params */ -#define SMB_CD_RDR_IPCMODE "rdr_ipcmode" -#define SMB_CD_RDR_IPCUSER "rdr_ipcuser" -#define SMB_CD_RDR_IPCPWD "rdr_ipcpasswd" - -#define SMB_CD_OPLOCK_ENABLE "oplock_enable" -#define SMB_CD_OPLOCK_TIMEOUT "oplock_timeout" - -#define SMB_CD_AUTOHOME_MAP "autohome_map" - -#define SMB_CD_DOMAIN_SID "domain_sid" -#define SMB_CD_DOMAIN_MEMB "domain_member" -#define SMB_CD_DOMAIN_NAME "domain_name" -#define SMB_CD_DOMAIN_SRV "pdc" - -#define SMB_CD_WINS_SRV1 "wins_server_1" -#define SMB_CD_WINS_SRV2 "wins_server_2" -#define SMB_CD_WINS_EXCL "wins_exclude" - -#define SMB_CD_SRVSVC_SHRSET_ENABLE "srvsvc_sharesetinfo_enable" -#define SMB_CD_LOGR_ENABLE "logr_enable" -#define SMB_CD_MLRPC_KALIVE "mlrpc_keep_alive_interval" - -#define SMB_CD_MAX_BUFSIZE "max_bufsize" -#define SMB_CD_MAX_WORKERS "max_workers" -#define SMB_CD_MAX_CONNECTIONS "max_connections" -#define SMB_CD_KEEPALIVE "keep_alive" -#define SMB_CD_RESTRICT_ANON "restrict_anonymous" - -#define SMB_CD_SIGNING_ENABLE "signing_enabled" -#define SMB_CD_SIGNING_REQD "signing_required" -#define SMB_CD_SIGNING_CHECK "signing_check" - -#define SMB_CD_FLUSH_REQUIRED "flush_required" -#define SMB_CD_SYNC_ENABLE "sync_enable" -#define SMB_CD_DIRSYMLINK_DISABLE "dir_symlink_disable" -#define SMB_CD_ANNONCE_QUOTA "announce_quota" - -#define SMB_CD_SECURITY "security" -#define SMB_CD_NBSCOPE "netbios_scope" -#define SMB_CD_SYS_CMNT "system_comment" -#define SMB_CD_LM_LEVEL "lmauth_level" -#define SMB_CD_MSDCS_DISABLE "msdcs_disable" - -#define SMB_CD_ADS_ENABLE "ads_enable" -#define SMB_CD_ADS_USER "ads_user" -#define SMB_CD_ADS_PASSWD "ads_passwd" -#define SMB_CD_ADS_DOMAIN "ads_domain" -#define SMB_CD_ADS_USER_CONTAINER "ads_user_container" -#define SMB_CD_ADS_SITE "ads_site" -#define SMB_CD_ADS_IPLOOKUP "ads_ip_lookup" - -#define SMB_CD_DYNDNS_ENABLE "ddns_enable" -#define SMB_CD_DYNDNS_RETRY_COUNT "ddns_retry_cnt" -#define SMB_CD_DYNDNS_RETRY_SEC "ddns_retry_sec" - -#define SMB_CD_MACHINE_PASSWD "machine_passwd" - -/* configuration identifier */ typedef enum { - SMB_CI_RDR_IPCMODE = 0, - SMB_CI_RDR_IPCUSER, - SMB_CI_RDR_IPCPWD, - - SMB_CI_OPLOCK_ENABLE, + SMB_CI_OPLOCK_ENABLE = 0, SMB_CI_OPLOCK_TIMEOUT, SMB_CI_AUTOHOME_MAP, @@ -179,7 +118,6 @@ typedef enum { SMB_CI_WINS_EXCL, SMB_CI_SRVSVC_SHRSET_ENABLE, - SMB_CI_LOGR_ENABLE, SMB_CI_MLRPC_KALIVE, SMB_CI_MAX_BUFSIZE, @@ -201,19 +139,10 @@ typedef enum { SMB_CI_NBSCOPE, SMB_CI_SYS_CMNT, SMB_CI_LM_LEVEL, - SMB_CI_MSDCS_DISABLE, - SMB_CI_ADS_ENABLE, - SMB_CI_ADS_USER, - SMB_CI_ADS_PASSWD, - SMB_CI_ADS_DOMAIN, - SMB_CI_ADS_USER_CONTAINER, SMB_CI_ADS_SITE, - SMB_CI_ADS_IPLOOKUP, SMB_CI_DYNDNS_ENABLE, - SMB_CI_DYNDNS_RETRY_COUNT, - SMB_CI_DYNDNS_RETRY_SEC, SMB_CI_MACHINE_PASSWD, SMB_CI_MAX @@ -236,41 +165,20 @@ extern int smb_smf_set_opaque_property(smb_scfhandle_t *, char *, extern int smb_smf_get_opaque_property(smb_scfhandle_t *, char *, void *, size_t); extern int smb_smf_create_service_pgroup(smb_scfhandle_t *, char *); -extern int smb_smf_delete_service_pgroup(smb_scfhandle_t *, char *); -extern int smb_smf_create_instance_pgroup(smb_scfhandle_t *, char *); -extern int smb_smf_delete_instance_pgroup(smb_scfhandle_t *, char *); -extern int smb_smf_delete_property(smb_scfhandle_t *, char *); -extern int smb_smf_instance_exists(smb_scfhandle_t *, char *); -extern int smb_smf_instance_create(smb_scfhandle_t *, char *, char *); -extern int smb_smf_instance_delete(smb_scfhandle_t *, char *); -extern smb_scfhandle_t *smb_smf_get_iterator(char *); -extern int smb_smf_get_property(smb_scfhandle_t *, int, char *, char *, - size_t); -extern int smb_smf_set_property(smb_scfhandle_t *, int, char *, char *); /* Configuration management functions */ -extern int smb_config_load(void); -extern void smb_config_rdlock(void); -extern void smb_config_wrlock(void); -extern void smb_config_unlock(void); -extern char *smb_config_get(smb_cfg_id_t); -extern char *smb_config_getstr(smb_cfg_id_t); -extern int smb_config_getyorn(smb_cfg_id_t); -extern uint32_t smb_config_getnum(smb_cfg_id_t); - -/* - * smb_config_getenv - * - * Retrieves the property value from SMF. - * Caller must free the returned buffer. - * - */ -extern char *smb_config_getenv(smb_cfg_id_t id); +extern int smb_config_get(smb_cfg_id_t, char *, int); +extern char *smb_config_getname(smb_cfg_id_t); +extern int smb_config_getstr(smb_cfg_id_t, char *, int); +extern int smb_config_getnum(smb_cfg_id_t, int64_t *); +extern boolean_t smb_config_getbool(smb_cfg_id_t); extern int smb_config_set(smb_cfg_id_t, char *); -extern int smb_config_setnum(smb_cfg_id_t, uint32_t); +extern int smb_config_setstr(smb_cfg_id_t, char *); +extern int smb_config_setnum(smb_cfg_id_t, int64_t); +extern int smb_config_setbool(smb_cfg_id_t, boolean_t); + extern uint8_t smb_config_get_fg_flag(void); -extern int smb_config_setenv(smb_cfg_id_t id, char *); extern char *smb_config_get_localsid(void); extern int smb_config_secmode_fromstr(char *secmode); extern char *smb_config_secmode_tostr(int secmode); @@ -283,7 +191,7 @@ extern int smb_config_refresh(void); /* smb_door_client.c */ typedef struct smb_joininfo { - char domain_name[SMB_PI_MAX_DOMAIN]; + char domain_name[MAXHOSTNAMELEN]; char domain_username[BUF_LEN + 1]; char domain_passwd[BUF_LEN + 1]; uint32_t mode; @@ -293,10 +201,8 @@ typedef struct smb_joininfo { extern int smbd_set_param(smb_cfg_id_t, char *); extern int smbd_get_param(smb_cfg_id_t, char *); extern int smbd_get_security_mode(int *); -extern int smb_set_machine_pwd(char *); extern int smbd_netbios_reconfig(void); extern uint32_t smb_join(smb_joininfo_t *info); -extern int smb_ads_domain_change_notify(char *); #define SMB_DOMAIN_NOMACHINE_SID -1 @@ -317,22 +223,15 @@ extern int smb_wins_iplist(char *list, uint32_t iplist[], int max_naddr); * name of a controller (PDC or BDC) and it's ip address. */ typedef struct smb_ntdomain { - char domain[SMB_PI_MAX_DOMAIN_U]; - char server[SMB_PI_MAX_DOMAIN_U]; + char domain[SMB_PI_MAX_DOMAIN]; + char server[SMB_PI_MAX_DOMAIN]; uint32_t ipaddr; } smb_ntdomain_t; /* SMB domain information management functions */ -extern void smb_purge_domain_info(void); -extern int smb_is_domain_member(void); -extern uint8_t smb_get_fg_flag(void); -extern void smb_set_domain_member(int set); extern smb_ntdomain_t *smb_getdomaininfo(uint32_t timeout); extern void smb_setdomaininfo(char *domain, char *server, uint32_t ipaddr); extern void smb_logdomaininfo(smb_ntdomain_t *di); -extern uint32_t smb_get_security_mode(void); - -extern int nt_priv_presentable_num(void); /* * Following set of function, handle calls to SMB Kernel driver, via @@ -373,9 +272,12 @@ extern char *trim_whitespace(char *buf); extern void randomize(char *, unsigned); extern void rand_hash(unsigned char *, size_t, unsigned char *, size_t); +extern int smb_resolve_netbiosname(char *, char *, size_t); +extern int smb_resolve_fqdn(char *, char *, size_t); extern int smb_getdomainname(char *, size_t); -extern int smb_getfqhostname(char *, size_t); +extern int smb_getfqdomainname(char *, size_t); extern int smb_gethostname(char *, size_t, int); +extern int smb_getfqhostname(char *, size_t); extern int smb_getnetbiosname(char *, size_t); void smb_trace(const char *s); @@ -493,14 +395,6 @@ typedef struct smb_auth_info { smb_auth_data_blob_t data_blob; } smb_auth_info_t; -extern int smb_getdomainname(char *, size_t); -extern int smb_getfqhostname(char *, size_t); -extern int smb_gethostname(char *, size_t, int); -extern int smb_getnetbiosname(char *, size_t); - -void smb_trace(const char *s); -void smb_tracef(const char *fmt, ...); - /* * SMB password management */ @@ -567,9 +461,9 @@ extern int smb_auth_set_info(char *, char *, extern int smb_auth_gen_session_key(smb_auth_info_t *, unsigned char *); boolean_t smb_auth_validate_lm(unsigned char *, uint32_t, smb_passwd_t *, - unsigned char *, int, char *); + unsigned char *, int, char *, char *); boolean_t smb_auth_validate_nt(unsigned char *, uint32_t, smb_passwd_t *, - unsigned char *, int, char *); + unsigned char *, int, char *, char *); /* * SMB MAC Signing @@ -682,97 +576,94 @@ nt_domain_t *nt_domain_lookup_sid(nt_sid_t *domain_sid); nt_domain_t *nt_domain_lookupbytype(nt_domain_type_t type); nt_sid_t *nt_domain_local_sid(void); -#define SMB_GROUP_PER_LIST 5 - -/* - * This structure takes different args passed from the client/server routines - * of the SMB local group door service. Extend this structure if a new type - * client paramater needs to be passed. - */ -typedef struct ntgrp_dr_arg { - char *gname; - char *desc; - char *member; - char *newgname; - uint32_t privid; - uint32_t priv_attr; - int offset; - char *scope; - int type; - int count; - uint32_t ntstatus; -} ntgrp_dr_arg_t; - -typedef struct ntgrp { - DWORD rid; /* Rid of the group */ - char *name; /* Name of the group */ - char *desc; /* Desc of gruup */ - char *type; /* sid_name_use */ - char *sid; /* Sid */ - DWORD attr; /* Attribute */ -} ntgrp_t; - -typedef struct ntgrp_list { - int cnt; - ntgrp_t groups[SMB_GROUP_PER_LIST]; -} ntgrp_list_t; - -typedef char *members_list; -typedef struct ntgrp_member_list { - DWORD rid; /* Rid of the group in which members belong */ - int cnt; /* members */ - members_list members[SMB_GROUP_PER_LIST]; -} ntgrp_member_list_t; - -typedef struct ntpriv { - DWORD id; /* Id of priv */ - char *name; /* Name of priv */ -} ntpriv_t; -typedef ntpriv_t *privs_t; - -typedef struct ntpriv_list { - int cnt; /* Number of privs */ - privs_t privs[ANY_SIZE_ARRAY]; /* privs only presentable ones */ -} ntpriv_list_t; - - -/* the xdr functions */ -extern bool_t xdr_ntgrp_dr_arg_t(XDR *, ntgrp_dr_arg_t *); -extern bool_t xdr_ntgrp_t(XDR *, ntgrp_t *); -extern bool_t xdr_ntgrp_list_t(XDR *, ntgrp_list_t *); -extern bool_t xdr_members_list(XDR *, members_list *); -extern bool_t xdr_ntgrp_member_list_t(XDR *, ntgrp_member_list_t *); -extern bool_t xdr_ntpriv_t(XDR *, ntpriv_t *); -extern bool_t xdr_privs_t(XDR *, privs_t *); -extern bool_t xdr_ntpriv_list_t(XDR *, ntpriv_list_t *); - -extern void smb_group_free_memberlist(ntgrp_member_list_t *, int); -extern void smb_group_free_list(ntgrp_list_t *, int); -extern void smb_group_free_privlist(ntpriv_list_t *, int); - -extern uint32_t smb_group_add(char *, char *); -extern uint32_t smb_group_modify(char *, char *, char *); -extern uint32_t smb_group_delete(char *); -extern uint32_t smb_group_member_remove(char *, char *); -extern uint32_t smb_group_member_add(char *, char *); -extern uint32_t smb_group_priv_num(int *); -extern uint32_t smb_group_priv_list(ntpriv_list_t **); -extern uint32_t smb_group_priv_get(char *, uint32_t, uint32_t *); -extern uint32_t smb_group_priv_set(char *, uint32_t, uint32_t); -extern uint32_t smb_group_count(int *); -extern uint32_t smb_group_list(int, ntgrp_list_t **, char *, int); -extern uint32_t smb_group_member_count(char *, int *); -extern uint32_t smb_group_member_list(char *, int, ntgrp_member_list_t **); - -extern char *smb_dr_encode_grp_privlist(uint32_t, ntpriv_list_t *, size_t *); -extern ntpriv_list_t *smb_dr_decode_grp_privlist(char *, size_t); - -extern char *smb_dr_encode_grp_list(uint32_t, ntgrp_list_t *, size_t *); -extern ntgrp_list_t *smb_dr_decode_grp_list(char *, size_t); - -extern char *smb_dr_encode_grp_memberlist(uint32_t, ntgrp_member_list_t *, - size_t *); -extern ntgrp_member_list_t *smb_dr_decode_grp_memberlist(char *buf, size_t len); +typedef enum { + SMB_LGRP_BUILTIN = 1, + SMB_LGRP_LOCAL +} smb_gdomain_t; + +typedef struct smb_gsid { + nt_sid_t *gs_sid; + uint16_t gs_type; +} smb_gsid_t; + +typedef struct smb_giter { + sqlite_vm *sgi_vm; + sqlite *sgi_db; +} smb_giter_t; + +typedef struct smb_group { + char *sg_name; + char *sg_cmnt; + uint32_t sg_attr; + uint32_t sg_rid; + smb_gsid_t sg_id; + smb_gdomain_t sg_domain; + smb_privset_t *sg_privs; + uint32_t sg_nmembers; + smb_gsid_t *sg_members; +} smb_group_t; + +int smb_lgrp_start(void); +void smb_lgrp_stop(void); +int smb_lgrp_add(char *, char *); +int smb_lgrp_rename(char *, char *); +int smb_lgrp_delete(char *); +int smb_lgrp_setcmnt(char *, char *); +int smb_lgrp_getcmnt(char *, char **); +int smb_lgrp_getpriv(char *, uint8_t, boolean_t *); +int smb_lgrp_setpriv(char *, uint8_t, boolean_t); +int smb_lgrp_add_member(char *, nt_sid_t *, uint16_t); +int smb_lgrp_del_member(char *, nt_sid_t *, uint16_t); +int smb_lgrp_getbyname(char *, smb_group_t *); +int smb_lgrp_getbyrid(uint32_t, smb_gdomain_t, smb_group_t *); +int smb_lgrp_numbydomain(smb_gdomain_t, int *); +int smb_lgrp_numbymember(nt_sid_t *, int *); +void smb_lgrp_free(smb_group_t *); +boolean_t smb_lgrp_is_member(smb_group_t *, nt_sid_t *); +char *smb_lgrp_strerror(int); +int smb_lgrp_iteropen(smb_giter_t *); +void smb_lgrp_iterclose(smb_giter_t *); +int smb_lgrp_iterate(smb_giter_t *, smb_group_t *); + +int smb_lookup_sid(nt_sid_t *, char *buf, int buflen); +int smb_lookup_name(char *, smb_gsid_t *); + +#define SMB_LGRP_SUCCESS 0 +#define SMB_LGRP_INVALID_ARG 1 +#define SMB_LGRP_INVALID_MEMBER 2 +#define SMB_LGRP_INVALID_NAME 3 +#define SMB_LGRP_NOT_FOUND 4 +#define SMB_LGRP_EXISTS 5 +#define SMB_LGRP_NO_SID 6 +#define SMB_LGRP_NO_LOCAL_SID 7 +#define SMB_LGRP_SID_NOTLOCAL 8 +#define SMB_LGRP_WKSID 9 +#define SMB_LGRP_NO_MEMORY 10 +#define SMB_LGRP_DB_ERROR 11 +#define SMB_LGRP_DBINIT_ERROR 12 +#define SMB_LGRP_INTERNAL_ERROR 13 +#define SMB_LGRP_MEMBER_IN_GROUP 14 +#define SMB_LGRP_MEMBER_NOT_IN_GROUP 15 +#define SMB_LGRP_NO_SUCH_PRIV 16 +#define SMB_LGRP_NO_SUCH_DOMAIN 17 +#define SMB_LGRP_PRIV_HELD 18 +#define SMB_LGRP_PRIV_NOT_HELD 19 +#define SMB_LGRP_BAD_DATA 20 +#define SMB_LGRP_NO_MORE 21 +#define SMB_LGRP_DBOPEN_FAILED 22 +#define SMB_LGRP_DBEXEC_FAILED 23 +#define SMB_LGRP_DBINIT_FAILED 24 +#define SMB_LGRP_DOMLKP_FAILED 25 +#define SMB_LGRP_DOMINS_FAILED 26 +#define SMB_LGRP_INSERT_FAILED 27 +#define SMB_LGRP_DELETE_FAILED 28 +#define SMB_LGRP_UPDATE_FAILED 29 +#define SMB_LGRP_LOOKUP_FAILED 30 +#define SMB_LGRP_NOT_SUPPORTED 31 + +#define SMB_LGRP_NAME_CHAR_MAX 32 +#define SMB_LGRP_COMMENT_MAX 256 +#define SMB_LGRP_NAME_MAX (SMB_LGRP_NAME_CHAR_MAX * MTS_MB_CHAR_MAX + 1) #ifdef __cplusplus } |