summaryrefslogtreecommitdiffstats
path: root/source/include/rpc_srvsvc.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/include/rpc_srvsvc.h')
-rw-r--r--source/include/rpc_srvsvc.h203
1 files changed, 45 insertions, 158 deletions
diff --git a/source/include/rpc_srvsvc.h b/source/include/rpc_srvsvc.h
index 94d23bb4bc4..8458074619f 100644
--- a/source/include/rpc_srvsvc.h
+++ b/source/include/rpc_srvsvc.h
@@ -1,10 +1,10 @@
/*
- Unix SMB/CIFS implementation.
+ Unix SMB/Netbios implementation.
+ Version 1.9.
SMB parameters and setup
Copyright (C) Andrew Tridgell 1992-1997
Copyright (C) Luke Kenneth Casson Leighton 1996-1997
Copyright (C) Paul Ashton 1997
- Copyright (C) Nigel Williams 2001
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -24,25 +24,24 @@
#ifndef _RPC_SRVSVC_H /* _RPC_SRVSVC_H */
#define _RPC_SRVSVC_H
+
/* srvsvc pipe */
-#define SRV_NET_CONN_ENUM 0x08
-#define SRV_NET_FILE_ENUM 0x09
-#define SRV_NET_FILE_CLOSE 0x0b
-#define SRV_NET_SESS_ENUM 0x0c
-#define SRV_NET_SHARE_ADD 0x0e
-#define SRV_NET_SHARE_ENUM_ALL 0x0f
-#define SRV_NET_SHARE_GET_INFO 0x10
-#define SRV_NET_SHARE_SET_INFO 0x11
-#define SRV_NET_SHARE_DEL 0x12
-#define SRV_NET_SHARE_DEL_STICKY 0x13
-#define SRV_NET_SRV_GET_INFO 0x15
-#define SRV_NET_SRV_SET_INFO 0x16
-#define SRV_NET_DISK_ENUM 0x17
-#define SRV_NET_REMOTE_TOD 0x1c
-#define SRV_NET_NAME_VALIDATE 0x21
-#define SRV_NET_SHARE_ENUM 0x24
-#define SRV_NET_FILE_QUERY_SECDESC 0x27
-#define SRV_NET_FILE_SET_SECDESC 0x28
+#define SRV_NETCONNENUM 0x08
+#define SRV_NETFILEENUM 0x09
+#define SRV_NETSESSENUM 0x0c
+#define SRV_NET_SHARE_ADD 0x0e
+#define SRV_NETSHAREENUM_ALL 0x0f
+#define SRV_NET_SHARE_GET_INFO 0x10
+#define SRV_NET_SHARE_SET_INFO 0x11
+#define SRV_NET_SHARE_DEL 0x12
+#define SRV_NET_SRV_GET_INFO 0x15
+#define SRV_NET_SRV_SET_INFO 0x16
+#define SRV_NET_DISK_ENUM 0x17
+#define SRV_NET_REMOTE_TOD 0x1c
+#define SRV_NET_NAME_VALIDATE 0x21
+#define SRV_NETSHAREENUM 0x24
+#define SRV_NETFILEQUERYSECDESC 0x27
+#define SRV_NETFILESETSECDESC 0x28
#define MAX_SERVER_DISK_ENTRIES 15
@@ -56,7 +55,7 @@ typedef struct disk_enum_container {
uint32 entries_read;
uint32 unknown;
uint32 disk_info_ptr;
- DISK_INFO *disk_info;
+ DISK_INFO disk_info[MAX_SERVER_DISK_ENTRIES];
} DISK_ENUM_CONTAINER;
typedef struct net_srv_disk_enum {
@@ -167,9 +166,6 @@ typedef struct q_net_sess_enum_info
uint32 ptr_qual_name; /* pointer (to qualifier name) */
UNISTR2 uni_qual_name; /* qualifier name "\\qualifier" */
- uint32 ptr_user_name; /* pointer (to user name */
- UNISTR2 uni_user_name; /* user name */
-
uint32 sess_level; /* session level */
SRV_SESS_INFO_CTR *ctr;
@@ -296,29 +292,6 @@ typedef struct r_net_conn_enum_info
} SRV_R_NET_CONN_ENUM;
-/* SH_INFO_0 */
-typedef struct ptr_share_info0
-{
- uint32 ptr_netname; /* pointer to net name. */
-} SH_INFO_0;
-
-/* SH_INFO_0_STR (level 0 share info strings) */
-typedef struct str_share_info0
-{
- SH_INFO_0 *ptrs;
-
- UNISTR2 uni_netname; /* unicode string of net name */
-
-} SH_INFO_0_STR;
-
-/* SRV_SHARE_INFO_0 */
-typedef struct share_info_0_info
-{
- SH_INFO_0 info_0;
- SH_INFO_0_STR info_0_str;
-
-} SRV_SHARE_INFO_0;
-
/* SH_INFO_1 (pointers to level 1 share info strings) */
typedef struct ptr_share_info1
{
@@ -331,8 +304,6 @@ typedef struct ptr_share_info1
/* SH_INFO_1_STR (level 1 share info strings) */
typedef struct str_share_info1
{
- SH_INFO_1 *ptrs;
-
UNISTR2 uni_netname; /* unicode string of net name */
UNISTR2 uni_remark; /* unicode string of comment */
@@ -363,8 +334,6 @@ typedef struct ptr_share_info2
/* SH_INFO_2_STR (level 2 share info strings) */
typedef struct str_share_info2
{
- SH_INFO_2 *ptrs;
-
UNISTR2 uni_netname; /* unicode string of net name (e.g NETLOGON) */
UNISTR2 uni_remark; /* unicode string of comment (e.g "Logon server share") */
UNISTR2 uni_path; /* unicode string of local path (e.g c:\winnt\system32\repl\import\scripts) */
@@ -412,8 +381,6 @@ typedef struct ptr_share_info502
uint32 num_uses; /* current uses */
uint32 ptr_path; /* pointer to path name */
uint32 ptr_passwd; /* pointer to password */
- uint32 reserved; /* this holds the space taken by the sd in the rpc packet */
- uint32 reserved_offset; /* required for _post operation when marshalling */
uint32 sd_size; /* size of security descriptor */
uint32 ptr_sd; /* pointer to security descriptor */
@@ -429,7 +396,6 @@ typedef struct str_share_info502
UNISTR2 uni_path; /* unicode string of local path (e.g c:\winnt\system32\repl\import\scripts) */
UNISTR2 uni_passwd; /* unicode string of password - presumably for share level security (e.g NULL) */
- uint32 reserved;
uint32 sd_size;
SEC_DESC *sd;
@@ -443,57 +409,12 @@ typedef struct share_info_502_info
} SRV_SHARE_INFO_502;
-typedef struct ptr_share_info1004
-{
- uint32 ptr_remark;
-
-} SH_INFO_1004;
-
-typedef struct str_share_info1004
-{
- SH_INFO_1004 *ptrs;
-
- UNISTR2 uni_remark;
-
-} SH_INFO_1004_STR;
-
-typedef struct ptr_info_1004_info
-{
- SH_INFO_1004 info_1004;
- SH_INFO_1004_STR info_1004_str;
-} SRV_SHARE_INFO_1004;
-
+/* SRV_SHARE_INFO_1005 */
typedef struct share_info_1005_info
{
- uint32 dfs_root_flag;
+ uint32 misc_flags;
} SRV_SHARE_INFO_1005;
-typedef struct share_info_1006_info
-{
- uint32 max_uses;
-} SRV_SHARE_INFO_1006;
-
-typedef struct ptr_share_info1007
-{
- uint32 flags;
- uint32 ptr_AlternateDirectoryName;
-
-} SH_INFO_1007;
-
-typedef struct str_share_info1007
-{
- SH_INFO_1007 *ptrs;
-
- UNISTR2 uni_AlternateDirectoryName;
-
-} SH_INFO_1007_STR;
-
-typedef struct ptr_info_1007_info
-{
- SH_INFO_1007 info_1007;
- SH_INFO_1007_STR info_1007_str;
-} SRV_SHARE_INFO_1007;
-
/* SRV_SHARE_INFO_1501 */
typedef struct share_info_1501_info
{
@@ -512,16 +433,10 @@ typedef struct srv_share_info_ctr_info
uint32 num_entries2;
union {
- SRV_SHARE_INFO_0 *info0;
- SRV_SHARE_INFO_1 *info1; /* share info level 1 */
- SRV_SHARE_INFO_2 *info2; /* share info level 2 */
- SRV_SHARE_INFO_501 *info501; /* share info level 501 */
- SRV_SHARE_INFO_502 *info502; /* share info level 502 */
- SRV_SHARE_INFO_1004 *info1004;
- SRV_SHARE_INFO_1005 *info1005;
- SRV_SHARE_INFO_1006 *info1006;
- SRV_SHARE_INFO_1007 *info1007;
- SRV_SHARE_INFO_1501 *info1501;
+ SRV_SHARE_INFO_1 *info1; /* share info level 1 */
+ SRV_SHARE_INFO_2 *info2; /* share info level 2 */
+ SRV_SHARE_INFO_501 *info501; /* share info level 501 */
+ SRV_SHARE_INFO_502 *info502; /* share info level 502 */
void *info;
} share;
@@ -567,21 +482,19 @@ typedef struct q_net_share_get_info_info
} SRV_Q_NET_SHARE_GET_INFO;
+/* JRA. NB. We also need level 1004 and 1006 here. */
+
/* SRV_SHARE_INFO */
typedef struct srv_share_info {
uint32 switch_value;
uint32 ptr_share_ctr;
union {
- SRV_SHARE_INFO_0 info0;
SRV_SHARE_INFO_1 info1;
SRV_SHARE_INFO_2 info2;
SRV_SHARE_INFO_501 info501;
SRV_SHARE_INFO_502 info502;
- SRV_SHARE_INFO_1004 info1004;
SRV_SHARE_INFO_1005 info1005;
- SRV_SHARE_INFO_1006 info1006;
- SRV_SHARE_INFO_1007 info1007;
SRV_SHARE_INFO_1501 info1501;
} share;
} SRV_SHARE_INFO;
@@ -605,16 +518,12 @@ typedef struct q_net_share_set_info_info
SRV_SHARE_INFO info;
- uint32 ptr_parm_error;
- uint32 parm_error;
-
} SRV_Q_NET_SHARE_SET_INFO;
/* SRV_R_NET_SHARE_SET_INFO */
typedef struct r_net_share_set_info
{
- uint32 ptr_parm_error;
- uint32 parm_error;
+ uint32 switch_value; /* switch value */
WERROR status; /* return status */
@@ -630,17 +539,12 @@ typedef struct q_net_share_add
SRV_SHARE_INFO info;
- uint32 ptr_err_index; /* pointer to error index */
- uint32 err_index; /* index in info to field in error */
-
} SRV_Q_NET_SHARE_ADD;
/* SRV_R_NET_SHARE_ADD */
typedef struct r_net_share_add
{
-
- uint32 ptr_parm_error;
- uint32 parm_error;
+ uint32 switch_value; /* switch value */
WERROR status; /* return status */
@@ -652,7 +556,6 @@ typedef struct q_net_share_del
uint32 ptr_srv_name;
UNISTR2 uni_srv_name;
UNISTR2 uni_share_name;
- uint32 reserved;
} SRV_Q_NET_SHARE_DEL;
@@ -682,6 +585,10 @@ typedef struct str_file_info3_info
} FILE_INFO_3_STR;
+/* oops - this is going to take up a *massive* amount of stack. */
+/* the UNISTR2s already have 1024 uint16 chars in them... */
+#define MAX_FILE_ENTRIES 32
+
/* SRV_FILE_INFO_3 */
typedef struct srv_file_info_3
{
@@ -689,23 +596,22 @@ typedef struct srv_file_info_3
uint32 ptr_file_info; /* Buffer */
uint32 num_entries_read2; /* EntriesRead */
- FILE_INFO_3 info_3; /* file entry details */
- FILE_INFO_3_STR info_3_str; /* file entry strings */
+
+ FILE_INFO_3 info_3 [MAX_FILE_ENTRIES]; /* file entry details */
+ FILE_INFO_3_STR info_3_str[MAX_FILE_ENTRIES]; /* file entry strings */
+
} SRV_FILE_INFO_3;
/* SRV_FILE_INFO_CTR */
typedef struct srv_file_info_3_info
{
uint32 switch_value; /* switch value */
- uint32 ptr_file_info; /* pointer to file info union */
-
- uint32 num_entries;
- uint32 ptr_entries;
- uint32 num_entries2;
+ uint32 ptr_file_ctr; /* pointer to file info union */
union
- {
- SRV_FILE_INFO_3 *info3;
- } file;
+ {
+ SRV_FILE_INFO_3 info3; /* file info with 0 entries */
+
+ } file;
} SRV_FILE_INFO_CTR;
@@ -719,12 +625,9 @@ typedef struct q_net_file_enum_info
uint32 ptr_qual_name; /* pointer (to qualifier name) */
UNISTR2 uni_qual_name; /* qualifier name "\\qualifier" */
- uint32 ptr_user_name; /* pointer (to user name) */
- UNISTR2 uni_user_name; /* user name */
-
uint32 file_level; /* file level */
- SRV_FILE_INFO_CTR ctr;
+ SRV_FILE_INFO_CTR *ctr;
uint32 preferred_len; /* preferred maximum length (0xffff ffff) */
ENUM_HND enum_hnd;
@@ -737,7 +640,7 @@ typedef struct r_net_file_enum_info
{
uint32 file_level; /* file level */
- SRV_FILE_INFO_CTR ctr;
+ SRV_FILE_INFO_CTR *ctr;
uint32 total_entries; /* total number of files */
ENUM_HND enum_hnd;
@@ -746,21 +649,6 @@ typedef struct r_net_file_enum_info
} SRV_R_NET_FILE_ENUM;
-/* SRV_Q_NET_FILE_CLOSE */
-typedef struct q_net_file_close
-{
- uint32 ptr_srv_name; /* pointer to server name */
- UNISTR2 uni_srv_name; /* server name */
-
- uint32 file_id;
-} SRV_Q_NET_FILE_CLOSE;
-
-/* SRV_R_NET_FILE_CLOSE */
-typedef struct r_net_file_close
-{
- WERROR status; /* return status */
-} SRV_R_NET_FILE_CLOSE;
-
/* SRV_INFO_100 */
typedef struct srv_info_100_info
{
@@ -944,5 +832,4 @@ typedef struct r_net_file_set_secdesc
{
WERROR status;
} SRV_R_NET_FILE_SET_SECDESC;
-
#endif /* _RPC_SRVSVC_H */