summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/librpc/idl/srvsvc.idl51
-rw-r--r--source4/librpc/idl/wkssvc.idl10
-rw-r--r--source4/rpc_server/common/server_info.c9
-rw-r--r--source4/rpc_server/common/share_info.c4
4 files changed, 49 insertions, 25 deletions
diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl
index aea5c686a2..8abc67d076 100644
--- a/source4/librpc/idl/srvsvc.idl
+++ b/source4/librpc/idl/srvsvc.idl
@@ -8,9 +8,11 @@
version(3.0),
pointer_default(unique),
helpstring("Server Service"),
- depends(security)
+ depends(security,svcctl)
] interface srvsvc
{
+ declare bitmap svcctl_ServerType;
+
/**************************/
/* srvsvc_NetCharDev */
/**************************/
@@ -374,12 +376,23 @@
/**************************/
/* share types */
- const int STYPE_DISKTREE = 0;
- const int STYPE_PRINTQ = 1;
- const int STYPE_DEVICE = 2; /* Serial device */
- const int STYPE_IPC = 3; /* Interprocess communication (IPC) */
- const int STYPE_TEMPORARY= 0x40000000; /* share is a temporary one */
- const int STYPE_HIDDEN = 0x80000000; /* share is a hidden one */
+ const uint32 STYPE_TEMPORARY = 0x40000000; /* share is a temporary one */
+ const uint32 STYPE_HIDDEN = 0x80000000; /* share is a hidden one */
+
+ typedef [v1_enum, flag(NDR_PAHEX)] enum {
+ STYPE_DISKTREE = 0,
+ STYPE_DISKTREE_TEMPORARY = STYPE_DISKTREE|STYPE_TEMPORARY,
+ STYPE_DISKTREE_HIDDEN = STYPE_DISKTREE|STYPE_HIDDEN,
+ STYPE_PRINTQ = 1,
+ STYPE_PRINTQ_TEMPORARY = STYPE_PRINTQ|STYPE_TEMPORARY,
+ STYPE_PRINTQ_HIDDEN = STYPE_PRINTQ|STYPE_HIDDEN,
+ STYPE_DEVICE = 2, /* Serial device */
+ STYPE_DEVICE_TEMPORARY = STYPE_DEVICE|STYPE_TEMPORARY,
+ STYPE_DEVICE_HIDDEN = STYPE_DEVICE|STYPE_HIDDEN,
+ STYPE_IPC = 3, /* Interprocess communication (IPC) */
+ STYPE_IPC_TEMPORARY = STYPE_IPC|STYPE_TEMPORARY,
+ STYPE_IPC_HIDDEN = STYPE_IPC|STYPE_HIDDEN
+ } srvsvc_ShareType;
typedef struct {
unistr *name;
@@ -392,7 +405,7 @@
typedef struct {
unistr *name;
- uint32 type;
+ srvsvc_ShareType type;
unistr *comment;
} srvsvc_NetShareInfo1;
@@ -403,7 +416,7 @@
typedef struct {
unistr *name;
- uint32 type;
+ srvsvc_ShareType type;
unistr *comment;
uint32 permissions;
uint32 max_users;
@@ -419,7 +432,7 @@
typedef struct {
unistr *name;
- uint32 type;
+ srvsvc_ShareType type;
unistr *comment;
uint32 csc_policy;
} srvsvc_NetShareInfo501;
@@ -431,7 +444,7 @@
typedef struct {
unistr *name;
- uint32 type;
+ srvsvc_ShareType type;
unistr *comment;
uint32 permissions;
int32 max_users;
@@ -546,32 +559,36 @@
WERROR srvsvc_NetShareCheck(
[in] unistr *server_unc,
[in] unistr device_name,
- [out] uint32 type
+ [out] srvsvc_ShareType type
);
/**************************/
/* srvsvc_NetSrv */
/**************************/
+ typedef [public] enum {
+ PLATFORM_ID_NT = 500
+ } srvsvc_PlatformId;
+
typedef struct {
- uint32 platform_id;
+ srvsvc_PlatformId platform_id;
unistr *server_name;
} srvsvc_NetSrvInfo100;
typedef struct {
- uint32 platform_id;
+ srvsvc_PlatformId platform_id;
unistr *server_name;
uint32 version_major;
uint32 version_minor;
- uint32 server_type;
+ svcctl_ServerType server_type;
unistr *comment;
} srvsvc_NetSrvInfo101;
typedef struct {
- uint32 platform_id;
+ srvsvc_PlatformId platform_id;
unistr *server_name;
uint32 ver_major;
uint32 ver_minor;
- uint32 server_type;
+ svcctl_ServerType server_type;
unistr *comment;
uint32 users;
uint32 disc;
diff --git a/source4/librpc/idl/wkssvc.idl b/source4/librpc/idl/wkssvc.idl
index 578df3b3aa..318f7ce05b 100644
--- a/source4/librpc/idl/wkssvc.idl
+++ b/source4/librpc/idl/wkssvc.idl
@@ -7,9 +7,11 @@
[ uuid("6bffd098-a112-3610-9833-46c3f87e345a"),
version(1.0),
pointer_default(unique),
- helpstring("Workstation Service")
+ helpstring("Workstation Service"),
+ depends(srvsvc)
] interface wkssvc
{
+ declare enum srvsvc_PlatformId;
#define BOOL uint32
@@ -17,7 +19,7 @@
/* Function: 0x00 */
typedef struct {
- uint32 platform_id;
+ srvsvc_PlatformId platform_id;
unistr *server_name;
unistr *domain_name;
uint32 version_major;
@@ -25,7 +27,7 @@
} wkssvc_NetWkstaInfo100;
typedef struct {
- uint32 platform_id;
+ srvsvc_PlatformId platform_id;
unistr *server_name;
unistr *domain_name;
uint32 version_major;
@@ -34,7 +36,7 @@
} wkssvc_NetWkstaInfo101;
typedef struct {
- uint32 platform_id;
+ srvsvc_PlatformId platform_id;
unistr *server_name;
unistr *domain_name;
uint32 version_major;
diff --git a/source4/rpc_server/common/server_info.c b/source4/rpc_server/common/server_info.c
index 9212ada3da..1a628a2ee6 100644
--- a/source4/rpc_server/common/server_info.c
+++ b/source4/rpc_server/common/server_info.c
@@ -21,15 +21,20 @@
*/
#include "includes.h"
+#include "librpc/gen_ndr/ndr_srvsvc.h"
/*
Here are common server info functions used by some dcerpc server interfaces
*/
/* This hardcoded value should go into a ldb database! */
-uint32_t dcesrv_common_get_platform_id(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
+enum srvsvc_PlatformId dcesrv_common_get_platform_id(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
{
- return lp_parm_int(-1, "server_info", "platform_id", 500);
+ enum srvsvc_PlatformId id;
+
+ id = lp_parm_int(-1, "server_info", "platform_id", PLATFORM_ID_NT);
+
+ return id;
}
const char *dcesrv_common_get_server_name(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx, const char *server_unc)
diff --git a/source4/rpc_server/common/share_info.c b/source4/rpc_server/common/share_info.c
index 6440c70676..ec744a5039 100644
--- a/source4/rpc_server/common/share_info.c
+++ b/source4/rpc_server/common/share_info.c
@@ -63,7 +63,7 @@ uint32_t dcesrv_common_get_share_current_users(TALLOC_CTX *mem_ctx, struct dcesr
}
/* This hardcoded value should go into a ldb database! */
-uint32_t dcesrv_common_get_share_type(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx, int snum)
+enum srvsvc_ShareType dcesrv_common_get_share_type(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx, int snum)
{
/* for disk share 0x00000000
* for print share 0x00000001
@@ -73,7 +73,7 @@ uint32_t dcesrv_common_get_share_type(TALLOC_CTX *mem_ctx, struct dcesrv_context
* ADMIN$, IPC$, C$, D$, E$ ... are type |= 0x80000000
* this ones are hidden in NetShareEnum, but shown in NetShareEnumAll
*/
- uint32_t share_type = 0;
+ enum srvsvc_ShareType share_type = 0;
if (!lp_browseable(snum)) {
share_type |= STYPE_HIDDEN;