*** empty log message ***
authorLuke Leighton <lkcl@samba.org>
Thu, 18 Dec 1997 05:29:15 +0000 (05:29 +0000)
committerLuke Leighton <lkcl@samba.org>
Thu, 18 Dec 1997 05:29:15 +0000 (05:29 +0000)
source/include/ntdomain.h
source/include/proto.h

index d608475a9f7b57d3c5a7ff3aefd2f274c3189f54..ebf32952e5964a7b14842aa8c31dd040a4a096e7 100644 (file)
@@ -149,6 +149,8 @@ SamrTestPrivateFunctionsUser
 /* srvsvc pipe */
 #define SRV_NETSERVERGETINFO 0x15
 #define SRV_NETSHAREENUM     0x0f
+#define SRV_NETFILEENUM      0x09
+#define SRV_NETSESSENUM      0x0c
 
 /* wkssvc pipe */
 #define WKS_UNKNOWN_0    0x00
@@ -195,6 +197,14 @@ typedef struct nttime_info
 
 } NTTIME;
  
+/* ENUM_HND */
+typedef struct enum_hnd_info
+{
+       uint32 ptr_hnd;          /* pointer to enumeration handle */
+       uint32 handle;           /* enumeration handle */
+
+} ENUM_HND;
+
 /* DOM_CHAL - challenge info */
 typedef struct chal_info
 {
@@ -1155,12 +1165,94 @@ typedef struct net_r_sam_logoff_info
 } NET_R_SAM_LOGOFF;
 
 
+/* SESS_INFO_0 (pointers to level 0 session info strings) */
+typedef struct ptr_sess_info0
+{
+       uint32 ptr_name; /* pointer to name. */
+
+} SESS_INFO_0;
+
+/* SESS_INFO_0_STR (level 0 session info strings) */
+typedef struct str_sess_info0
+{
+       UNISTR2 uni_name; /* unicode string of name */
+
+} SESS_INFO_0_STR;
+
+/* oops - this is going to take up a *massive* amount of stack. */
+/* the UNISTR2s already have 1024 uint16 chars in them... */
+#define MAX_SESS_ENTRIES 32
+
+/* SESS_INFO_0_CONTAINER  */
+typedef struct sess_info_0_ctr
+{
+       uint32 num_entries_read;                     /* EntriesRead */
+       uint32 ptr_sess_info;                       /* Buffer */
+       uint32 num_entries_read2;                    /* EntriesRead */
+       SESS_INFO_0     info_0    [MAX_SESS_ENTRIES]; /* session entry pointers */
+       SESS_INFO_0_STR info_0_str[MAX_SESS_ENTRIES]; /* session entry strings */
+
+} SESS_INFO_0_CTR;
+
+/* SRV_Q_NET_SESS_ENUM */
+typedef struct q_net_sess_enum_info
+{
+       uint32 ptr_srv_name;         /* pointer (to server name?) */
+       UNISTR2 uni_srv_name;        /* server name */
+
+       uint32 padding0;
+       uint32 padding1;
+
+       uint32 sess_level;          /* session level */
+       uint32 switch_value;         /* switch value */
+
+       uint32 ptr_sess_info;       /* pointer to SESS_INFO_0_CTR */
+
+       union
+    {
+               SESS_INFO_0_CTR info0; /* session info container with 0 entries */
+
+    } sess;
+
+       uint32 num_entries;                    /* EntriesRead */
+       uint32 preferred_len;        /* preferred maximum length (0xffff ffff) */
+
+       ENUM_HND enum_hnd;
+
+} SRV_Q_NET_SESS_ENUM;
+
+
+/* SRV_R_NET_SESS_ENUM */
+typedef struct r_net_sess_enum_info
+{
+       uint32 sess_level;          /* share level */
+       uint32 switch_value;         /* switch value */
+
+       uint32 ptr_sess_info;       /* pointer to SESS_INFO_0_CTR */
+       union
+    {
+               SESS_INFO_0_CTR info0; /* session info container */
+
+    } sess;
+
+       uint32 num_entries;                    /* EntriesRead */
+
+       ENUM_HND enum_hnd;
+
+       uint32 status;               /* return status */
+
+} SRV_R_NET_SESS_ENUM;
+
+/* oops - this is going to take up a *massive* amount of stack. */
+/* the UNISTR2s already have 1024 uint16 chars in them... */
+#define MAX_SHARE_ENTRIES 32
+
 /* SH_INFO_1 (pointers to level 1 share info strings) */
 typedef struct ptr_share_info1
 {
        uint32 ptr_netname; /* pointer to net name. */
-       uint32 type;        /* type of share.  0 - undocumented. */
-       uint32 ptr_remark;  /* pointer to comment. */
+       uint32 type; /* ipc, print, disk ... */
+       uint32 ptr_remark; /* pointer to comment. */
 
 } SH_INFO_1;
 
