summaryrefslogtreecommitdiffstats
path: root/source3/aparser/srvsvc.struct
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2000-05-16 12:43:53 +0000
committerAndrew Tridgell <tridge@samba.org>2000-05-16 12:43:53 +0000
commit128026c9a2de83a8ac6214e733fa871440c6b77f (patch)
treefca86e76f0020a2b16549cb0ab2a9dae29d61ac6 /source3/aparser/srvsvc.struct
parentf3a3a05ade784ff6906e5c8b132c9440a8db44e5 (diff)
downloadsamba-128026c9a2de83a8ac6214e733fa871440c6b77f.tar.gz
samba-128026c9a2de83a8ac6214e733fa871440c6b77f.tar.xz
samba-128026c9a2de83a8ac6214e733fa871440c6b77f.zip
added the ".trailer" type, to mark where a packet turns into a trailer
this now gives us enough to parse complete function calls, including the return values (This used to be commit ca8f1e92adf3603ad15f73277576cc9178bb4d74)
Diffstat (limited to 'source3/aparser/srvsvc.struct')
-rw-r--r--source3/aparser/srvsvc.struct53
1 files changed, 35 insertions, 18 deletions
diff --git a/source3/aparser/srvsvc.struct b/source3/aparser/srvsvc.struct
index 61e67c4f4ad..44d88944cbc 100644
--- a/source3/aparser/srvsvc.struct
+++ b/source3/aparser/srvsvc.struct
@@ -1,5 +1,5 @@
module srvsvc
-test SRV_R_NET_SHARE_ENUM
+test SRV_R_NET_SERVER_INFO
struct UNISTR2 {
uint32 max_len;
@@ -8,26 +8,41 @@ struct UNISTR2 {
uint16 buffer[str_len];
};
+struct LPWSTR {
+ UNISTR2 *str;
+};
+
/* function 15 */
struct SRV_SHARE_INFO_1 {
- UNISTR2 *uni_netname;
+ LPWSTR uni_netname;
uint32 type;
- UNISTR2 *uni_remark;
+ LPWSTR uni_remark;
};
-struct SHARE_ENUM {
- uint32 level;
- uint32 num_entries;
- union info[level] {
- case 1 SRV_SHARE_INFO_1 entries[num_entries];
- }
+struct SRV_SHARE_INFO_2 {
+ LPWSTR uni_netname;
+ uint32 type;
+ LPWSTR uni_remark;
+ uint32 perms;
+ uint32 max_uses;
+ uint32 num_uses;
+ LPWSTR path;
+ LPWSTR passwd;
};
struct SRV_R_NET_SHARE_ENUM {
uint32 level;
- uint32 dummy;
- SHARE_ENUM *shares;
- uint32 *num_entries;
+ uint32 level2;
+ uint32 *ret_count;
+ uint32 num_entries;
+ union *info[level] {
+ case 1 SRV_SHARE_INFO_1 info1[num_entries];
+ case 2 SRV_SHARE_INFO_2 info2[num_entries];
+ }
+ .trailer;
+ uint32 count;
+ uint32 status1;
+ uint32 status2;
};
@@ -35,32 +50,32 @@ struct SRV_R_NET_SHARE_ENUM {
/* function 21 */
struct SERVER_INFO_100 {
uint32 dwPlatformID;
- UNISTR2 *pszName;
+ LPWSTR pszName;
};
struct SERVER_INFO_101 {
uint32 dwPlatformID;
- UNISTR2 *pszName;
+ LPWSTR pszName;
uint32 dwVerMajor;
uint32 dwVerMinor;
uint32 dwType;
- UNISTR2 *pszComment;
+ LPWSTR pszComment;
};
struct SERVER_INFO_102 {
uint32 dwPlatformID;
- UNISTR2 *pszName;
+ LPWSTR pszName;
uint32 dwVerMajor;
uint32 dwVerMinor;
uint32 dwType;
- UNISTR2 *pszComment;
+ LPWSTR pszComment;
uint32 dwUsers;
uint32 lDisc;
uint32 bHidden;
uint32 dwAnnounce;
uint32 dwAnnDelta;
uint32 dwLicenses;
- UNISTR2 *pszUserPath;
+ LPWSTR pszUserPath;
};
struct SRV_R_NET_SERVER_INFO {
@@ -70,4 +85,6 @@ struct SRV_R_NET_SERVER_INFO {
case 101 SERVER_INFO_101 *sv101;
case 102 SERVER_INFO_102 *sv102;
}
+ .trailer;
+ uint32 status;
};