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 <[EMAIL PROTECTED]>
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 <[EMAIL PROTECTED]>
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 <[EMAIL PROTECTED]>
Date:   Mon Sep 1 17:45:42 2008 +0200

    netapi: add NetServerGetInfo example code.
    
    Guenther

commit cff66738936f9f5cc4d2cd284cde2e1ac2972d33
Author: Günther Deschner <[EMAIL PROTECTED]>
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 <[EMAIL PROTECTED]>
Date:   Mon Sep 1 17:44:01 2008 +0200

    re-run make idl.
    
    Guenther

commit 7a46743909bfbfccf522eecf2ba117d5651439ef
Author: Günther Deschner <[EMAIL PROTECTED]>
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/[EMAIL PROTECTED]@ \
        bin/[EMAIL PROTECTED]@ \
        bin/[EMAIL PROTECTED]@ \
        bin/[EMAIL PROTECTED]@ \
+       bin/[EMAIL PROTECTED]@ \
        bin/[EMAIL PROTECTED]@ \
        bin/[EMAIL PROTECTED]@ \
        bin/[EMAIL PROTECTED]@
@@ -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/[EMAIL PROTECTED]@: $(BINARY_PREREQS) $(REMOTETOD_OBJ)
        @echo Linking $@
        @$(CC) $(FLAGS) -o $@ $(REMOTETOD_OBJ) $(LDFLAGS) $(DYNEXP) 
$(CMDLINE_LIBS)
 
+bin/[EMAIL PROTECTED]@: $(BINARY_PREREQS) $(SERVERGETINFO_OBJ)
+       @echo Linking $@
+       @$(CC) $(FLAGS) -o $@ $(SERVERGETINFO_OBJ) $(LDFLAGS) $(DYNEXP) 
$(CMDLINE_LIBS)
+
 bin/[EMAIL PROTECTED]@: $(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

Reply via email to