[SCM] Samba Shared Repository - branch v3-devel updated - release-3-2-0pre2-4002-gb7a2f27

Günther Deschner gd at samba.org
Fri Sep 5 11:04:59 GMT 2008


The branch, v3-devel has been updated
       via  b7a2f27c1cae9abed2f821177fca425012222632 (commit)
       via  43aad72457f77ac209494cfca46048e0c4bfa6c7 (commit)
       via  b2d0df46038a88fa3f2ff82e155805c771916a42 (commit)
       via  cff66738936f9f5cc4d2cd284cde2e1ac2972d33 (commit)
       via  2bb5bb9b964932f0be8eccf5739da5692a591245 (commit)
       via  7a46743909bfbfccf522eecf2ba117d5651439ef (commit)
      from  14c2688f2d37105ad129d26d13930177fe5c585f (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-devel


- Log -----------------------------------------------------------------
commit b7a2f27c1cae9abed2f821177fca425012222632
Author: Günther Deschner <gd at samba.org>
Date:   Mon Sep 1 18:54:53 2008 +0200

    netapi: add support for local query of level 101 in NetServerGetInfo.
    
    Guenther

commit 43aad72457f77ac209494cfca46048e0c4bfa6c7
Author: Günther Deschner <gd at samba.org>
Date:   Mon Sep 1 18:37:54 2008 +0200

    netapi: add support for more infolevels in NetServerGetInfo_r.
    
    Guenther

commit b2d0df46038a88fa3f2ff82e155805c771916a42
Author: Günther Deschner <gd at samba.org>
Date:   Mon Sep 1 17:45:42 2008 +0200

    netapi: add NetServerGetInfo example code.
    
    Guenther

commit cff66738936f9f5cc4d2cd284cde2e1ac2972d33
Author: Günther Deschner <gd at samba.org>
Date:   Mon Sep 1 18:36:50 2008 +0200

    netapi: add new SERVER_INFO structures to public header.
    
    Guenther

commit 2bb5bb9b964932f0be8eccf5739da5692a591245
Author: Günther Deschner <gd at samba.org>
Date:   Mon Sep 1 17:44:01 2008 +0200

    re-run make idl.
    
    Guenther

commit 7a46743909bfbfccf522eecf2ba117d5651439ef
Author: Günther Deschner <gd at samba.org>
Date:   Mon Sep 1 17:43:49 2008 +0200

    netapi: add SERVER_INFO_100-102 to IDL.
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 source/lib/netapi/examples/Makefile.in             |    6 +
 .../user_modalsget.c => server/server_getinfo.c}   |   83 ++++++------
 source/lib/netapi/netapi.h                         |   31 ++++
 source/lib/netapi/serverinfo.c                     |  118 ++++++++++++++++-
 source/librpc/gen_ndr/libnetapi.h                  |   30 ++++
 source/librpc/gen_ndr/ndr_libnetapi.c              |  144 ++++++++++++++++++++
 source/librpc/gen_ndr/ndr_libnetapi.h              |    9 ++
 source/librpc/idl/libnetapi.idl                    |   30 ++++
 8 files changed, 405 insertions(+), 46 deletions(-)
 copy source/lib/netapi/examples/{user/user_modalsget.c => server/server_getinfo.c} (51%)


Changeset truncated at 500 lines:

diff --git a/source/lib/netapi/examples/Makefile.in b/source/lib/netapi/examples/Makefile.in
index f4ac8af..169736c 100644
--- a/source/lib/netapi/examples/Makefile.in
+++ b/source/lib/netapi/examples/Makefile.in
@@ -50,6 +50,7 @@ PROGS = bin/getdc at EXEEXT@ \
 	bin/localgroup_setmembers at EXEEXT@ \
 	bin/localgroup_getmembers at EXEEXT@ \
 	bin/remote_tod at EXEEXT@ \
+	bin/server_getinfo at EXEEXT@ \
 	bin/share_add at EXEEXT@ \
 	bin/share_del at EXEEXT@ \
 	bin/share_enum at EXEEXT@