@@ -1168,34 +1260,30 @@ typedef struct ptr_share_info1
 typedef struct str_share_info1
 {
        UNISTR2 uni_netname; /* unicode string of net name */
-       UNISTR2 uni_remark;  /* unicode string of comment. */
+       UNISTR2 uni_remark; /* unicode string of comment */
 
 } SH_INFO_1_STR;
 
-/* oops - this is going to take up a *massive* amount of stack. */
-/* the UNISTR2s already have 1024 uint16 chars in them... */
-#define MAX_SHARE_ENTRIES 32
-
 /* SHARE_INFO_1_CONTAINER  */
-typedef struct share_info_ctr
+typedef struct share_info_1_ctr
 {
        uint32 num_entries_read;                     /* EntriesRead */
        uint32 ptr_share_info;                       /* Buffer */
        uint32 num_entries_read2;                    /* EntriesRead */
        SH_INFO_1     info_1    [MAX_SHARE_ENTRIES]; /* share entry pointers */
        SH_INFO_1_STR info_1_str[MAX_SHARE_ENTRIES]; /* share entry strings */
-       uint32 num_entries_read3;                    /* EntriesRead2 */
-       uint32 padding;                              /* padding */
 
 } SHARE_INFO_1_CTR;
 
-
 /* SRV_Q_NET_SHARE_ENUM */
 typedef struct q_net_share_enum_info
 {
        uint32 ptr_srv_name;         /* pointer (to server name?) */
        UNISTR2 uni_srv_name;        /* server name */
 
+       uint32 padding0;
+       uint32 padding1;
+
        uint32 share_level;          /* share level */
        uint32 switch_value;         /* switch value */
 
@@ -1207,8 +1295,11 @@ typedef struct q_net_share_enum_info
 
     } share;
 
+       uint32 num_entries;                    /* EntriesRead */
        uint32 preferred_len;        /* preferred maximum length (0xffff ffff) */
 
+       ENUM_HND enum_hnd;
+
 } SRV_Q_NET_SHARE_ENUM;
 
 
@@ -1225,10 +1316,97 @@ typedef struct r_net_share_enum_info
 
     } share;
 
+       uint32 num_entries;                    /* EntriesRead */
+
+       ENUM_HND enum_hnd;
+
        uint32 status;               /* return status */
 
 } SRV_R_NET_SHARE_ENUM;
 
+/* FILE_INFO_3 (level 3 file info strings) */
+typedef struct file_info3_info
+{
+       uint32 id;            /* file index */
+       uint32 perms;         /* file permissions. don't know what format */
+       uint32 num_locks;     /* file locks */
+       uint32 ptr_path_name; /* file name */
+       uint32 ptr_user_name; /* file owner */
+
+} FILE_INFO_3;
+
+/* FILE_INFO_3_STR (level 3 file info strings) */
+typedef struct str_file_info3_info
+{
+       UNISTR2 uni_path_name; /* unicode string of file name */
+       UNISTR2 uni_user_name; /* unicode string of file owner. */
+
+} 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
+
+/* FILE_INFO_3_CONTAINER  */
+typedef struct file_info_3_ctr
+{
+       uint32 num_entries_read;                     /* EntriesRead */
+       uint32 ptr_file_info;                        /* Buffer */
+
+       uint32 num_entries_read2;                    /* EntriesRead */
+
+       FILE_INFO_3     info_3    [MAX_FILE_ENTRIES]; /* file entry details */
+       FILE_INFO_3_STR info_3_str[MAX_FILE_ENTRIES]; /* file entry strings */
+
+
+} FILE_INFO_3_CTR;
+
+
+/* SRV_Q_NET_FILE_ENUM */
+typedef struct q_net_file_enum_info
+{
+       uint32 ptr_srv_name;         /* pointer (to server name?) */
+       UNISTR2 uni_srv_name;        /* server name */
+
+       uint32 padding0;
+       uint32 padding1;
+
+       uint32 file_level;          /* file level */
+       uint32 switch_value;         /* switch value */
+
+       uint32 ptr_file_info;       /* pointer to FILE_INFO_3_CTR */
+       union
+    {
+               FILE_INFO_3_CTR info3; /* file info with 0 entries */
+
+    } file;
+
+       uint32 num_entries;                    /* EntriesRead */
+       uint32 preferred_len; /* preferred maximum length (0xffff ffff) */
+       ENUM_HND enum_hnd;
+
+} SRV_Q_NET_FILE_ENUM;
+
+
+/* SRV_R_NET_FILE_ENUM */
+typedef struct r_net_file_enum_info
+{
+       uint32 file_level;          /* file level */
+       uint32 switch_value;         /* switch value */
+
+       uint32 ptr_file_info;       /* pointer to FILE_INFO_3_CTR */
+       union
+    {
+               FILE_INFO_3_CTR info3; /* file info container */
+
+    } file;
+
+       uint32 num_entries;                    /* EntriesRead */
+       ENUM_HND enum_hnd;
+       uint32 status;        /* return status */
+
+} SRV_R_NET_FILE_ENUM;
+
 /* SRV_Q_NET_SRV_GET_INFO */
 typedef struct q_net_srv_get_info
 {
index 72210295689f4657604f7dd1fb2d13de14d396a8..0d5e8b368115f2826b9f641cdf142135a9473e19 100644 (file)
@@ -1371,6 +1371,9 @@ void samr_io_r_open_alias(char *desc, BOOL io, SAMR_R_OPEN_ALIAS *r_u, struct me
 
 void smb_io_utime(char *desc, BOOL io, UTIME *t, struct mem_buffer *buf, int *q, int depth);
 void smb_io_time(char *desc, BOOL io, NTTIME *nttime, struct mem_buffer *buf, int *q, int depth);
+uint32 get_enum_hnd(ENUM_HND *enh);
+void make_enum_hnd(ENUM_HND *enh, uint32 hnd);
+void smb_io_enum_hnd(char *desc, BOOL io, ENUM_HND *hnd, struct mem_buffer *buf, int *q, int depth);
 void make_dom_sid(DOM_SID *sid, char *str_sid);
 void smb_io_dom_sid(char *desc, BOOL io, DOM_SID *sid, struct mem_buffer *buf, int *q, int depth);
 void make_dom_sid2(DOM_SID2 *sid, char *str_sid);
@@ -1482,11 +1485,29 @@ void smb_io_logon_hrs(char *desc, BOOL io, LOGON_HRS *hrs, struct mem_buffer *bu
 
 /*The following definitions come from  rpc_pipes/srvparse.c  */
 
+void make_srv_share_info1_str(SH_INFO_1_STR *sh1, char *net_name, char *remark);
 void srv_io_share_info1_str(char *desc, BOOL io, SH_INFO_1_STR *sh1, struct mem_buffer *buf, int *q,  int depth);
+void make_srv_share_info1(SH_INFO_1 *sh1, char *net_name, uint32 type, char *remark);
 void srv_io_share_info1(char *desc, BOOL io, SH_INFO_1 *sh1, struct mem_buffer *buf, int *q,  int depth);
 void srv_io_share_1_ctr(char *desc, BOOL io, SHARE_INFO_1_CTR *ctr, struct mem_buffer *buf, int *q,  int depth);
 void srv_io_q_net_share_enum(char *desc, BOOL io, SRV_Q_NET_SHARE_ENUM *q_n, struct mem_buffer *buf, int *q,  int depth);
 void srv_io_r_net_share_enum(char *desc, BOOL io, SRV_R_NET_SHARE_ENUM *r_n, struct mem_buffer *buf, int *q,  int depth);
+void make_srv_sess_info0_str(SESS_INFO_0_STR *sh0, char *name);
+void srv_io_sess_info0_str(char *desc, BOOL io, SESS_INFO_0_STR *sh0, struct mem_buffer *buf, int *q,  int depth);
+void make_srv_sess_info0(SESS_INFO_0 *sh0, char *name);
+void srv_io_sess_info0(char *desc, BOOL io, SESS_INFO_0 *sh0, struct mem_buffer *buf, int *q,  int depth);
+void srv_io_sess_0_ctr(char *desc, BOOL io, SESS_INFO_0_CTR *ctr, struct mem_buffer *buf, int *q,  int depth);
+void srv_io_q_net_sess_enum(char *desc, BOOL io, SRV_Q_NET_SESS_ENUM *q_n, struct mem_buffer *buf, int *q,  int depth);
+void srv_io_r_net_sess_enum(char *desc, BOOL io, SRV_R_NET_SESS_ENUM *r_n, struct mem_buffer *buf, int *q,  int depth);
+void make_srv_file_info3_str(FILE_INFO_3_STR *fi3, char *user_name, char *path_name);
+void srv_io_file_info3_str(char *desc, BOOL io, FILE_INFO_3_STR *sh1, struct mem_buffer *buf, int *q,  int depth);
+void make_srv_file_info3(FILE_INFO_3 *fl3,
+                               uint32 id, uint32 perms, uint32 num_locks,
+                               char *path_name, char *user_name);
+void srv_io_file_info3(char *desc, BOOL io, FILE_INFO_3 *fl3, struct mem_buffer *buf, int *q,  int depth);
+void srv_io_file_3_ctr(char *desc, BOOL io, FILE_INFO_3_CTR *ctr, struct mem_buffer *buf, int *q,  int depth);
+void srv_io_q_net_file_enum(char *desc, BOOL io, SRV_Q_NET_FILE_ENUM *q_n, struct mem_buffer *buf, int *q,  int depth);
+void srv_io_r_net_file_enum(char *desc, BOOL io, SRV_R_NET_FILE_ENUM *r_n, struct mem_buffer *buf, int *q,  int depth);
 void make_srv_info_101(SRV_INFO_101 *sv101, uint32 platform_id, char *name,
                                uint32 ver_major, uint32 ver_minor,
                                uint32 srv_type, char *comment);