@@ -114,6 +115,7 @@ LOCALGROUPDELMEMBERS_OBJ = localgroup/localgroup_delmembers.o $(CMDLINE_OBJ)
 LOCALGROUPSETMEMBERS_OBJ = localgroup/localgroup_setmembers.o $(CMDLINE_OBJ)
 LOCALGROUPGETMEMBERS_OBJ = localgroup/localgroup_getmembers.o $(CMDLINE_OBJ)
 REMOTETOD_OBJ = server/remote_tod.o $(CMDLINE_OBJ)
+SERVERGETINFO_OBJ = server/server_getinfo.o $(CMDLINE_OBJ)
 SHAREADD_OBJ = share/share_add.o $(CMDLINE_OBJ)
 SHAREDEL_OBJ = share/share_del.o $(CMDLINE_OBJ)
 SHAREENUM_OBJ = share/share_enum.o $(CMDLINE_OBJ)
@@ -250,6 +252,10 @@ bin/remote_tod at EXEEXT@: $(BINARY_PREREQS) $(REMOTETOD_OBJ)
 	@echo Linking $@
 	@$(CC) $(FLAGS) -o $@ $(REMOTETOD_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
 
+bin/server_getinfo at EXEEXT@: $(BINARY_PREREQS) $(SERVERGETINFO_OBJ)
+	@echo Linking $@
+	@$(CC) $(FLAGS) -o $@ $(SERVERGETINFO_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
+
 bin/share_add at EXEEXT@: $(BINARY_PREREQS) $(SHAREADD_OBJ)
 	@echo Linking $@
 	@$(CC) $(FLAGS) -o $@ $(SHAREADD_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
diff --git a/source/lib/netapi/examples/user/user_modalsget.c b/source/lib/netapi/examples/server/server_getinfo.c
similarity index 51%
copy from source/lib/netapi/examples/user/user_modalsget.c
copy to source/lib/netapi/examples/server/server_getinfo.c
index 4dcb41b..afd2edd 100644
--- a/source/lib/netapi/examples/user/user_modalsget.c
+++ b/source/lib/netapi/examples/server/server_getinfo.c
@@ -1,6 +1,6 @@
 /*
  *  Unix SMB/CIFS implementation.
- *  NetUserModalsGet query
+ *  NetServerGetInfo query
  *  Copyright (C) Guenther Deschner 2008
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -33,13 +33,12 @@ int main(int argc, const char **argv)
 	struct libnetapi_ctx *ctx = NULL;
 	const char *hostname = NULL;
 	uint8_t *buffer = NULL;
-	uint32_t level = 0;
-	char *sid_str = NULL;
+	uint32_t level = 100;
 
-	struct USER_MODALS_INFO_0 *u0;
-	struct USER_MODALS_INFO_1 *u1;
-	struct USER_MODALS_INFO_2 *u2;
-	struct USER_MODALS_INFO_3 *u3;
+	struct SERVER_INFO_100 *i100;
+	struct SERVER_INFO_101 *i101;
+	struct SERVER_INFO_102 *i102;
+	struct SERVER_INFO_1005 *i1005;
 
 	poptContext pc;
 	int opt;
@@ -55,7 +54,7 @@ int main(int argc, const char **argv)
 		return status;
 	}
 
-	pc = poptGetContext("user_modalsget", argc, argv, long_options, 0);
+	pc = poptGetContext("server_getinfo", argc, argv, long_options, 0);
 
 	poptSetOtherOptionHelp(pc, "hostname level");
 	while((opt = poptGetNextOpt(pc)) != -1) {
@@ -71,53 +70,51 @@ int main(int argc, const char **argv)
 		level = atoi(poptGetArg(pc));
 	}
 
-	/* NetUserModalsGet */
+	/* NetServerGetInfo */
 
-	status = NetUserModalsGet(hostname,
+	status = NetServerGetInfo(hostname,
 				  level,
 				  &buffer);
 	if (status != 0) {
-		printf("NetUserModalsGet failed with: %s\n",
+		printf("NetServerGetInfo failed with: %s\n",
 			libnetapi_get_error_string(ctx, status));
 		goto out;
 	}
 
 	switch (level) {
-		case 0:
-			u0 = (struct USER_MODALS_INFO_0 *)buffer;
-			printf("min passwd len: %d character\n",
-				u0->usrmod0_min_passwd_len);
-			printf("max passwd age: %d (days)\n",
-				u0->usrmod0_max_passwd_age/86400);
-			printf("min passwd age: %d (days)\n",
-				u0->usrmod0_min_passwd_age/86400);
-			printf("force logoff: %d (seconds)\n",
-				u0->usrmod0_force_logoff);
-			printf("password history length: %d entries\n",
-				u0->usrmod0_password_hist_len);
+		case 100:
+			i100 = (struct SERVER_INFO_100 *)buffer;
+			printf("platform id: %d\n", i100->sv100_platform_id);
+			printf("name: %s\n", i100->sv100_name);
 			break;
-		case 1:
-			u1 = (struct USER_MODALS_INFO_1 *)buffer;
-			printf("role: %d\n", u1->usrmod1_role);
-			printf("primary: %s\n", u1->usrmod1_primary);
+		case 101:
+			i101 = (struct SERVER_INFO_101 *)buffer;
+			printf("platform id: %d\n", i101->sv101_platform_id);
+			printf("name: %s\n", i101->sv101_name);
+			printf("version major: %d\n", i101->sv101_version_major);
+			printf("version minor: %d\n", i101->sv101_version_minor);
+			printf("type: 0x%08x\n", i101->sv101_type);
+			printf("comment: %s\n", i101->sv101_comment);
 			break;
-		case 2:
-			u2 = (struct USER_MODALS_INFO_2 *)buffer;
-			printf("domain name: %s\n", u2->usrmod2_domain_name);
-			if (ConvertSidToStringSid(u2->usrmod2_domain_id,
-						  &sid_str)) {
-				printf("domain sid: %s\n", sid_str);
-				free(sid_str);
-			}
+		case 102:
+			i102 = (struct SERVER_INFO_102 *)buffer;
+			printf("platform id: %d\n", i102->sv102_platform_id);
+			printf("name: %s\n", i102->sv102_name);
+			printf("version major: %d\n", i102->sv102_version_major);
+			printf("version minor: %d\n", i102->sv102_version_minor);
+			printf("type: 0x%08x\n", i102->sv102_type);
+			printf("comment: %s\n", i102->sv102_comment);
+			printf("users: %d\n", i102->sv102_users);
+			printf("disc: %d\n", i102->sv102_disc);
+			printf("hidden: %d\n", i102->sv102_hidden);
+			printf("announce: %d\n", i102->sv102_announce);
+			printf("anndelta: %d\n", i102->sv102_anndelta);
+			printf("licenses: %d\n", i102->sv102_licenses);
+			printf("userpath: %s\n", i102->sv102_userpath);
 			break;
-		case 3:
-			u3 = (struct USER_MODALS_INFO_3 *)buffer;
-			printf("lockout duration: %d (seconds)\n",
-				u3->usrmod3_lockout_duration);
-			printf("lockout observation window: %d (seconds)\n",
-				u3->usrmod3_lockout_observation_window);
-			printf("lockout threshold: %d entries\n",
-				u3->usrmod3_lockout_threshold);
+		case 1005:
+			i1005 = (struct SERVER_INFO_1005 *)buffer;
+			printf("comment: %s\n", i1005->sv1005_comment);
 			break;
 		default:
 			break;
diff --git a/source/lib/netapi/netapi.h b/source/lib/netapi/netapi.h
index 817d402..80c44f0 100644
--- a/source/lib/netapi/netapi.h
+++ b/source/lib/netapi/netapi.h
@@ -97,6 +97,37 @@ struct DOMAIN_CONTROLLER_INFO {
 
 #define TIMEQ_FOREVER  ( (uint32_t)-1L )
 
+struct SERVER_INFO_100 {
+	uint32_t sv100_platform_id;
+	const char * sv100_name;
+};
+
+struct SERVER_INFO_101 {
+	uint32_t sv101_platform_id;
+	const char * sv101_name;
+	uint32_t sv101_version_major;
+	uint32_t sv101_version_minor;
+	uint32_t sv101_type;
+	const char * sv101_comment;
+};
+
+struct SERVER_INFO_102 {
+	uint32_t sv102_platform_id;
+	const char * sv102_name;
+	uint32_t sv102_version_major;
+	uint32_t sv102_version_minor;
+	uint32_t sv102_type;
+	const char * sv102_comment;
+	uint32_t sv102_users;
+	uint32_t sv102_disc;
+	uint8_t sv102_hidden;
+	uint32_t sv102_announce;
+	uint32_t sv102_anndelta;
+	uint32_t sv102_licenses;
+	const char * sv102_userpath;
+};
+
+
 struct SERVER_INFO_1005 {
 	const char * sv1005_comment;
 };
diff --git a/source/lib/netapi/serverinfo.c b/source/lib/netapi/serverinfo.c
index 5f744be..b2a134b 100644
--- a/source/lib/netapi/serverinfo.c
+++ b/source/lib/netapi/serverinfo.c
@@ -28,6 +28,29 @@
 /****************************************************************
 ****************************************************************/
 
+static WERROR NetServerGetInfo_l_101(struct libnetapi_ctx *ctx,
+				     uint8_t **buffer)
+{
+	struct SERVER_INFO_101 i;
+
+	i.sv101_platform_id	= PLATFORM_ID_NT;
+	i.sv101_name		= global_myname();
+	i.sv101_version_major	= lp_major_announce_version();
+	i.sv101_version_minor	= lp_minor_announce_version();
+	i.sv101_type		= lp_default_server_announce();
+	i.sv101_comment		= lp_serverstring();
+
+	*buffer = (uint8_t *)talloc_memdup(ctx, &i, sizeof(i));
+	if (!*buffer) {
+		return WERR_NOMEM;
+	}
+
+	return WERR_OK;
+}
+
+/****************************************************************
+****************************************************************/
+
 static WERROR NetServerGetInfo_l_1005(struct libnetapi_ctx *ctx,
 				      uint8_t **buffer)
 {
@@ -49,6 +72,8 @@ WERROR NetServerGetInfo_l(struct libnetapi_ctx *ctx,
 			  struct NetServerGetInfo *r)
 {
 	switch (r->in.level) {
+		case 101:
+			return NetServerGetInfo_l_101(ctx, r->out.buffer);
 		case 1005:
 			return NetServerGetInfo_l_1005(ctx, r->out.buffer);
 		default:
@@ -61,6 +86,78 @@ WERROR NetServerGetInfo_l(struct libnetapi_ctx *ctx,
 /****************************************************************
 ****************************************************************/
 
+static NTSTATUS map_server_info_to_SERVER_INFO_buffer(TALLOC_CTX *mem_ctx,
+						      uint32_t level,
+						      union srvsvc_NetSrvInfo *i,
+						      uint8_t **buffer)
+{
+	struct SERVER_INFO_100 i100;
+	struct SERVER_INFO_101 i101;
+	struct SERVER_INFO_102 i102;
+	struct SERVER_INFO_1005 i1005;
+
+	uint32_t num_info = 0;
+
+	switch (level) {
+		case 100:
+			i100.sv100_platform_id		= i->info100->platform_id;
+			i100.sv100_name			= talloc_strdup(mem_ctx, i->info100->server_name);
+
+			ADD_TO_ARRAY(mem_ctx, struct SERVER_INFO_100, i100,
+				     (struct SERVER_INFO_100 **)buffer,
+				     &num_info);
+			break;
+
+		case 101:
+			i101.sv101_platform_id		= i->info101->platform_id;
+			i101.sv101_name			= talloc_strdup(mem_ctx, i->info101->server_name);
+			i101.sv101_version_major	= i->info101->version_major;
+			i101.sv101_version_minor	= i->info101->version_minor;
+			i101.sv101_type			= i->info101->server_type;
+			i101.sv101_comment		= talloc_strdup(mem_ctx, i->info101->comment);
+
+			ADD_TO_ARRAY(mem_ctx, struct SERVER_INFO_101, i101,
+				     (struct SERVER_INFO_101 **)buffer,
+				     &num_info);
+			break;
+
+		case 102:
+			i102.sv102_platform_id		= i->info102->platform_id;
+			i102.sv102_name			= talloc_strdup(mem_ctx, i->info102->server_name);
+			i102.sv102_version_major	= i->info102->version_major;
+			i102.sv102_version_minor	= i->info102->version_minor;
+			i102.sv102_type			= i->info102->server_type;
+			i102.sv102_comment		= talloc_strdup(mem_ctx, i->info102->comment);
+			i102.sv102_users		= i->info102->users;
+			i102.sv102_disc			= i->info102->disc;
+			i102.sv102_hidden		= i->info102->hidden;
+			i102.sv102_announce		= i->info102->announce;
+			i102.sv102_anndelta		= i->info102->anndelta;
+			i102.sv102_licenses		= i->info102->licenses;
+			i102.sv102_userpath		= talloc_strdup(mem_ctx, i->info102->userpath);
+
+			ADD_TO_ARRAY(mem_ctx, struct SERVER_INFO_102, i102,
+				     (struct SERVER_INFO_102 **)buffer,
+				     &num_info);
+			break;
+
+		case 1005:
+			i1005.sv1005_comment		= talloc_strdup(mem_ctx, i->info1005->comment);
+
+			ADD_TO_ARRAY(mem_ctx, struct SERVER_INFO_1005, i1005,
+				     (struct SERVER_INFO_1005 **)buffer,
+				     &num_info);
+			break;
+		default:
+			return NT_STATUS_NOT_SUPPORTED;
+	}
+
+	return NT_STATUS_OK;
+}
+
+/****************************************************************
+****************************************************************/
+
 WERROR NetServerGetInfo_r(struct libnetapi_ctx *ctx,
 			  struct NetServerGetInfo *r)
 {
@@ -70,6 +167,20 @@ WERROR NetServerGetInfo_r(struct libnetapi_ctx *ctx,
 	WERROR werr;
 	union srvsvc_NetSrvInfo info;
 
+	if (!r->out.buffer) {
+		return WERR_INVALID_PARAM;
+	}
+
+	switch (r->in.level) {
+		case 100:
+		case 101:
+		case 102:
+		case 1005:
+			break;
+		default:
+			return WERR_UNKNOWN_LEVEL;
+	}
+
 	werr = libnetapi_open_pipe(ctx, r->in.server_name,
 				   &ndr_table_srvsvc.syntax_id,
 				   &cli,
@@ -88,9 +199,10 @@ WERROR NetServerGetInfo_r(struct libnetapi_ctx *ctx,
 		goto done;
 	}
 
-	*r->out.buffer = (uint8_t *)talloc_memdup(ctx, &info, sizeof(info));
-	if (!*r->out.buffer) {
-		werr = WERR_NOMEM;
+	status = map_server_info_to_SERVER_INFO_buffer(ctx, r->in.level, &info,
+						       r->out.buffer);
+	if (!NT_STATUS_IS_OK(status)) {
+		werr = ntstatus_to_werror(status);
 		goto done;
 	}
 
diff --git a/source/librpc/gen_ndr/libnetapi.h b/source/librpc/gen_ndr/libnetapi.h
index 7a5f286..f11c837 100644
--- a/source/librpc/gen_ndr/libnetapi.h
+++ b/source/librpc/gen_ndr/libnetapi.h
@@ -58,6 +58,36 @@ struct domsid {
 #define NETSETUP_INSTALL_INVOCATION ( 0x00040000 )
 #define NETSETUP_IGNORE_UNSUPPORTED_FLAGS ( 0x10000000 )
 
+struct SERVER_INFO_100 {
+	uint32_t sv100_platform_id;
+	const char * sv100_name;
+};
+
+struct SERVER_INFO_101 {
+	uint32_t sv101_platform_id;
+	const char * sv101_name;
+	uint32_t sv101_version_major;
+	uint32_t sv101_version_minor;
+	uint32_t sv101_type;
+	const char * sv101_comment;
+};
+
+struct SERVER_INFO_102 {
+	uint32_t sv102_platform_id;
+	const char * sv102_name;
+	uint32_t sv102_version_major;
+	uint32_t sv102_version_minor;
+	uint32_t sv102_type;
+	const char * sv102_comment;
+	uint32_t sv102_users;
+	uint32_t sv102_disc;
+	uint8_t sv102_hidden;
+	uint32_t sv102_announce;
+	uint32_t sv102_anndelta;
+	uint32_t sv102_licenses;
+	const char * sv102_userpath;
+};
+
 struct SERVER_INFO_1005 {
 	const char * sv1005_comment;
 };
diff --git a/source/librpc/gen_ndr/ndr_libnetapi.c b/source/librpc/gen_ndr/ndr_libnetapi.c
index 106b9a4..90b5f9f 100644
--- a/source/librpc/gen_ndr/ndr_libnetapi.c
+++ b/source/librpc/gen_ndr/ndr_libnetapi.c
@@ -120,6 +120,150 @@ _PUBLIC_ void ndr_print_NetJoinFlags(struct ndr_print *ndr, const char *name, ui
 	ndr->depth--;
 }
 
+_PUBLIC_ enum ndr_err_code ndr_push_SERVER_INFO_100(struct ndr_push *ndr, int ndr_flags, const struct SERVER_INFO_100 *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 4));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv100_platform_id));
+		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->sv100_name));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ enum ndr_err_code ndr_pull_SERVER_INFO_100(struct ndr_pull *ndr, int ndr_flags, struct SERVER_INFO_100 *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_align(ndr, 4));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv100_platform_id));
+		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->sv100_name));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_SERVER_INFO_100(struct ndr_print *ndr, const char *name, const struct SERVER_INFO_100 *r)
+{
+	ndr_print_struct(ndr, name, "SERVER_INFO_100");
+	ndr->depth++;
+	ndr_print_uint32(ndr, "sv100_platform_id", r->sv100_platform_id);
+	ndr_print_string(ndr, "sv100_name", r->sv100_name);
+	ndr->depth--;
+}
+
+_PUBLIC_ enum ndr_err_code ndr_push_SERVER_INFO_101(struct ndr_push *ndr, int ndr_flags, const struct SERVER_INFO_101 *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 4));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv101_platform_id));
+		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->sv101_name));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv101_version_major));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv101_version_minor));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv101_type));
+		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->sv101_comment));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ enum ndr_err_code ndr_pull_SERVER_INFO_101(struct ndr_pull *ndr, int ndr_flags, struct SERVER_INFO_101 *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_align(ndr, 4));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv101_platform_id));
+		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->sv101_name));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv101_version_major));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv101_version_minor));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv101_type));
+		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->sv101_comment));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_SERVER_INFO_101(struct ndr_print *ndr, const char *name, const struct SERVER_INFO_101 *r)
+{
+	ndr_print_struct(ndr, name, "SERVER_INFO_101");
+	ndr->depth++;
+	ndr_print_uint32(ndr, "sv101_platform_id", r->sv101_platform_id);
+	ndr_print_string(ndr, "sv101_name", r->sv101_name);
+	ndr_print_uint32(ndr, "sv101_version_major", r->sv101_version_major);
+	ndr_print_uint32(ndr, "sv101_version_minor", r->sv101_version_minor);
+	ndr_print_uint32(ndr, "sv101_type", r->sv101_type);
+	ndr_print_string(ndr, "sv101_comment", r->sv101_comment);
+	ndr->depth--;
+}
+
+_PUBLIC_ enum ndr_err_code ndr_push_SERVER_INFO_102(struct ndr_push *ndr, int ndr_flags, const struct SERVER_INFO_102 *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 4));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv102_platform_id));
+		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->sv102_name));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv102_version_major));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv102_version_minor));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv102_type));
+		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->sv102_comment));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv102_users));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv102_disc));
+		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->sv102_hidden));


-- 
Samba Shared Repository


More information about the samba-cvs mailing list